<script>
</script> $(function(){...});
>您自己的應用程序代碼通常在像全球應用程序之下命名,以防止污染全局範圍。沒有這個
<span>var App = {}; </span><span>App.<span>Models</span> = {}; </span><span>App.<span>Models</span>.<span>Note</span> = function() {}; </span>未來
我們將模塊導入本地範圍並使用它。
<span>export default function $() { ... } </span>>
<span>import $ from 'jquery'; </span> <span>$(function() { ... }); </span>無需全球嗎?
commonjs
> amdjspm
打字稿
>這些是當前正在使用的流行工具的縮短列表 - 這是針對初學者和專家的雷區。 移動的成本還突出了您可以混合和匹配許多此類工具並獲得不同結果的成本。
Gulp和Grunt一直很受歡迎,這些工具使您能夠編寫一系列轉換以使您的資產通過。 儘管很多人選擇直接通過NPM使用這些工具,但它們已經習慣了,但仍然很受歡迎 - 請參閱為什麼我將gulp and Grunt用於NPM腳本,並指南將NPM用作構建工具。
>>就我個人而言,我不再關心建造資產管道,我要尋找的是最小的配置工具,它允許我根據需要使用現代工具:諸如Sass,Autoprefixer,Babel和Coffeescript之類的東西,適當的模塊系統和加載程序不必擔心實施,配置和持續的維護。 從本質上講,每個開發人員在過去幾年中一直在投入時間來創建資產管道,這是大量的重新發明,並且有很多浪費的時間。
>>社區分為諸如瀏覽,WebPack,JSPM,鏈輪和Gulp之類的工具。 這不是一個真正的問題,這只是讓每個試圖了解一條明確前進道路的人都感到困惑。
清除起點>
ES2015模塊是JavaScript的一種真實的未來模塊格式。>我們還需要一台服務器來運行代碼 - 例如,Live-Server是具有實時重新加載功能的很棒的Little Zero-Config HTTP服務器。使用NPM install -G實時服務器全球安裝它,然後從項目root到“啟動”實時服務器。
<span>var App = {}; </span><span>App.<span>Models</span> = {}; </span><span>App.<span>Models</span>.<span>Note</span> = function() {}; </span>
瀏覽器讓您在瀏覽器中需要('模塊'),通過捆綁所有依賴項。
><span>export default function $() { ... } </span>打開src/lib.js並添加我們的第一個模塊。
>
>更新package.json
中的腳本部分>使用NPM運行瀏覽
<span>import $ from 'jquery'; </span> <span>$(function() { ... }); </span>運行此腳本
> browserify的介紹
恭喜!我們現在在瀏覽器中有模塊! ?<span>mkdir modules-app </span><span>cd modules-app </span><span>npm init -y </span><span>npm install --save-dev browserify webpack jspm </span><span>mkdir src </span><span>touch src/{entry,lib}.js index.html </span>
>瀏覽的另一個關鍵好處是,它不僅可以使您訪問您的作者模塊,還可以訪問NPM模塊,讓我們安裝Lodash以查看。
<span><span><!DOCTYPE html></span> </span><span><span><span><html</span> lang<span>="en"</span>></span> </span><span><span><span><head</span>></span> </span> <span><span><span><meta</span> charset<span>="utf-8"</span>></span> </span> <span><span><span><title</span>></span>Modules!<span><span></title</span>></span> </span><span><span><span></head</span>></span> </span><span><span><span><body</span>></span> </span> <span><span><span><script</span> src<span>="bundle.js"</span>></span><span><span></script</span>></span> </span><span><span><span></body</span>></span> </span><span><span><span></html</span>></span> </span>>編輯src/lib.js
>編輯src/entry.js並調用我們的新Addfive
<span>var App = {}; </span><span>App.<span>Models</span> = {}; </span><span>App.<span>Models</span>.<span>Note</span> = function() {}; </span>
>使用NPM運行瀏覽器再次創建捆綁包,在瀏覽器中,您應該看到一個4和一個7,這表明我們已經成功導入並使用了lodash的總和函數。
如果您遵循這一範圍,您現在知道您今天開始使用瀏覽器中使用模塊所需的一切,這帶來了我們一開始就概述的許多好處。>
>
> webpack>使用NPM運行webpack
運行它
> WebPack比這要多得多! 它確實是模塊捆綁機的瑞士軍刀。 WebPack還提供了開箱即用的出色工具,例如熱模塊替換,它將在更改時自動重新加載瀏覽器中的單個模塊 - 類似於LiverEload,但沒有頁面刷新。
>。
的語言中使用另一種。
在查看如何將它們與模塊捆綁器一起使用之前,讓我們看看如何直接使用工具。
> coffeescript >編輯咖啡lib.coffee
>添加一個腳本。
運行它
>將腳本添加到package.json以運行TSC可執行 >使用NPM運行TSC >編譯器將抱怨無法找到Lodash,因為它需要類型定義才能知道如何使用不是打字稿文件的外部模塊。 您可以使用以下方式獲取定義文件: 編輯ES6-lib.js 注意:Babel了解可愛的新ES2015模塊語法。
>的預設
> /dist中的文件現在包含COMPONJS模塊格式的ES5代碼,該格式將與我們之前使用的那樣,將與瀏覽或WebPack完美配合。 您可以先用concomjs將ES5轉移到ES5,然後再捆綁,也可以使用其他軟件包在一個步驟中進行。 >瀏覽中有插件咖啡,tssify和babelify to thranspile and Bundle。 > WebPack有裝載機咖啡加載程序,TS-Loader和Babel-Loader需要不同語言的模塊。 jspm
接受所有默認值並確保將Babel用作轉板器,該默認值將配置System.js在運行到ES6樣式模塊時使用Babel。
>
我們的entry.js文件正在動態加載system.import('src/entry.js');。 system.js加載lib.js,發現它需要lodash/sum並獲取它。
>最終取消註釋index.html中的bundle.js的腳本標籤,瀏覽器應加載一個可以生產的捆綁包,而無需任何額外的http請求。
>
> WebPack比我在這裡介紹的要多得多,但是這些簡單的設置是一個很棒的起點。
>因此,我們結束了對模塊的探索,它們確實解決了很多問題,並且可以真正降低應用程序的複雜性 - 如果工具不會阻礙我們的方式。 如果您還沒有使用模塊,那麼現在是時候了。無需花費不必要的時間來構建資產管道,而是使用只有工作™的簡單工具。
> >捆綁和縮合之間有什麼區別? > JavaScript模塊,捆綁和移動的未來是什麼?模塊,捆綁和移動看起來很有希望。隨著JavaScript的持續演變,我們可以期望更多的高級功能和語法,這將需要轉移以與較舊的瀏覽器兼容。出於績效原因,捆綁將繼續很重要。至於模塊,它們正在成為JavaScript的標準部分,我們可以期望在瀏覽器中為它們提供更好的支持。<span>export default function $() { ... }
</span>
注意:CoffeeScript使用模塊的commonjs語法<span>import $ from 'jquery';
</span>
<span>$(function() { ... });
</span>
編輯ts-lib.ts
<span>mkdir modules-app
</span><span>cd modules-app
</span><span>npm init -y
</span><span>npm install --save-dev browserify webpack jspm
</span><span>mkdir src
</span><span>touch src/{entry,lib}.js index.html
</span>
<span>var App = {};
</span><span>App.<span>Models</span> = {};
</span><span>App.<span>Models</span>.<span>Note</span> = function() {};
</span>
<span>export default function $() { ... }
</span>
babel
<span>import $ from 'jquery';
</span>
<span>$(function() { ... });
</span>
<span>mkdir modules-app
</span><span>cd modules-app
</span><span>npm init -y
</span><span>npm install --save-dev browserify webpack jspm
</span><span>mkdir src
</span><span>touch src/{entry,lib}.js index.html
</span>
>添加一個腳本。
<span><span><!DOCTYPE html></span>
</span><span><span><span><html</span> lang<span>="en"</span>></span>
</span><span><span><span><head</span>></span>
</span> <span><span><span><meta</span> charset<span>="utf-8"</span>></span>
</span> <span><span><span><title</span>></span>Modules!<span><span></title</span>></span>
</span><span><span><span></head</span>></span>
</span><span><span><span><body</span>></span>
</span> <span><span><span><script</span> src<span>="bundle.js"</span>></span><span><span></script</span>></span>
</span><span><span><span></body</span>></span>
</span><span><span><span></html</span>></span>
</span>
運行它
上的頂部
JSPM採用不同的方法,並從模塊加載程序系統開始。 System.js是一個項目,將遵循加載器規格開發的項目。
>安裝並初始化JSPM項目<span>var double = function(number) {
</span> <span>return number * 2;
</span><span>}
</span>
module<span>.exports = {
</span> <span>double: double
</span><span>}
</span>
>運行JSPM安裝lodash以在該目錄中安裝lodash,您應該在控制台,A 4和7中看到預期的輸出,這是發生的事情:<span>var lib = require('./lib.js');
</span><span>console.log(lib.double(2));
</span>
> system.js加載條目。
<span>var App = {};
</span><span>App.<span>Models</span> = {};
</span><span>App.<span>Models</span>.<span>Note</span> = function() {};
</span>
重新訪問webpack
>我們的WebPack示例是使用默認選項的最簡單示例,它將帶有commonjs模塊的entry.js彙編為一個捆綁包。 使用webpack做更多的花哨事件時,您需要為所有加載程序配置創建一個自定義配置文件。 <span>export default function $() { ... }
</span>
>“更新index.html”僅加載捆綁的文件。 <span>import $ from 'jquery';
</span>
<span>$(function() { ... });
</span>
進行轉換
<span>mkdir modules-app
</span><span>cd modules-app
</span><span>npm init -y
</span><span>npm install --save-dev browserify webpack jspm
</span><span>mkdir src
</span><span>touch src/{entry,lib}.js index.html
</span>
。
<span><span><!DOCTYPE html></span>
</span><span><span><span><html</span> lang<span>="en"</span>></span>
</span><span><span><span><head</span>></span>
</span> <span><span><span><meta</span> charset<span>="utf-8"</span>></span>
</span> <span><span><span><title</span>></span>Modules!<span><span></title</span>></span>
</span><span><span><span></head</span>></span>
</span><span><span><span><body</span>></span>
</span> <span><span><span><script</span> src<span>="bundle.js"</span>></span><span><span></script</span>></span>
</span><span><span><span></body</span>></span>
</span><span><span><span></html</span>></span>
</span>
<span>var double = function(number) {
</span> <span>return number * 2;
</span><span>}
</span>
module<span>.exports = {
</span> <span>double: double
</span><span>}
</span>
>
>您不想在一個項目中使用上述所有工具,但重要的是要了解這三個流行的選項,以及在需要時如何使用換手器。 如果您只想使用模塊,則使用默認選項瀏覽,JSPM或WebPack將完成工作。
>保持工具簡單和配置燈。快樂捆綁。
經常詢問有關JavaScript模塊,捆綁和transphitling
的問題(常見問題解答)
> JavaScript模塊,捆綁和翻轉的區別是什麼?
JavaScript模塊是可以在其他腳本中導入和使用的各個代碼單位。它們有助於組織代碼,使其更可維護和重複使用。另一方面,捆綁是將多個JavaScript文件組合到單個文件中的過程。這樣做是為了減少HTTP請求的數量,這可以顯著提高Web應用程序的性能。轉移是將源代碼從一種語言或版本轉換為另一種語言的過程。在JavaScript的背景下,它通常是指將較新的JavaScript語法轉換為較舊的版本,以與較舊的瀏覽器兼容。 >
> JavaScript Transpiler的作用是什麼? Babel,在確保在不同瀏覽器中兼容JavaScript代碼方面起著至關重要的作用。它通過將較新的JavaScript語法轉換為大多數瀏覽器支持的舊版本來實現此目的。這允許開發人員使用JavaScript的最新功能而不必擔心瀏覽器兼容性問題。 > javaScript模塊如何工作? > javaScript模塊是一個獨立的代碼,它導出了特定變量或特定變量的代碼其他模塊可以使用的功能。導入模塊時,其導出變量或功能將用於導入腳本。這允許代碼重複使用和更好的代碼組織。 >一些流行的JavaScript捆綁工具是哪些? >一些流行的JavaScript捆綁工具包括WebPack,lollup和Parcel。這些工具不僅包裝JavaScript文件,還提供諸如代碼分配,懶惰加載以及處理其他資產(例如CSS和Images)等功能。 >
如何在編寫現代JavaScript?允許開發人員使用最新功能和語法編寫現代JavaScript,而不必擔心兼容性問題。轉板器將現代JavaScript轉換為與大多數瀏覽器兼容的版本。這樣可以確保JavaScript代碼始終在不同的瀏覽器上運行。 >我可以使用JavaScript模塊而不捆綁嗎?但是,由於多個HTTP請求,這可能會導致性能問題。另外,並非所有瀏覽器都支持JavaScript模塊,因此捆綁可以幫助確保兼容性。
>選擇捆綁工具的選擇取決於項目的要求。要考慮的因素包括項目的規模,所需的功能(例如代碼分配或處理其他資產)以及您的個人喜好。嘗試一些不同的工具是一個好主意,看看哪種工具最適合您的項目。
以上是理解JavaScript模塊:捆綁和移動的詳細內容。更多資訊請關注PHP中文網其他相關文章!