簡體   English   中英

Babel和Browserify / Webpack混淆

[英]Babel and Browserify / Webpack confusion

快速提問。 我對ES2015(ES6)有點困惑。

假設我使用Babel將ES6 Javascript編譯為與當前瀏覽器兼容的ES5。

使用Babel, 導入/導出功能已在ES6中提供。 那么,如果我僅在ES6可以為我打包模塊時使用它們來捆綁我的模塊,那為什么還要使用BrowserifyWebpack之類的東西呢?

在任何地方,我都能看到人們將Babel與Browserify或Webpack結合使用。 盡管我知道可以使用Webpack之類的東西,但是我想知道是否還可以使用ES6語法捆綁文件。

我在這里可能完全錯了,可能在2016年的Javascript叢林中迷路了,所以我希望有人可以為我澄清這一點。

編輯

我是否可以假設本機ES6導入/導出功能完全不捆綁文件? 到目前為止,我認為您仍然需要包括所有單獨的Javascript文件,但是您可以使用本機導入功能將模塊簡單地導入到彼此的命名空間中?

是的,使用babel將您的ES6導入到ES5中可以使用。

但是,使用webpack的優點之一是創建了一個靜態文件以在生產環境中提供。

ES6之前的版本沒有本機模塊系統,因此存在用用戶區代碼構建的多個系統(例如CommonJS / Node模塊和AMD)。 這些就是Babel將ES6模塊語法轉換為的內容(是的,您是正確的,無論如何ES6模塊語法都沒有本地捆綁的故事)。 瀏覽器不了解這些用戶界面API。 Node通過將“模塊”包裝在注入require()等的函數中來實現其模塊系統。在瀏覽器中, require()只是一個參考錯誤。 Browserify(或另一個捆綁程序)使其在瀏覽器中工作,並將整個依賴圖捆綁到一個腳本中。 因此,如果代碼是針對瀏覽器的,則可能需要將其捆綁。 如果用於Node,則可能不需要。

導入/導出功能

不是函數,聲明。

如果我只是簡單地使用這些來捆綁我的模塊,什么時候ES6可以幫我呢?

我想知道是否還可以使用ES6語法捆綁文件。

我是否可以假設本機ES6導入/導出功能完全不捆綁文件?

是。 沒有捆綁ES6模塊的本地方法。 您可以將ES6模塊語法轉換為Node模塊之類的東西,並將其捆綁在一起。

到目前為止,我認為您仍然需要包括所有單獨的Javascript文件,但是您可以使用本機導入功能將模塊簡單地導入到彼此的命名空間中?

重要的是要認識到,盡管語法是標准化的,但許多行為卻不是。 正在開發一個Loader規范,以指定如何實際定位和加載模塊。

另請參閱https://stackoverflow.com/a/33044085/1034448

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM