javascript中模块依赖处理

在javascript模块化处理模式,为处理模块间的依赖,多个js库提出了各自的模块依赖处理模式。而且功能越来越复杂,模块文件越来越多,我们需要时刻小心模块之间的依赖。

ES6 模块中模块依赖处理

比如:

import MyModule from ‘./MyModule.js’;

CommonJS中模块依赖处理

var MyModule = require(‘./MyModule.js’);

AMD中模块依赖处理

define([‘./MyModule.js’], function (MyModule) {

});

===========
著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:李翌
链接:http://www.zhihu.com/question/20342350/answer/24718689
来源:知乎

假设你对CMD、AMD还没有认识,可以移步这里:

  • CMD标准:https://github.com/cmdjs/specification/blob/master/draft/module.md

  • AMD标准:https://github.com/amdjs/amdjs-api/blob/master/AMD.md

两个类库在模块和factory的书写上其实无太大差异,差异在于模块的加载factory函数的执行。

区别:
1. 对于依赖的模块,AMD 是提前执行,CMD 是延迟执行。不过 RequireJS 从 2.0 开始,也改成可以延迟执行(根据写法不同,处理方式不同)。CMD 推崇 as lazy as possible.
2. CMD 推崇依赖就近,AMD 推崇依赖前置。看代码:

// CMD
define(function(require, exports, module) {var a = require('./a')a.doSomething()   // 此处略去 100 行   var b = require('./b') // 依赖可以就近书写 b.doSomething()   // ...
})
// AMD 默认推荐的是
define(['./a', './b'], function(a, b) {  // 依赖必须一开始就写好    a.doSomething()    // 此处略去 100 行    b.doSomething() // ...
}) 

虽然 AMD 也支持 CMD 的写法,同时还支持将 require 作为依赖项传递,但 RequireJS 的作者默认是最喜欢上面的写法,也是官方文档里默认的模块定义写法。
3. AMD 的 API 默认是一个当多个用,CMD 的 API 严格区分,推崇职责单一。比如 AMD 里,require 分全局 require 和局部 require,都叫 require。CMD 里,没有全局 require,而是根据模块系统的完备性,提供 seajs.use 来实现模块系统的加载启动。CMD 里,每个 API 都简单纯粹。

js模块化之模块依赖处理相关推荐

  1. [Node.js] 模块化 -- express模块

    使用第三方模块 1.新建一个文件夹,文件夹的名字非中文,名字也不要和模块名字一样. 2.进到文件夹里面去,命令运行:npm init -y这个命令可以理解成是初始化 3.下载模块, 去npm官网搜索模 ...

  2. 前端学习(2875):原生js模块化+入口模块和子类的编写

  3. Node.js模块化开发(非常详细,满满的干货)

    下面是对Node.js模块化开发的整理,西洼港可以帮助到有需要的小伙伴~ 文章目录 Node.js模块化开发 JavaScript开发弊端 Node.js模块化开发 模块成员导出的export方法 模 ...

  4. 模块加载及第三方包:Node.js模块化开发、系统模块、第三方模块、package.json文件、Node.js中模块的加载机制、开发环境与生产环境、cookie与session

    1.Node.js模块化开发 1.1 JavaScript开发弊端 JavaScript 在使用时存在两大问题,文件依赖和命名冲突. 1.2 软件中的模块化开发 一个功能就是一个模块,多个模块可以组成 ...

  5. JS 模块化: CommonJS 与 ESM(ECMAScript Module) 的引用机制比较 循环依赖解决方式

    JS 模块化: CommonJS 与 ESM(ECMAScript Module) 的引用机制比较 & 循环依赖解决方式 文章目录 JS 模块化: CommonJS 与 ESM(ECMAScr ...

  6. JS模块化——模块暴露与模块引入

    1. 引言 最近在研究前端框架,但发现好多JavaScript知识不是很了解,很是苦恼,下面就来研究一下JavaScript的模块化,先理解几个概念和模块化的进化过程. 2. 模块化 2.1 什么是模 ...

  7. [Node.js] 模块化 -- path路径模块

    路径问题 nodejs中相对路径,相对的是运行这个node文件的小黑框的路径而言的. 相关变量 __dirname 获取的是当前这个文件所在的这个文件夹的绝对路径 __filename 拿到的是当前这 ...

  8. [Node.js] 模块化 -- url、querystring模块

    前端传参 get传参:拼接在url上面 http://127.0.0.1:4399/joke?id=8&username=admin post传参:不是拼接在url上面 请求体中传递 node ...

  9. node.js中模块_在Node.js中需要模块:您需要知道的一切

    node.js中模块 by Samer Buna 通过Samer Buna 在Node.js中需要模块:您需要知道的一切 (Requiring modules in Node.js: Everythi ...

最新文章

  1. 想搞自动识别系统的应用程序,希望能跟有志于此的朋友交流
  2. DL之GD:利用LogisticGD算法(梯度下降)依次基于一次函数和二次函数分布的数据集实现二分类预测(超平面可视化)
  3. 【数据结构与算法】之深入解析“丑数”的求解思路与算法示例
  4. buf.readInt32LE函数详解
  5. 《Python Cookbook 3rd》笔记(1.11):命名切片
  6. ASE光源 ASE噪声
  7. 用递归计算一个数字每一位相加的结果。_【每日编程196期】各位相加III
  8. 刺客信条起源计算机内存不足,刺客信条起源需要什么配置能玩?最低/推荐配置需求介绍...
  9. android隐式广播和显式广播是什么,在Android8.0上突破隐式广播的限制
  10. ResultSet大数据量导致内存溢出
  11. telegram bots 开发者文档 简介
  12. 帕累托分布(Pareto distributions)、马太效应
  13. .deb文件如何安装,Ubuntu下deb安装方法图文详解
  14. U盘图标显示成文件夹图标
  15. [备查]使用 SPQuery 查询 Person or Group 字段
  16. word转html显示不完整,word页面怎么显不完全 word页面视图显示不全怎么办
  17. 【题解】【PTA-Python题库】第4章-13 求误差小于输入值的e的近似值 (20 分)
  18. java面试app_java面试题库app
  19. python使用turtle画一个三角形、正方形(矩形或四边形)
  20. GAMIT/GLOBK 10.71处理GNSS/GPS数据入门介绍及简单应用(视频教程)

热门文章

  1. java bean 对象属性复制框架BeanMapping-release_0.0.2-注解支持
  2. notepad设置中文
  3. 杭州人有福了!菜鸟配送升级新增24小时送药服务
  4. 机器人统治人类?别逗!现实中的机器人是这样的
  5. 区块链的那些事,你知道和不知道的都在这里!
  6. session 详解
  7. 选择超融合基础设施?这五件事你考虑了吗?
  8. GCJ 2008 Round 1A Minimum Scalar Product( 水 )
  9. WordPress翻译更新失败解决方法
  10. Web应用开发中的几个问题