翼度科技»论坛 编程开发 JavaScript 查看内容

[NodeJS] JavaScript模块化

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
JavaScript诞生于1995年,一开始只是用于编写简单的脚本。
随着前端开发任务越来越复杂,JavaScript代码也越来越复杂,全局变量冲突、依赖管理混乱等问题变得十分突出,模块化成为一个必不可少的功能。
模块化发展史与方案对比

YUI 与 JQuery

2006年,雅虎开源了组件库YUI Library,使用类似于Java的命名空间的方式来管理模块:
  1. YUI.util.module.doSomthing();
复制代码
同年,JQuery发布,使用IIFE和闭包的方法创建私有作用域,避免全局变量污染,这种管理模块的方法流行了一段时间。
  1. (function(root) {
  2.     // 模块内部变量和函数
  3.     var data = 'Module Data';
  4.     function getData() {
  5.         return data;
  6.     }
  7.    
  8.     // 将模块接口挂载到全局对象上
  9.     root.myModule = {
  10.         getData: getData
  11.     };
  12. })(window);
  13. // 使用模块
  14. console.log(myModule.getData()); // 输出: Module Data
复制代码
当一个模块依赖于其它模块时:(ModuleB依赖于ModuleA和ModuleC)
  1. (function(root, moduleA, moduleC) {
  2.     // 模块B代码
  3. })(window, window.moduleA, window.moduleC);
复制代码
这种方法有以下缺点:

  • 模块挂载到了全局对象上,仍然可能存在冲突;
  • 缺乏标准化,不同程序员对这种方案的实现可能不同;
  • 依赖管理困难,当依赖模块量比较大时,手动传递参数容易出错。
ServerJS, CommonJS 和 Node.js

2009年1月,Mozilla 的工程师制定了一套JavaScript模块化的标准规范,取名为ServerJS,规范版本为Modules/0.1。
同年4月,ServerJS更名为CommonJS
ServerJS最初用于服务端的JS模块化,用于辅助自动化测试工作。
<blockquote>
在Node.js出现之前也有运行于服务端的JS,叫做Netscape Enterprise Server,它并不像Node.js,后者拥有访问操作系统文件系统,以及网络I/O等能力;而前者更像是早期的php,只是用于在服务端填充模板。更详细的介绍可以看
来源:https://www.cnblogs.com/feixianxing/p/18292777/nodejs-modules-commonjs-esmodules
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具