Web 前端开发

JS模块化开发

2018-09-16  本文已影响0人  visitor009

什么是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>

弊端:

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

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
上一篇 下一篇

猜你喜欢

热点阅读