随着项目越来越复杂,功能越来越庞大,需要引入的公共数据也就越来越多,所以「模块」的解决方案应用而生。
//math.jsmodule.exports.add = (x, y) => x + y;//program.jsvar math = require(\\\'math\\\');math.add(1,2)
define(id?, dependencies?, factory)
//定义模块 demo.jsdefine(function(){var exports = {};exports.sayHello = function(){alert(\\\'Hello from module:\\\' + module.id)}return exports;})//使用requite(\\\'demo\\\',function(demo){demo.sayHello();});
//模块 user.jslet name = \\\'cuishunbiao\\\';let sex = \\\'男\\\';let work = \\\'web\\\';export {name,sex,work}//main.jsimport {name,sex,work} from \\\'./user.js\\\'console.log(name,sex,work);
// lib.jsvar counter = 1;function addCounter(){counter++}module.exports = {counter: counter,addCounter: addCounter}//main.jsvar counter = require(\\\'./lib\\\').counter;var addCounter = require(\\\'./lib\\\').addCounter;console.log(counter);//1addCounter();console.log(counter);//1 输出值不受影响
//lib.jsexport let counter = 1;export function addCounter(){counter++}//main.jsimport {counter,addCounter} from \\\'./lib\\\';console.log(counter);//1addCounter();console.log(counter);//2 改变了输出值
;(function (name, definition) {// 检测上下文环境是否为AMD或CMDvar hasDefine = typeof define === \\\'function\\\',// 检查上下文环境是否为NodehasExports = typeof module !== \\\'undefined\\\' && module.exports;if (hasDefine) {// AMD环境或CMD环境define(definition);} else if (hasExports) {// 定义为普通Node模块module.exports = definition();} else {// 将模块的执行结果挂在window变量中,在浏览器中this指向window对象this[name] = definition();}})(\\\'hello\\\', function () {var hello = function () {};return hello;});
https://my.oschina.net/qufei1993/blog/4701150
原创文章,作者:小道研究,如若转载,请注明出处:https://www.sudun.com/ask/34590.html