js模块化之模块依赖处理
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模块化之模块依赖处理相关推荐
- [Node.js] 模块化 -- express模块
使用第三方模块 1.新建一个文件夹,文件夹的名字非中文,名字也不要和模块名字一样. 2.进到文件夹里面去,命令运行:npm init -y这个命令可以理解成是初始化 3.下载模块, 去npm官网搜索模 ...
- 前端学习(2875):原生js模块化+入口模块和子类的编写
- Node.js模块化开发(非常详细,满满的干货)
下面是对Node.js模块化开发的整理,西洼港可以帮助到有需要的小伙伴~ 文章目录 Node.js模块化开发 JavaScript开发弊端 Node.js模块化开发 模块成员导出的export方法 模 ...
- 模块加载及第三方包:Node.js模块化开发、系统模块、第三方模块、package.json文件、Node.js中模块的加载机制、开发环境与生产环境、cookie与session
1.Node.js模块化开发 1.1 JavaScript开发弊端 JavaScript 在使用时存在两大问题,文件依赖和命名冲突. 1.2 软件中的模块化开发 一个功能就是一个模块,多个模块可以组成 ...
- JS 模块化: CommonJS 与 ESM(ECMAScript Module) 的引用机制比较 循环依赖解决方式
JS 模块化: CommonJS 与 ESM(ECMAScript Module) 的引用机制比较 & 循环依赖解决方式 文章目录 JS 模块化: CommonJS 与 ESM(ECMAScr ...
- JS模块化——模块暴露与模块引入
1. 引言 最近在研究前端框架,但发现好多JavaScript知识不是很了解,很是苦恼,下面就来研究一下JavaScript的模块化,先理解几个概念和模块化的进化过程. 2. 模块化 2.1 什么是模 ...
- [Node.js] 模块化 -- path路径模块
路径问题 nodejs中相对路径,相对的是运行这个node文件的小黑框的路径而言的. 相关变量 __dirname 获取的是当前这个文件所在的这个文件夹的绝对路径 __filename 拿到的是当前这 ...
- [Node.js] 模块化 -- url、querystring模块
前端传参 get传参:拼接在url上面 http://127.0.0.1:4399/joke?id=8&username=admin post传参:不是拼接在url上面 请求体中传递 node ...
- node.js中模块_在Node.js中需要模块:您需要知道的一切
node.js中模块 by Samer Buna 通过Samer Buna 在Node.js中需要模块:您需要知道的一切 (Requiring modules in Node.js: Everythi ...
最新文章
- 想搞自动识别系统的应用程序,希望能跟有志于此的朋友交流
- DL之GD:利用LogisticGD算法(梯度下降)依次基于一次函数和二次函数分布的数据集实现二分类预测(超平面可视化)
- 【数据结构与算法】之深入解析“丑数”的求解思路与算法示例
- buf.readInt32LE函数详解
- 《Python Cookbook 3rd》笔记(1.11):命名切片
- ASE光源 ASE噪声
- 用递归计算一个数字每一位相加的结果。_【每日编程196期】各位相加III
- 刺客信条起源计算机内存不足,刺客信条起源需要什么配置能玩?最低/推荐配置需求介绍...
- android隐式广播和显式广播是什么,在Android8.0上突破隐式广播的限制
- ResultSet大数据量导致内存溢出
- telegram bots 开发者文档 简介
- 帕累托分布(Pareto distributions)、马太效应
- .deb文件如何安装,Ubuntu下deb安装方法图文详解
- U盘图标显示成文件夹图标
- [备查]使用 SPQuery 查询 Person or Group 字段
- word转html显示不完整,word页面怎么显不完全 word页面视图显示不全怎么办
- 【题解】【PTA-Python题库】第4章-13 求误差小于输入值的e的近似值 (20 分)
- java面试app_java面试题库app
- python使用turtle画一个三角形、正方形(矩形或四边形)
- GAMIT/GLOBK 10.71处理GNSS/GPS数据入门介绍及简单应用(视频教程)