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