


JavaScriptModulspezifikation
Im Gegensatz zu einigen traditionelleren Programmiersprachen, JavaScript (ECMA-262-Version), ist die Modularisierung in jeder gro?en Anwendung üblich. unterstützt noch keine native Modularisierung.
Die Javascript-Community hat gro?e Anstrengungen unternommen, um den Effekt von ?Modulen“ in der vorhandenen Betriebsumgebung zu erzielen. Es gibt zwei Haupttypen beliebter JavaScript-Modulspezifikationen: CommonJS, AMD, UMD, CMD usw.
CommonJS
Die CommonJS-Spezifikation ist eine serverseitige Javascript-Modulspezifikation .
Das Modulsystem von Node.js wird unter Bezugnahme auf die CommonJS-Spezifikation implementiert. NPM folgt auch den von commonJS definierten Paketspezifikationen und bildet so ein vollst?ndiges ?kosystem.
Von CommonJS definierte Module sind unterteilt in: {Modulreferenz (erforderlich)} {Moduldefinition (Exporte)} {Modulidentifikation (Modul)}. require() wird zum Einführen externer Module verwendet. Das Exportobjekt wird zum Exportieren von Methoden oder Variablen des aktuellen Moduls verwendet. Der einzige Exportport repr?sentiert das Modul selbst.
CommonJS-Spezifikation wiki.commonjs.org/wiki...
function MathClass() { } MathClass.PI = 3.14; MathClass.E = 2.72; MathClass.prototype.add = function(a, b) { return a+b; }; module.exports = MathClass;
var MathClass = require('./mathCommonJS.js'); Page( { onLoad: function() { console.log( "PI: " +MathClass.PI ); var mathClass = new MathClass(); console.log( "3 + 4: " +mathClass.add(3, 4) ); } });
AMD
AMD ist ?Asynchronous Module Definition“ Die Abkürzung ?asynchrone Moduldefinition“ bedeutet ?asynchrone Moduldefinition“ und ist eine Front-End-Modulspezifikation.
RequireJS implementiert die AMD-Spezifikation.
Die AMD-Spezifikation definiert eine freie Variable oder eine globale Variablendefinitionsfunktion.
define( id?, dependencies?, factory );
id ist ein String-Typ, der die Modul-ID darstellt und ein optionaler Parameter ist. Wenn nicht vorhanden, sollte die Modul-ID standardm??ig die ID des angeforderten Skripts im Loader sein. Falls vorhanden, muss der Modulbezeichner ein Top-Level- oder ein absoluter Bezeichner sein.
Abh?ngigkeiten sind ein Array-Literal, von dem das aktuelle Modul abh?ngt und das durch das vom Modul definierte Modul identifiziert wird.
Factory ist eine Funktion oder ein Objekt, das instanziiert werden muss.
AMD-Spezifikation github.com/amdjs/amdj...
define('mathAMD', [], function( i ) { function MathClass() { } MathClass.PI = 3.14; MathClass.E = 2.72; MathClass.prototype.add = function( a, b ) { return a + b; }; return MathClass; });
define( [ "mathAMD" ], function( require, exports, MathClass ) { Page( { onLoad: function() { console.log( "PI: " + MathClass.PI ); var mathClass = new MathClass(); console.log( "3 + 4: " + mathClass.add( 3, 4 ) ); } }); });
UMD
CommonJS Das Modul wird nach dem Server-Side-First-Prinzip entwickelt und l?dt Module synchron. Für seine Module ist keine Verpackung erforderlich, es werden jedoch nur Module vom Typ Objekt (Objekts) unterstützt. AMD entwickelt nach dem Browser-First-Prinzip und l?dt Module asynchron. Sein Modul unterstützt verschiedene Arten von Modulen wie Objekte, Funktionen, Konstruktoren, Strings, JSON usw. und ist daher im Browser sehr flexibel. Dies zwingt die Leute dazu, ein anderes, allgemeineres Format zu entwickeln, UMD (Universal Module Definition), in der Hoffnung, eine Front-End- und plattformübergreifende L?sung bereitzustellen.
(function (root, factory) { if (typeof define === 'function' && define.amd) { define(['jquery'], factory); } else if (typeof exports === 'object') { module.exports = factory(require('jquery')); } else { root.returnExports = factory(root.jQuery); } }(this, function ($) { function myFunc(){}; return myFunc; }));
Die Implementierung von UMD ist sehr einfach. Stellen Sie zun?chst fest, ob AMD unterstützt wird (ob eine Definition vorhanden ist), und verwenden Sie, falls vorhanden, die AMD-Methode, um das Modul zu laden. Stellen Sie dann fest, ob das Node.js-Modulformat unterstützt wird (ob Exporte vorhanden sind), verwenden Sie das Node.js-Modulformat. Wenn die ersten beiden nicht vorhanden sind, wird das Modul der Welt (Fenster oder global) ausgesetzt.
( function( global, factory ) { if( typeof define === 'function' && define.amd ) { define( factory ); } else if( typeof exports === 'object' ) { module.exports = factory(); } else { root.returnExports = factory(); } } ( this, function() { function MathClass() { } MathClass.PI = 3.14; MathClass.E = 2.72; MathClass.prototype.add = function( a, b ) { return a + b; }; return MathClass; }) );
var MathClass = require( './mathUMD.js' ); Page( { onLoad: function() { console.log( "PI: " + MathClass.PI ); var mathClass = new MathClass(); console.log( "3 + 4: " + mathClass.add( 3, 4 ) ); } });
CMD
CMD 即Common Module Definition通用模塊定義,CMD規(guī)范是國(guó)內(nèi)發(fā)展出來(lái)的,就像AMD有個(gè)requireJS,CMD有個(gè)瀏覽器的實(shí)現(xiàn)SeaJS,SeaJS要解 決的問題和requireJS一樣,只不過在模塊定義方式和模塊加載(可以說運(yùn)行、解析)時(shí)機(jī)上有所不同。
Sea.js 推崇一個(gè)模塊一個(gè)文件,遵循統(tǒng)一的寫法
define(id?, deps?, factory)
因?yàn)镃MD推崇一個(gè)文件一個(gè)模塊,所以經(jīng)常就用文件名作為模塊id,CMD推崇依賴就近,所以一般不在define的參數(shù)中寫依賴,在factory中寫。
factory是一個(gè)函數(shù),有三個(gè)參數(shù),function(require, exports, module)
require 是一個(gè)方法,接受 模塊標(biāo)識(shí) 作為唯一參數(shù),用來(lái)獲取其他模塊提供的接口
exports 是一個(gè)對(duì)象,用來(lái)向外提供模塊接口
module 是一個(gè)對(duì)象,上面存儲(chǔ)了與當(dāng)前模塊相關(guān)聯(lián)的一些屬性和方法
CMD模塊規(guī)范 https://github.com/cmdjs/spec...
define( "pages/module/mathCMD.js", function( require, exports, module ) { function MathClass() { } MathClass.PI = 3.14; MathClass.E = 2.72; MathClass.prototype.add = function( a, b ) { return a + b; }; module.exports = MathClass; })
define( "pages/module/mathCMD.js", function( require, exports, module ) { function MathClass() { } MathClass.PI = 3.14; MathClass.E = 2.72; MathClass.prototype.add = function( a, b ) { return a + b; }; module.exports = MathClass; })
微信小程序模塊化機(jī)制
微信小程序秉承了JavaScript模塊化的機(jī)制,通過module.exports暴露對(duì)象,通過require來(lái)獲取對(duì)象。
模塊開發(fā)
以微信小程序QuickStart為例,微信小程序模塊采用CommonJS規(guī)范
utils/util.js
function formatTime(date) { var year = date.getFullYear() var month = date.getMonth() + 1 var day = date.getDate() var hour = date.getHours() var minute = date.getMinutes() var second = date.getSeconds(); return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':') } function formatNumber(n) { n = n.toString() return n[1] ? n : '0' + n } module.exports = { formatTime: formatTime }
pages/log/log.js
var util = require('../../utils/util.js') Page({ data: { logs: [] }, onLoad: function () { this.setData({ logs: (wx.getStorageSync('logs') || []).map(function (log) { return util.formatTime(new Date(log)) }) }) } })
模塊運(yùn)行
微信小程序還是要以前端程序方式在微信瀏覽器中運(yùn)行,由于CommonJS規(guī)范是服務(wù)器端模塊規(guī)范,微信小程序運(yùn)行時(shí)會(huì)自動(dòng)轉(zhuǎn)換為前端模塊規(guī)范。
以微信小程序QuickStart調(diào)試時(shí)代碼為例
utils/util.js
define("utils/util.js", function(require, module) { var window = { Math: Math }/*兼容babel*/ , location, document, navigator, self, localStorage, history, Caches; function formatTime(date) { var year = date.getFullYear() var month = date.getMonth() + 1 var day = date.getDate() var hour = date.getHours() var minute = date.getMinutes() var second = date.getSeconds(); return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':') } function formatNumber(n) { n = n.toString() return n[1] ? n : '0' + n } module.exports = { formatTime: formatTime } })
pages/log/log.js
define("pages/logs/logs.js", function(require, module) { var window = { Math: Math }/*兼容babel*/ , location, document, navigator, self, localStorage, history, Caches; var util = require('../../utils/util.js') Page({ data: { logs: [] }, onLoad: function() { this.setData({ logs: (wx.getStorageSync('logs') || []).map(function(log) { return util.formatTime(new Date(log)) }) }) } }) }); require("pages/logs/logs.js")
微信小程序運(yùn)行的代碼與CMD模塊規(guī)范基本符合。
使用第三方模塊
微信小程序運(yùn)行環(huán)境exports、module沒有定義,無(wú)法通過require導(dǎo)入模塊,需要對(duì)第三方模塊強(qiáng)制導(dǎo)出后才能正常導(dǎo)入。
微信小程序使用Immutable.js segmentfault.com/a/11...
微信小程序使用Underscore.js segmentfault.com/a/11...
ECMAScript 6模塊系統(tǒng)
ECMAScript 6,模塊被作為重要組成部分加入其中。
ES6的模塊提供了2個(gè)新的語(yǔ)法,分別是export和import。
export 模塊導(dǎo)出
export let a = 1; export class A {}; export let b = () => {};
import 模塊導(dǎo)入
import {a} from './a'; console.log(a); import * as obj from './a'; console.log(obj.a);
微信小程序還沒實(shí)現(xiàn)ECMAScript 6。
【相關(guān)推薦】
2.?分享微信公眾號(hào)開發(fā)刷卡支付的實(shí)例教程
4.?詳解微信小程序支付功能開發(fā)錯(cuò)誤總結(jié)
Das obige ist der detaillierte Inhalt vonDetaillierte Beispiele der Modularisierung in der WeChat-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So optimieren Sie die Wartbarkeit von Java-Code: Erfahrungen und Ratschl?ge Im Softwareentwicklungsprozess ist das Schreiben von Code mit guter Wartbarkeit von entscheidender Bedeutung. Wartbarkeit bedeutet, dass Code leicht verstanden, ge?ndert und erweitert werden kann, ohne dass es zu unerwarteten Problemen oder zus?tzlichem Aufwand kommt. Für Java-Entwickler ist die Optimierung der Wartbarkeit von Code ein wichtiges Thema. In diesem Artikel werden einige Erfahrungen und Vorschl?ge geteilt, um Java-Entwicklern dabei zu helfen, die Wartbarkeit ihres Codes zu verbessern. Befolgen Sie standardisierte Benennungsregeln. Standardm??ige Benennungsregeln k?nnen die Lesbarkeit des Codes verbessern.

