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的代码,并且进行了压缩和合并

     

    方案三:浏览器插件解决

    需要有服务器端存在

        

  • 相关阅读:
    python模块—socket
    mac os系统的快捷键
    教你如何将UIImageView视图中的图片变成圆角
    关于ASP.NET MVC
    iOS 日期格式的转换
    将App通过XCode上传到AppStore 出现这个错误“An error occurred uploading to the iTunes Store”的解决方法
    关于MAC OS下面两个软件的功能改进——Dictionary和Fit 输入法
    分享一下上个星期的香港行程
    【博客园IT新闻】博客园IT新闻 iPhone 客户端发布
    解决Entity Framework Code First 的问题——Model compatibility cannot be checked because the database does not contain model metadata
  • 原文地址:https://www.cnblogs.com/codexlx/p/12495023.html
Copyright © 2011-2022 走看看