流行的JS模块化规范有5种,
CommonJS、AMD、CMD、UMD以及ES6
请问是否是比较常用的是:CommonJS 和 ES6,
其他的都用的很少? 我们在工作中使用CommonJS 和 ES6即可?
现代JS(包括TS)开发直接写ESM这一规范就好了,不需要手写其他规范的模块了。
如果你担心旧环境的兼容,可以利用构建工具(比如webpack、rollup),把ESM转成其他的规范。
比如一段ESM代码。
export function greeting(name: string) { return `hello ${name}`}
可以打包成CJS
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.greeting = void 0;function greeting(name) { return `hello ${name}`;}exports.greeting = greeting;
AMD
define(["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.greeting = void 0; function greeting(name) { return `hello ${name}`; } exports.greeting = greeting;});
UMD
(function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define(["require", "exports"], factory); }})(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.greeting = void 0; function greeting(name) { return `hello ${name}`; } exports.greeting = greeting;});
SystemJS
System.register([], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; function greeting(name) { return `hello ${name}`; } exports_1("greeting", greeting); return { setters: [], execute: function () { } };});
以上的CJS、AMD、UMD模块,都是打包工具自动生成的,你只要写ESM模块就好了,剩下的就交给工具。
coolie 遵循的是 CMD 规范。 CMD 规范 CMD 最先是由 seajs 提出的,是 commonJS 规范的前端实现。 与 commonJS 的表现是一致的,即:依赖就近,顺序执行。 define(function(require, exports, module){ var xhr = require('./xhr.js'); xhr.ajax(...); });
CommonJS 是以在浏览器环境之外构建 JavaScript 生态系统为目标而产生的项目,比如在服务器和桌面环境中。 这个项目最开始是由 Mozilla 的工程师 Kevin Dangoor 在2009年1月创建的,当时的名字是 ServerJS。 我在这里描述的并不是一个技术问题,而是一件重大的事情,让大家走到一起来做决定,迈出第一步,来建立一个更大更酷的东西。 —— Kevin Dango
页面模块化 规范 在具体谈论规范的之前,可以下去查看下各大网络公司的前端开发规范(Developemnt Style Guide)例如谷歌,Facebook 或者 Dropbox。从而更好的理解开发规范在实际应用中和多人协作中的重要性。 不同开发者在开发过程中使用不同的代码风格会直接的提升在之后的开发和维护的成本和难度,对前端开发来说更是尤为突出。这时使用代码规范来约束开发者的编码风格就可以大体解
长话短说,我试图在CommonJS模块中使用一个只有ES6模块入口点的npm包,即(GitHub),因为我的整个50多个模块的应用程序都是在CommonJS中构建的。根据节点文档,这样做的标准方法是使用函数。我使用以下代码尝试了这种方法: 但是,这会导致包出错,而不一定是上面的导入函数: 有没有一种方法可以绕过这个问题,这样我就可以在CommonJS模块中使用这个包了?
本文向大家介绍详谈commonjs模块与es6模块的区别,包括了详谈commonjs模块与es6模块的区别的使用技巧和注意事项,需要的朋友参考一下 到目前为止,已经实习了3个月的时间了。最近在面试,在面试题里面有题目涉及到模块循环加载的知识。趁着这个机会,将commonjs模块与es6模块之间一些重要的的区别做个总结。语法上有什么区别就不具体说了,主要谈谈引用的区别。 commonjs 对于基本数
CommonJS nodejs模块化规范,现在被大量用于前端,原因: 前端开发依赖的插件和库,都可以从npm中获取 构建工具的高度自动化,是的使用npm的成本非常低 CommonJS不会异步加载JS,而是同步一次性加载出来 module.exports = { getFormatDate:function (data,type) { if (type === 1) { re