Python ist eine einfache, leicht zu erlernende und effiziente Programmiersprache. Wenn wir jedoch Python-Code schreiben, k?nnen Probleme mit überm??iger Codekomplexit?t auftreten. Wenn diese Probleme nicht gel?st werden, wird es schwierig, den Code zu warten, fehleranf?llig zu machen und die Lesbarkeit und Skalierbarkeit des Codes zu verringern. In diesem Artikel besprechen wir daher, wie man Codekomplexit?tsfehler in Python-Code beheben kann. Verst?ndnis der Codekomplexit?t Die Codekomplexit?t ist ein Ma? für die Art des Codes, der schwer zu verstehen und zu warten ist. In Python gibt es einige Indikatoren, die verwendet werden k?nnen

Python wird als h?here Programmiersprache h?ufig in der Softwareentwicklung verwendet. Obwohl Python viele Vorteile bietet, besteht ein Problem, mit dem viele Python-Programmierer h?ufig konfrontiert sind, darin, dass der Code weniger wartbar ist. Die Wartbarkeit von Python-Code umfasst die Lesbarkeit, Skalierbarkeit und Wiederverwendbarkeit des Codes. In diesem Artikel konzentrieren wir uns darauf, wie das Problem der schlechten Wartbarkeit von Python-Code gel?st werden kann. 1. Lesbarkeit des Codes Die Lesbarkeit des Codes bezieht sich auf die Lesbarkeit des Codes, die den Kern der Wartbarkeit des Codes darstellt.

