JS模塊化-ES6的模塊化


使用ES6實現模塊化:

  (1)創建自己的模塊,導出模塊代碼;

  (2)導入自己的模塊

問題:多數平台或瀏覽器還不支持ES6的模塊

解決:(1)babel-node;(2)es6轉es5;(3)讓瀏覽器支持es6modules(瀏覽器的隱藏模式)

 

已知三個子模塊和一個主模塊的關系如下:

四個js文件:

 utils.js

 products.js     (依賴於utils.js)

users.js

 main.js

終端輸入:node js/main.js   可能會報錯:

表示不支持import(說明瀏覽器更不可能支持)

nodejs不兼容es6標准的模塊定義語法

 

解決方法一:babel-node

步驟:

(1)終端輸入:pm -i babel-cli -g

(2)安裝語法插件:npm i babel-preset-es2015 -save

(3)在當前項目的根目錄下新建   .babelrc  文件並配置:

{
  "presets":[
    "es2015"
  ],
  "plugins":[]
}

 此時再在終端輸入 :  babel-node js/main.js    即可正確執行main.js中的代碼

 這個方法可以讓第三方工具支持

 

解決方案二 :將ES6轉換成ES5(依然是babel工具)

步驟:

(1)當前項目找到package.json  找到"scripts"項,向里面添加命令:

"build":"babel   js   -d    build --out-dir es5_build"
//意思是將js文件夾下所有的js文件轉換成es5版本,並且保存到es5_build文件夾下

 

 

 (2)這樣在每次運行新的項目之前,在終端輸入 npm run build     會自動執行package.json下的script指令,會多出一個es5_build文件夾,包含轉換結束后的文件:

此時再直接運行node es5_build/main.js就不會報不支持import的錯誤了:

 

到這一步,就可以讓服務端接受ES6標准的模塊化語法了。

 

解決方案三:如何讓瀏覽器端也支持ES6模塊規范

步驟一

安裝工具:

(1)打包工具:

    npm i -g webpack-cli babel-cli

(2)ES2015兩個工具:

    npm i babel-preset-es2015 babel-loader

(3)兼容性包

    npm i --save-dev babel-polyfill

(4)

    npm i -save babel-core

    

步驟二:

新建webpack.config.js文件並進行配置:

module.exports={ 
//程序的入口是執行babel-polyfill兼容代碼,把main.js變成兼容代碼 entry:[
"babel-polyfill","./js/main.js"], // 把js/main.js變成兼容代碼 output:{
   // 輸出路徑及文件名 path:__dirname
+"/dist", filename:"main.js" // 將編譯打包后的mian.js保存到當前目錄下dist文件夾下的main.js }, module:{ rules:[{ test:/.js$/, // 使用babel-loader工具將制定目錄下的所有js文件都加載下來 loader:"babel-loader" }] } }

如下:

 

 此時es6文件夾內有:js文件夾,node_module文件夾,package.jsonwebpack.config.js

在webpack.config.js同級目錄下終端中運行:webpack

*** 這個命令需要安裝webpack      npm install webpack -g(也有可能需要更新:npm install babel-loader@7  )

運行結束以后,當前文件夾中會出現/dist文件夾,包含了一個main.js文件:

 

 此時在當前項目下新建HTML文件並引入/dist文件夾下的main.js就可以正確執行了:

 

 

 

 

由此可見,通過使用babel和webpack兩個工具,可以實現es6的標准代碼轉換成瀏覽器所支持的es5的代碼,並且進行了壓縮和合並

 

方案三:瀏覽器插件解決

需要有服務器端存在

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM