JS模块化开发

作者: visitor009 | 来源:发表于2018-09-16 22:03 被阅读0次

    什么是js模块化:

    将不同的js功能代码拆分不同的文件, 使用时再导入进去。例如,数据请求的模块,需要使用的页面直接导入即可

    好处:

    • 避免全局命名污染
    • 可复用性
    • 可维护性

    早期模块化写法:

    // 模块化设计模式
    let counter = (function(){
     let count = 0;
     return {
       init() {
          count = 0;
       }
       plus(value) {
         count += value;
       }
     }
    }());
    counter.plus(1);
    

    弊端:无法复用

    // 文件导入
    // counter.js
    let counter = (function(window){
      let count = 0;
      return {
        init() {
           count = 0;
        }
        plus(value) {
          count += value;
        }
    }
    }(window));
    
    <script src="counter.js"></script>
    <script>
      counter.puls(1);
    </script>
    

    弊端:

    • 当引入多模块时http请求过多
    • 有依赖需顺序引入

    使用模块规范进行编写,打包

    commonjs:

    导出module.exports = {}
    导入let obj = require('./module')

    // module.js
    module.exports = {value:1}
    // main.js
    let obj = require('./module')
    console.log(obj);
    

    使用browserify进行打包

    npm install -g browserify
    npm install --save-dev browserify
    
    browserify main.js -o bundle.js
    

    es6 mudole:

    导出export default {}
    导入import obj from './module

      // module.js 
    export default {value: 1}
    // main.js
    import obj from './module.js';
    console.log(obj);
    

    使用babel+browserify进行打包
    先用babel转es5,再用browserify打包

    // babel
    npm babel-cli babel-preset-es2015 --save-dev
    npm install --save-dev browserify
    // 新建.babelrc文件, 通过cli创建 touch .babelrc
    {
      "presets": ["es2015"]
    }
     babel es6.js --out-file es5.js
    browserify es5.js -o bundle.js
    

    相关文章

      网友评论

        本文标题:JS模块化开发

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