JS模組化的實作方法有哪些? js模組化的講解
本篇文章帶給大家的內容是關於JS模組化的實作方法有哪些? js模組化的講解,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
1、CommonJS
產生背景:一開始大家都認為JS是辣雞,沒什麼用,官方定義的API只能建立基於瀏覽器的應用程序,CommonJS就按耐不住了,CommonJS
API定義許多普通應用程式(主要指非瀏覽器的應用程式)所使用的API,從而填補了這個空白。它的終極目標是提供一個類似Python,Ruby和Java標準函式庫。這樣的話,開發者可以使用CommonJS
API編寫應用程序,然後 這些應用程式可以運行在不同的JavaScript解釋器和不同的主機環境中。 2009年,美國程式設計師Ryan
Dahl創造了node.js項目,將javascript語言用於伺服器端程式設計。這標誌"Javascript模組化程式設計"正式誕生。因為老實說,在瀏覽器環境下,沒有模組也不是特別大的問題,畢竟網頁程式的複雜性有限;但是在伺服器端,一定要有模組,與作業系統和其他應用程式互動,否則根本沒法程式設計.
具體代表:nodeJs、webpack
原則:瀏覽器不相容CommonJS的根本原因,在於缺少四個Node.js環境的變數(module,exports,require,global,只要能提供這 四個變量,瀏覽器可載入CommonJS 模組。
簡單實作:
## var module = {
exports: {}
};
(function(module, exports) {
exports.multiply = function (n) {
return n * 1000
};
}(module, module.exports))
var f = module.exports.multiply;
f(5) // 5000
上面程式碼向一個立即執行函數提供module 和exports 兩個外部變量,模組就放在這個立即執行函數裡面。模組的輸出值放在module.exports 之中,這樣就實現了模組的載入。
2、AMD
產生背景:
基於commonJS規範的nodeJS出來以後,服務端的模組概念已經形成,但是,由於一個重大的局限,使得CommonJS
規格不適用於瀏覽器環境。 var math = require('math'); math.add(2,
3);require 是同步的.這對伺服器端不是一個問題,因為所有的模組都存放在本地硬碟,可以同步載入完成,等待時間就是硬碟的讀取時間。但是,對於瀏覽器,這卻是一個大問題,因為模組都放在伺服器端,等待時間取決於網速的快慢,可能要等很長時間,瀏覽器處於"假死"狀態。瀏覽器端的模組,不能採用"同步載入"(synchronous),只能採用"非同步載入"(asynchronous)。這就是AMD規範誕生的背景。
具體代表
:RequireJS
用法範例:require([dependencies], function(){}); require()函數接受兩個參數
第一個參數是一個數組,表示所依賴的模組###第二個參數是一個回調函數,當前面指定的模組都載入成功後,它將被調用。載入的模組會以參數形式傳入函數,從而在回呼函數內部就可以使用這些模組######// 定义模块 myModule.js define(['dependency'], function(){ var name = 'Byron'; function printName(){ console.log(name); } return { printName: printName }; }); // 加载模块 require(['myModule'], function (my){ my.printName(); });
// 定义模块 myModule.js define(function(require, exports, module) { var $ = require('jquery.js') $('p').addClass('active');}); // 加载模块 seajs.use(['myModule.js'], function(my){ });
產生背景:Es6*之前*JavaScript一直沒有模組(module)體系,無法將一個大程式拆分成互相依賴的小文件,再用簡單的方法拼裝起來,這對開發大型的、複雜的專案形成了巨大障礙。為了解決模組依賴載入問題,出現了AMD,CMD,COMMONJS ,其中AMD,CMD(兩者之間也存在差異,後期會說)用於客戶端,COMMONJS用於服務端,es6出現後,定義了Module功能,而且實作得相當簡單,完全可以取代現有的CommonJS和AMD規範,成為瀏覽器和伺服器通用的模組解決方案。
用法範例: export(拋出) import(引入) export default(其他模組載入該模組時,import指令可以為該匿名函數指定任何名字)
# 相關推薦:
#javascript模組化程式設計(轉載),javascript模組化_PHP教學
#以上是JS模組化的實作方法有哪些? js模組化的講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

基於無阻塞、事件驅動建立的Node服務,具有記憶體消耗低的優點,非常適合處理海量的網路請求。在海量請求的前提下,就需要考慮「記憶體控制」的相關問題了。 1. V8的垃圾回收機制與記憶體限制 Js由垃圾回收機

文件模組是對底層文件操作的封裝,例如文件讀寫/打開關閉/刪除添加等等文件模組最大的特點就是所有的方法都提供的**同步**和**異步**兩個版本,具有sync 字尾的方法都是同步方法,沒有的都是異

在當今前端開發中,Vue.js 已經成為了一個非常流行的框架。隨著 Vue.js 的不斷發展,單元測試變得越來越重要。今天,我們將探討如何在 Vue.js 3 中編寫單元測試,並提供一些最佳實踐和常見的問題及解決方案。

PHP與Vue:完美搭檔的前端開發利器在當今網路快速發展的時代,前端開發變得愈發重要。隨著使用者對網站和應用的體驗要求越來越高,前端開發人員需要使用更有效率和靈活的工具來創建響應式和互動式的介面。 PHP和Vue.js作為前端開發領域的兩個重要技術,搭配起來可以稱得上是完美的利器。本文將探討PHP和Vue的結合,以及詳細的程式碼範例,幫助讀者更好地理解和應用這兩

跨域是開發中常會遇到的場景,也是面試中常會討論的問題。掌握常見的跨域解決方案及其背後的原理,不僅可以提高我們的開發效率,還能在面試中表現的更加

隨著網路技術的發展,前端開發變得日益重要。尤其是行動端設備的普及,更需要高效率、穩定、安全又易於維護的前端開發技術。而作為一門快速發展的程式語言,Go語言已經被越來越多的開發者所使用。那麼,使用Go語言進行前端開發行得通嗎?接下來,本文將為你詳細說明如何使用Go語言進行前端開發。先來看看為什麼要使用Go語言進行前端開發。很多人認為Go語言是一門

在前端開發面試中,常見問題涵蓋廣泛,包括HTML/CSS基礎、JavaScript基礎、框架和函式庫、專案經驗、演算法和資料結構、效能最佳化、跨域請求、前端工程化、設計模式以及新技術和趨勢。面試官的問題旨在評估候選人的技術技能、專案經驗以及對行業趨勢的理解。因此,應試者應充分準備這些方面,以展現自己的能力和專業知識。

一開始的時候 JS 只在瀏覽器端運行,對於 Unicode 編碼的字串容易處理,但對於二進位和非 Unicode 編碼的字串處理困難。並且二進制是電腦最底層的資料格式,視訊/音訊/程式/網路包
