zoukankan      html  css  js  c++  java
  • 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的代码,并且进行了压缩和合并

     

    方案三:浏览器插件解决

    需要有服务器端存在

        

  • 相关阅读:
    ubuntu18.04安装ssh服务
    跳转
    【WinForm】—窗体之间传值的几种方式
    使用jQuery完成复选框的全选和全不选
    VS2015下载安装随笔记录
    关于c#数据类型,类型转换,变量,常量,转义符。
    浅谈表单同步提交和异步提交
    form表单提交和跳转
    2019年8月19日矩阵
    C# WinForm快捷键设置技巧
  • 原文地址:https://www.cnblogs.com/codexlx/p/12495023.html
Copyright © 2011-2022 走看看