/*** CommonJS 模块化规范* CommonJS规范加载模块是同步的,也就是说,只有加载完成,才能执行后面的操作*//*-------Node.js遵循Commonjs规范---------*///写法1.var exports=module.exports;exports.name="leyi";exports.fn=function(){return 'hello world!'};//写法2.module.exports={"name":'leyi',"fn":function(){return 'hello world!'}};//写法3.module.exports=function(){this.name='leyi';this.fn=function(){return 'hello world!'}};/*** AMD 模块化规范 -推崇依赖前置* AMD规范则是非同步加载模块,允许指定回调函数。由于Node.js主要用于服务器编程,模块文件一般都已经存在于本地硬盘,* 所以加载起来比较快,不用考虑非同步加载的方式,所以CommonJS规范比较适用。* 但是,如果是浏览器环境,要从服务器端加载模块,这时就必须采用非同步模式,因此浏览器端一般采用AMD规范。*//*-------require.js遵循的AMD规范---------*///依赖一开始写好,默认推荐写法如下define(['./aaa', './bbb'], function(a, b) {a.xxx();b.xxx();});//AMD规范也支持Commonjs规范的写法,跟下面的CMD写法一样,define写成这样define(function(require,exports,module){//...});/*** CMD 模块化规范 -推崇依赖就近* 代码在运行时,首先是不知道依赖的,需要遍历所有的require关键字,找出后面的依赖。* 具体做法是将function toString后,用正则匹配出require关键字后面的依赖。*//*-------sea.js遵循的CMD规范---------*/define(function(require,exports,module){var aaa=require('./aaa');aaa.xxx();var bbb=require('./bbb');bbb.xxx();exports.fn=function(){aaa.xxx();}});/*兼容多种模块规范的写法*/!(function(moduleName,fn){//上下文为amd或cmd环境if(typeof define === 'function'){define(fn);//上下文为commonjs环境}else if('undefined' !== typeof module && !!module && !!module.exports){module.exports=fn();}else{//挂载到全局作用域上this[moduleName]=fn();}}('moduleName',function(){var obj={"name":"leyi"}return obj;}));

转载于:https://www.cnblogs.com/leyi/p/6534647.html

CommonJs、AMD、CMD模块化规范相关推荐

  1. 关于 CommonJS AMD CMD UMD 规范的差异总结

    根据CommonJS规范,一个单独的文件就是一个模块.每一个模块都是一个单独的作用域,也就是说,在一个文件定义的变量(还包括函数和类),都是私有的,对其他文件是不可见的. // foo.js var ...

  2. commonjs是什么_JavaScript模块化标准CommonJS/AMD/CMD/UMD/ES6Module的区别

    JS-模块化进程 随着js技术的不断发展,途中会遇到各种问题,比如模块化. 那什么是模块化呢,他们的目的是什么? 定义:如何把一段代码封装成一个有用的单元,以及如何注册此模块的能力.输出的值依赖引用: ...

  3. CommonJS,AMD,CMD,ES6,require 和 import 详解

    CommonJS,AMD,CMD,ES6 commonJS用同步的方式加载模块.在服务端,模块文件都存在本地磁盘,读取非常快,所以这样做不会有问题.但是在浏览器端,限于网络原因,更合理的方案是使用异步 ...

  4. es6模块化机制及CommonJS与ES6模块化规范区别

    模块化机制 CommonJS模块化规范 导入 1. let { firstName, lastName } = require('./1-module.js') 导出 1. module.export ...

  5. JS JavaScript模块化(ES Module/CommonJS/AMD/CMD)

    前言 前端开发中,起初只要在script标签中嵌入几十上百行代码就能实现一些基本的交互效果,后来js得到重视,应用也广泛起来了, jQuery,Ajax,Node.Js,MVC,MVVM等的助力也使得 ...

  6. CommonJS/AMD/CMD/UMD

    为什么会有这几种模式? 起源:Javascript模块化 模块化就是把复杂问题分解成不同模块,这样可维护性高,从而达到高复用,低耦合. 1.Commonjs CommonJS是服务器端模块的规范,No ...

  7. 关于JavaScript的模块(CommonJS, AMD, CMD, ES6模块)的理解

    Javascript模块化就是解决将代码进行分隔,作用域隔离,模块之间的依赖管理等多个方面问题. 这样的优点不言而喻:1.可维护性2.命名空间私有化,可以避免污染全局环境3.代码重用,通过模块可以方便 ...

  8. 模块格式:CommonJS AMD CMD UMD ES6

    皆为前端工程化中定义模块(module)的规则,如:模块标识,模块依赖,模块实现,模块对外接口,模块加载: 实现时有:异步,同步,依赖前置,依赖就近,预执行,懒执行,软依赖,硬依赖,模块对象支持类型等 ...

  9. Commonjs与Esmodule模块化规范

    目录 模块化 Common Js--node.js 特点 使用 基本使用 require require 加载标识符原则 require加载原理 require 动态加载 exports 和 modu ...

最新文章

  1. echarts前后端交互数据_如何避免前后端在数据交互方面的相爱相杀?
  2. C/C++使用openssl进行摘要和加密解密(md5, sha256, des, rsa)
  3. html 判断页面支持canvas,HTML5 Canvas之测试浏览器是否支持Canvas的方法
  4. linux c段错误,Linux C中段错误
  5. 【NOIP模拟题】“与”(位运算)
  6. 七台河计算机网络工程专业,网络工程本科专业介绍
  7. 120余家自动驾驶公司的行业汇总
  8. sql oracle 递归查询语句,深入sql oracle递归查询
  9. 如何限制浏览器使用_如何使用浪涌电流限制器NTC(一)
  10. 位姿矩阵求逆 (搬运)
  11. java执行脚本命令 学习笔记
  12. 抽象类实现接口,子类继承抽象类,这三个之间的关系?
  13. 基础数据结构-线性表-顺序表的连续操作
  14. 2020年对口升学计算机应用模拟题,2020年江西省对口计算机试卷
  15. 百度云高速下载的两种方法
  16. wpd小波包分解_基于奇异值分解和小波包分解的故障检测
  17. Linux下把ncsi设置成OCP模式,NCSI简介
  18. tft液晶屏接口概述及信号类型
  19. Laravel中使用dingo
  20. 手机停机照样可以免费无限量上网

热门文章

  1. VC跨进程数据(结构体)传递-WM_COPYDATA
  2. linux设备:cdev和kobj_map
  3. [html] 说说你对H5的ServiceWorker的理解,它有什么运用场景?
  4. 前端学习(2889):如何短时间内实现v-for 模板编译21
  5. 前端学习(2871):Vue路由权限『前后端全解析』2
  6. [css] 举例说明伪类:nth-child、:first-child与:first-of-type这三者有什么不同?
  7. [css] 分析比较opacity: 0、visibility: hidden、display: none三者的优劣和适用场景
  8. 前端学习(238):IE低版本常见bug
  9. 前端学习(148):html和xhtml的区别
  10. 第十九期:HTTPS虐我千百遍,我却待她如初恋!