In der modernen Webentwicklung wird Vue als flexibles, benutzerfreundliches und leistungsstarkes Frontend-Framework h?ufig bei der Entwicklung verschiedener Websites und Anwendungen eingesetzt. Bei der Entwicklung gro?er Projekte ist die Vereinfachung der Codekomplexit?t und die einfachere Wartung des Projekts ein Problem, mit dem sich jeder Entwickler auseinandersetzen muss. Die modulare Entwicklung kann uns helfen, Code besser zu organisieren, die Entwicklungseffizienz und die Lesbarkeit des Codes zu verbessern. Im Folgenden werde ich einige Erfahrungen und Richtlinien für die Implementierung der modularen Entwicklung in Vue-Gro?projekten teilen: 1. Klare Arbeitsteilung in einem Gro?projekt

PHP ist eine Open-Source-Skriptsprache, die in der Webentwicklung und serverseitigen Programmierung, insbesondere in der WeChat-Entwicklung, weit verbreitet ist. Heutzutage beginnen immer mehr Unternehmen und Entwickler, PHP für die WeChat-Entwicklung zu verwenden, da es sich zu einer wirklich leicht zu erlernenden und benutzerfreundlichen Entwicklungssprache entwickelt hat. Bei der WeChat-Entwicklung sind die Nachrichtenverschlüsselung und -entschlüsselung ein sehr wichtiges Thema, da sie die Datensicherheit betreffen. Bei Nachrichten ohne Verschlüsselungs- und Entschlüsselungsmethoden k?nnen Hacker leicht an die Daten gelangen, was eine Bedrohung für Benutzer darstellt.

