導(dǎo)入
// 入口文件./src/index.js
const sum = require('./add.js')
console.log(sum(2,3)) // 5
模塊加載機(jī)制势木,如果一個(gè)模塊是第一次被加載易猫,那么會(huì)執(zhí)行該模塊并導(dǎo)出內(nèi)容鄙煤,如果該模塊被執(zhí)行過(guò)晾匠,那么這個(gè)模塊的代碼不會(huì)再被執(zhí)行,而是直接導(dǎo)出上次執(zhí)行的結(jié)果梯刚。
require可以接受表達(dá)式凉馆,動(dòng)態(tài)制定模塊路徑
導(dǎo)出
在CommonJs中每個(gè)文件都是一個(gè)模塊,模塊的作用域是屬于自身的,而一個(gè)模塊向外暴露的唯一方式是導(dǎo)出澜共,在CommonJs中導(dǎo)出的是module.exports對(duì)象向叉,
var module ={exports: {}}// 可以理解為一開(kāi)始定義了一個(gè)module對(duì)象
module.exports = {
name: 'jack',
add: function(a, b){return a+b}
}
為了方便直接用exports,這種簡(jiǎn)寫(xiě)跟使用module是一樣的
//定義了module之后,可以理解為在開(kāi)頭將exports指向了module.exports
var exports = module.exports
exports.name = 'jack'
所以當(dāng)我們給exports直接賦值后會(huì)導(dǎo)致其失效嗦董,因?yàn)槭冀K導(dǎo)出的都是module.exports
ES6 Module
es6也是將每一個(gè)文件當(dāng)做模塊母谎,導(dǎo)入導(dǎo)出語(yǔ)句是import export,會(huì)自動(dòng)開(kāi)啟use strict控制嚴(yán)格模式京革。
導(dǎo)入
//命名式 需要有大括號(hào)
import { add } from './add.js'
// 默認(rèn)導(dǎo)入 等同于 import { default as myAdd } from './add.js'
import myAdd from './add.js'
//混合導(dǎo)入
import add, {name} from './add.js'
//全部導(dǎo)入
import * as add from './add.js'
導(dǎo)出
//寫(xiě)法1
const add = function(a,b) {return a+b}
export { add }
//寫(xiě)法2
export { add: function (a,b) {return a+b} }
//默認(rèn)導(dǎo)出
export default function(a,b) {return a+b}
//混合寫(xiě)法
export const add = function(a,b) {return a+b}
下一節(jié) entry output配置:http://www.reibang.com/p/386e61521d32