1.Nodejs 中的模块

在node环境中一个js文件就是一个模块(module) 我们采用的是CommonJS规范,使用require引入模块,使用module.exports导出接口

node的module遵循CommonJS规范,requirejs遵循AMD,seajs遵循CMD

// a.js

// -------- node -----------
module.exports = {
a : function() {},
b : 'xxx'
};

// ----------- AMD or CMD ----------------关于AMD/CMD   http://www.cnblogs.com/chenguangliang/p/5856701.html

define(function(require, exports, module){
module.exports = {
a : function() {},
b : 'xxx'
};

// ------------ node ---------
var m = require('./a');
m.a();

// ------------ AMD or CMD -------------
define(function(require, exports, module){
var m = require('./a');
m.a();
});

1-1关于AMD 、CMD

Node 使用 CommonJS 模块系统。

AMD:AMD即Asynchronous Module Definition,翻译过来就是异步模块化定义 requirejs是遵循此规范

CMD: common moudle definition,翻译过来即通用模块定义  seajs是遵循此规范

1.RequireJS在主文件里是将所有的文件同时加载,然而SeaJS强调一个文件一个模块。

2.AMD推崇依赖前置,CMD推崇依赖就近。

amd 加载完模块后立即执行  cmd加载完模块后 遇到require 才执行

2.ES6中的模块

使用export 导出模块,import 导入模块

3.两种引用模块方式对比

1. import是编译时的(require是运行时的),它必须放在文件开头,而且使用格式也是确定的,不容置疑。

2. import不会将整个模块运行后赋值给某个变量,而是只选择import的接口进行编译,这样在性能上比require好很多。

3. require是赋值过程,import是解构过程,当然,require也可以将结果解构赋值给一组变量,但是import在遇到default时,和require则完全不同: var $ = require('jquery'); 和 import $ from 'jquery' 是完全不同的两种概念。

目前 我们在node中使用babel支持ES6,也仅仅是将ES6转码为ES5再执行,import语法会被转码为require。这也是为什么在模块导出时使用module.exports,在引入模块时使用import仍然起效,因为本质上,import会被转码为require去执行。

上面3条 参考文章 https://blog.csdn.net/baidu_31333625/article/details/53980302

4.在node中使用ES6

nodejs仍未支持import/export语法,需要安装必要的npm包–babel,使用babel将js文件编译成node.js支持的commonjs格式的代码。

转载于:https://www.cnblogs.com/zxiaoxi/p/10150894.html

node中模块、AMD与CMD、ES6模块,node中使用ES6相关推荐

  1. Requirejs与r.js打包,AMD、CMD、UMD、CommonJS、ES6模块化

    一:require.js 1.require.js是什么?为什么要用它? require.js是一个JavaScript模块载入框架,实现的是AMD规范.使用require.js有以下优点: ① 异步 ...

  2. python如何卸载模块cmd_使用cmd python模块时,如何使程序正常崩溃?

    不幸的是,完成者中的异常被捕获在readline黑暗深处的某个地方.你可以试试这样的东西: import cmd import traceback def log_exceptions(fun): d ...

  3. 模块化(AMD、CMD、CommonJS、ES6)

    1,CommonJS 服务器,同步加载模块,加载机制是:输出拷贝 模块导出:module.exports 导入模块:require 2,AMD(异步模块定义) 用于浏览器,防止js加载阻塞页面渲染,异 ...

  4. AMD、CMD、CommonJs、ES6的对比

    都是用于在模块化定义中使用 AMD.CMD.CommonJs是ES5中提供的模块化编程的方案 import/export是ES6中定义新增的 AMD-异步模块定义[依赖前置.异步定义] Require ...

  5. 再谈 JS中的模块规范(CommonJS,AMD,CMD)来自玉伯的seajs分析

    随着互联网的飞速发展,前端开发越来越复杂.本文将从实际项目中遇到的问题出发,讲述模块化能解决哪些问题,以及如何使用 Sea.js 进行前端的模块化开发. 恼人的命名冲突 我们从一个简单的习惯出发.我做 ...

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

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

  7. 浅析JS模块规范:AMD,CMD,CommonJS

    from:https://www.jianshu.com/p/09ffac7a3b2c 随着JS模块化编程的发展,处理模块之间的依赖关系成为了维护的关键. 模块化 AMD,CMD,CommonJS是目 ...

  8. ES6模块加载方案 CommonJS和AMD ES6和CommonJS

    目录 CommonJS CommonJS和AMD的对比 ES6和CommonJS 改成ES6 exports和module.exports CommonJS 每个文件就是一个模块,有自己的作用域.在一 ...

  9. TypeScript完全解读(26课时)_14.ES6和Nodejs中的模块

    创建modules文件夹,我们的文件都写在这里面 modules下面新建index.js文件,在index.ts内引入这个js文件 es6的模块 最主要的两个关键字 import和export imp ...

最新文章

  1. JavaScript 函数创建思想
  2. Struts2中通配符的使用
  3. TYVJ P1080 N皇后 Label:dfs PS:以前做的一道题,贴出来防忘
  4. python知识点总结(有空就往里面添加)
  5. word 7桌面上的计算机图标是,怎么设置win7系统桌面图标都变成word图标的处理办法...
  6. java activity模式_Activity的启动模式
  7. CentOS6.4系统启动失败故障排查
  8. Flutter fvm 多版本管理
  9. 秀脱linux笔记之PIX501防火墙实战篇
  10. oracle 10g 安装步骤
  11. 汇率的思维导图模板下载方法
  12. 对比度调整的各种方法(一)
  13. 逆流而上:计算机专业图书破圈营销,这个直播间做到了
  14. unity3D学习笔记1
  15. python中求和符号怎么打_SymPy求和表达式中的代换符号
  16. 说完列表说字典,说完字典说集合,滚雪球学 Python
  17. Spring-第一篇-快速入门
  18. MYSQL进阶(一)
  19. 一文带你了解安全多方计算
  20. Createjs 学习笔记

热门文章

  1. Android下载图片路径问题
  2. (转)Inno Setup入门(二十一)——Inno Setup类参考(7)
  3. android入门学习一 基本概念
  4. java修改cookie的值_Java 对 Cookie增删改查的实现示例
  5. cmd看excel有多少个子表_快看!杭州各区5月房价表出炉!现在买套房要多少钱?...
  6. Pycharm如何设置自定义背景颜色
  7. SPI、UART、I2C三种串行总线简介
  8. 终端下载文件(windows和linux)
  9. 将带空格的字符串去掉空格.join()函数
  10. 从源码分析DEARGUI之add_tooltip