Als High-Level-Programmiersprache wird Python h?ufig in der Datenanalyse, beim maschinellen Lernen, in der Webentwicklung und in anderen Bereichen eingesetzt. Da jedoch die Gr??e des Codes immer gr??er wird, wird das Skalierbarkeitsproblem von Python-Programmen allm?hlich deutlich. Ein Fehler bei schlechter Skalierbarkeit bedeutet, dass sich das Python-Programm unter bestimmten Umst?nden nicht gut an ge?nderte Anforderungen anpassen und gro?e Datenmengen nicht verarbeiten kann, was zu einer schlechten Programmleistung führt. Zu viele Abh?ngigkeiten, schlechte Codestruktur, fehlende Dokumentation usw. sind allesamt die Ursachen für Fehler aufgrund schlechter Skalierbarkeit in Python-Programmen.

Laut Nachrichten dieser Website vom 14. August brachte Chaoen Vecow am 22. Juli, Pekinger Zeit, den industriellen Mini-Host der TGS-1000-Serie auf den Markt, der mit dem Intel Core Ultra-Prozessor der ersten Generation ausgestattet ist. Das Besondere an dieser Produktserie ist, dass sie vertikales Stapeln unterstützt, um zus?tzliche I/O-Ports zu erweitern. Die TGS-1000-Serie ist in zwei Modelle unterteilt: TGS-1000 und TGS-1500. Der Unterschied besteht darin, dass die Unterseite des TGS-1500 ein Modul enth?lt, das MXM-Grafikkarten oder bis zu einer RTX5000Ada-Mobilversion unterstützt von professionellen NVIDIA-Karten. ▲Mini-Hosts der TGS-1500TGS-1000-Serie sind mit Intel Core Ultra7165H- oder Ultra5135H-Prozessoren erh?ltlich, ausgestattet mit Dual-D

In Vue besteht die Modularisierung darin, eine einzelne Funktion in einem Modul (einer Datei) zu kapseln. Die Module sind voneinander isoliert, interne Mitglieder k?nnen jedoch über bestimmte Schnittstellen verfügbar gemacht werden und k?nnen sich auch auf andere Module verlassen (um die Wiederverwendung von Code zu erleichtern). Verbessern Sie die Entwicklungseffizienz und erleichtern Sie die sp?tere Wartung. Die Vorteile der modularen Entwicklung: 1. Klare Organisation und einfache Wartung. 2. Alle Daten werden nicht auf einmal angefordert. Die Benutzererfahrung ist gut. 3. Module sind voneinander isoliert, aber interne Mitglieder k?nnen durch spezifische Informationen verfügbar gemacht werden Schnittstellen oder H?ngt von anderen Modulen ab.
