forked from wuyawei/fe-code
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrequire.js
More file actions
34 lines (33 loc) · 918 Bytes
/
Copy pathrequire.js
File metadata and controls
34 lines (33 loc) · 918 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// AMD 规范 RequireJS
const factories = {};
const _require = (deps, factor) => {
depsFn = deps.map(dep => {
const _deps = factories[dep]._deps;
_deps.forEach((_dep, i) => _require([_dep], (d) => {
_deps[i] = d;
}));
return factories[dep].apply(null, _deps);
});
factor.apply(null, depsFn);
}
const define = (name, deps, factor) => {
factories[name] = factor;
factories[name]._deps = deps;
}
define('name', [], () => {
return 'zs';
});
define('age', [], () => {
return 18;
});
define('say', ['name', 'age'], (name, age) => {
return () => {console.log(`我的名字是${name}, 今年${age}`)};
});
_require(['name', 'age', 'say'], (name, age, say) => {
console.log("name", name);
console.log("age", age);
say();
})
// CMD 规范 SeaJS
// ES6 export/import
// es6 export 变量 导出的还是引用;commonjs 则是值的拷贝