没有模块化时期存在声明变量易引起污染;使用对象形势保存变量,又容易被重新命名书写等等问题。
能够保护对象的私有属性。
相关:
优点:
缺点:
使用:
a.js 导出
module.exports = {
a: function(p){
console.log(p);
}
}
b.js 引用
const a = require('./a.js');
a.a('msg');//msg
相关:
优点:
缺点:
使用:
a.js 导出
define(function(){
return {
sum(a,b){
return a+b;
}
}
})
b.js 引用并导出
define(['a.js'],function(a){
const result = a.sun(1,1);
return {
result
}
})
main.js 连接html文件
require(['a','b'],function(a,b){
console.log(a,b);//a -> function ,b -> {result: 2};
})
index.html + 引用require.js
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="./require.js" data-main="main.js"></script>
<!-- data-main属性必须,值引入main.js,可以是其他名 -->
</head>
相关:
优点:
缺点:
使用:
a.js 引入导出
define(function(require, exports, module) {
var b = require('./b.js');
var a = b.sum(1,1);
module.exports = a;
});
b.js 导出
define(function(require, exports, module) {
var b = {
sum(a,b){
return a + b;
}
}
module.exports = b;
});
index.html + 引用sea.js
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="./sea.js"></script>
<!-- data-main属性必须,值引入main.js,可以是其他名 -->
</head>
<body>
<script>
//按需加载,用到的时候才调用use
seajs.use(['./a.js','./b.js'],function(a,b){
console.log(a,b);
})
</script>
</body>
相关:
相关:
优点:
缺点:
使用:
a.js 导出
export const a = 10;
export default {
sum(a,b){return a+b}
}
b.js 引用
import { a } from './a.js'
import Afun from './a.js';
console.log(Afun.sum(a,1));
export default {
}
index.html 引用
<script src="./b.js" type="module"></script>