美文网首页
用 ECMAScript 6 编写模块化的 js

用 ECMAScript 6 编写模块化的 js

作者: vivaxy | 来源:发表于2017-01-31 12:59 被阅读15次

    阶段一

    用 babel 5.0 的 cli 将单个 es6 文件编译成 umd 形式的 es5

    将文件拼接在一起 > cat ./build/a.js ./build/b.js > ./dest/index.js

    阶段二

    使用到了 babelbrowserify

    用 babel 5.0 的 cli 将单个 es6 文件编译成 cmd 形式的 es5

    用 browserify 输出为同一个文件

    阶段三

    使用 browserify 插件 babelify

    > browserify ./src/index.js -t babelify -o ./dest/index.js

    阶段四

    babel 升级到了 6.0 ,对所有功能进行了细化拆分,如果用到 es6 的规范,则需要安装 babel-preset-es2015

    此处需要对上个阶段的项目进行升级

    首先安装依赖

    npm i --save-dev babelify babel-preset-es2015

    修改 package.json 添加 browserify 的配置

    // ...
    "browserify": {
        "transform": [
            [
                "babelify",
                {
                    "presets": [
                        "es2015"
                    ]
                }
            ]
        ]
    } // ,
    // ...
    

    编译的指令变成了 browserify ./src/index.js -o ./dest/index.js

    这里可以把原本的 makefile 去除了,改由 npm run make 命令来执行编译,在 package.json 中添加

    // ...
    "scripts": {
        "build": "browserify ./src/index.js -o ./dest/index.js"
    } // ,
    // ...
    

    阶段五

    使用 webpack 和 babel

    上个阶段中每次编译的时间都是漫长的,不便于调试,使用 webpack-dev-server 可以解决调试慢的问题

    安装依赖 npm i --save-dev webpack webpack-dev-server babel-loader babel-core babel-preset-es2015

    项目下新建 webpack 配置文件 webpack.config.js

    /**
     * @since 2015-12-07 16:43
     * @author vivaxy
     */
    'use strict';
    module.exports = {
        entry: {
            index: './src/index.js' // 项目主入口文件
        },
        output: {
            filename: './[name].js' // 输出的文件
        },
        module: {
            loaders: [
                {
                    test: /src\/.+\.js?$/,
                    loader: 'babel?presets[]=es2015' // 定义了 loader
                }
            ]
        }
    };
    

    loader 中的配置可以参考这里

    配置完成后,在命令行中执行 > webpack 就能得到输出的文件,执行 > webpack-dev-server 就能在 8080 端口启动本地服务,调试 es6 代码

    如果想在文件变动后自动刷新页面,可以在 html 中加入 <script src="http://localhost:8080/webpack-dev-server.js"></script>

    参考项目

    相关文章

      网友评论

          本文标题:用 ECMAScript 6 编写模块化的 js

          本文链接:https://www.haomeiwen.com/subject/trqkittx.html