文档章节

关于CommonJS,AMD,CMD的初级理解

潘-C
 潘-C
发布于 2016/02/03 11:25
字数 517
阅读 117
收藏 1
点赞 2
评论 0

之前接触到模块化开发,对这个概念的理解还是比较模糊,主要原因是实际应用中,几乎不用,或者很少用,碰到问题只会一股脑的拿起手中的锤子去锤,正确的解决方案一定是经过缜密思考和预言的结果。

先说这是三个东西产生的顺序是CommonJS,AMD,CMD。

1.CommonJS

     CommonJS是运行在服务器端、同步的、代表作品为NodeJS。

    对于服务器端的js脚本或者库文件来说,只是加载本地文件,所以同步和异步的差别几乎可以忽略,而同步加载更靠谱(这个词怪怪的)。运行过程中的核心对象是exports,所以我把CommonJS的关键字定义为"exports"。

2.AMD

    AMD是运行在浏览器端、异步的、代表作品为RequireJS。

    对于客户端来讲,加载服务器的js脚本或者库文件,如果是同步加载的话,就会产生延迟假死的想象,AMD的出现就是解决这个问题,它是RequireJS 在推广过程中对模块定义的规范化产出,AMD规范适用define方法定义模块,所以我把AMD的关键字定义为"define"。

3.CMD

    CMD的了解较少,是SeaJS 在推广过程中对模块定义的规范化产出,是在CommonJS和AMD的基础上产生的,跟AMD的主要区别是依赖原则不同,AMD是依赖前置,CMD则是依赖延迟。

对以前描述有理解偏差的,欢迎补充和提bug。

© 著作权归作者所有

共有 人打赏支持
潘-C
粉丝 4
博文 17
码字总数 8453
作品 0
海淀
程序员
CommonJS/AMD/CMD/UMD概念初探

1、CommonJS是一种规范,NodeJS是这种规范的实现。 1.1、CommonJS 加载模块是同步的,所以只有加载完成才能执行后面的操作。 参考: http://www.commonjs.org/ http://javascript.ruanyifen...

easonjim ⋅ 2016/12/12 ⋅ 0

TypeScript 模块导入那些事

ES6 模块导入的限制 我们先来看一个具体的例子: 在 Node 项目里,使用 CommonJS 规范引入一个模块: 改写为 TypeScript(1.5+ 版本)时,通常有两种方式: 使用 ES6 模块导入方式: 使用 Ty...

三毛丶 ⋅ 06/11 ⋅ 0

使用模块化工具打包自己开发的JS库

博客地址 最近有个需求,需要为小程序写一个SDK,监控小程序的API调用和页面报错(类似fundebug) 听起来高大上的SDK,其实就是一个JS文件,类似平时开发中我们引入的第三方库: 小程序的模块化...

深红 ⋅ 06/08 ⋅ 0

ES6与CommonJS中的模块处理

ES6和CommonJS都有自己的一套处理模块化代码的措施,即JS文件之间的相互引用。 为了方便两种方式的测试,使用nodejs的环境进行测试 CommonJS的模块处理 使用require来引入其他模块的代码,使...

zsfblank ⋅ 06/12 ⋅ 0

Vue小技巧,如何导入普通JS文件

最近在开发一个展示3D模型的WEB程序,在工程中使用了VUE和ThreeJS库。Three.js本身是支持CommonJS的,但我们还用到了OBJLoader模块,此模块不支持CommonJS,改成CommonJS比较麻烦(真相是懒综...

吃瓜群众路人丙 ⋅ 06/11 ⋅ 0

很全很全的 JavaScript 模块讲解

模块通常是指编程语言所提供的代码组织机制,利用此机制可将程序拆解为独立且通用的代码单元。所谓模块化主要是解决代码分割、作用域隔离、模块之间的依赖管理以及发布到生产环境时的自动化打...

一个敲代码的前端妹子 ⋅ 05/11 ⋅ 0

浅谈Node中module的实现原理

曾几何时,Javascript还没那么牛逼,几乎所有人都觉得它是用来做网页特效的脚本而已。彼时仓促创建出来的javascript的自身缺点被各种吐槽。随着web的发展,Javascript如今是媳妇熬成婆,应用...

xuerensusu ⋅ 05/21 ⋅ 0

37互娱前端校招笔试(2019提前批)

选择题 -7的二进制补码是多少?(牛客题) RSA, SHA, DES, BASE64中哪个是不可逆的? 计算机软件可以分为系统软件和应用软件,请问系统软件的核心是什么? 线性表(7, 34, 55, 25, 64, 46, 2...

求职小小菜鸡 ⋅ 06/06 ⋅ 0

理解Underscore的设计架构

在一个多月的毕业设计之后,我再次开始了Underscore的源码阅读学习,断断续续也写了好些篇文章了,基本把一些比较重要的或者个人认为有营养的函数都解读了一遍,所以现在学习一下Underscore的...

DM.Zhong ⋅ 05/11 ⋅ 0

v-charts 1.17.0 发布,优化 commonjs 包体积

v-charts 1.17.0 已发布,v-charts 是饿了么开源的基于 Vue2.0 和 echarts 封装的 v-charts 图表组件,只需要统一提供一种对前后端都友好的数据格式 设置简单的配置项,便可轻松生成常见的图...

王练 ⋅ 06/16 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vue-cli是什么?

vue-cli是什么? vue-cli 是vue.js的脚手架,用于自动生成vue.js+webpack的项目模板,分为vue init webpack-simple 项目名 和vue init webpack 项目名 两种。 当然首先你的安装vue,webpack...

韦姣敏 ⋅ 8分钟前 ⋅ 0

12c rman中输入sql命令

12c之前版本,要在rman中执行sql语句,必须使用sql "alter system switch logfile"; 而在12c版本中,可以支持大量的sql语句了: 比如: C:\Users\zhengquan>rman target / 恢复管理器: Release 1...

tututu_jiang ⋅ 14分钟前 ⋅ 0

java 线程池

概述 减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务 可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为因为消耗过多的内存,而把服务器累趴下(...

轨迹_ ⋅ 19分钟前 ⋅ 0

Nginx的https配置记录以及http强制跳转到https的方法梳理

Nginx的https配置记录以及http强制跳转到https的方法梳理 一、Nginx安装(略) 安装的时候需要注意加上 --with-httpsslmodule,因为httpsslmodule不属于Nginx的基本模块。 Nginx安装方法: ...

Yomut ⋅ 31分钟前 ⋅ 0

SpringCloud Feign 传递复杂参数对象需要注意的地方

1.传递复杂参数对象需要用Post,另外需要注意,Feign不支持使用GetMapping 和PostMapping @RequestMapping(value="user/save",method=RequestMethod.POST) 2.在传递的过程中,复杂对象使用...

@林文龙 ⋅ 32分钟前 ⋅ 0

如何显示 word 左侧目录大纲

打开word说明文档,如下图,我们发现左侧根本就没有目录,给我们带来很大的阅读障碍 2 在word文档的头部菜单栏中,切换到”视图“选项卡 3 然后勾选“导航窗格”选项 4 我们会惊奇的发现左侧...

二营长意大利炮 ⋅ 36分钟前 ⋅ 0

智能合约编程语言Solidity之线上开发工具

工具地址:https://ethereum.github.io/browser-solidity/ 实例实验: 1.创建hello.sol文件 2.调试输出结果

硅谷课堂 ⋅ 37分钟前 ⋅ 0

ffmpeg 视频格式转换

转 Mp4 格式 #> ffmpeg -i input.avi -c:v libx264 output.mp4#> ffmpeg -i input.avi -c:v libx264 -strict -2 output.mp4#> ffmpeg -i input.avi -c:v libx264 -strict -2 -s 1......

Contac ⋅ 49分钟前 ⋅ 0

VCS仿真生成vpd文件(verilog)

VCS仿真生成vpd文件(verilog): https://www.cnblogs.com/OneFri/p/5987673.html SYNOPSYS VCS常用命令使用详解 https://blog.csdn.net/hemmingway/article/details/49382551 DVE是synopsys公......

whoisliang ⋅ 55分钟前 ⋅ 0

Spring Boot启动配置原理

几个重要的事件回调机制 配置在META-INF/spring.factories ApplicationContextInitializer SpringApplicationRunListener 只需要放在ioc容器中 ApplicationRunner CommandLineRunner 启动流程......

小致dad ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部