美文网首页
js的模块规范

js的模块规范

作者: 海豚先生的博客 | 来源:发表于2020-04-17 16:02 被阅读0次

CommonJS规范

  • node语言使用的规范,用于服务端, CommonJS 模块输出的是一个值的拷贝。
  • 每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。所有代码都运行在模块作用域,不会污染全局作用域。
  • 模块可以多次加载,只会在第一次加载时运行一次,然后运行结果就被缓存了,加载方式是整体加载。
  • 模块加载的顺序,按照其在代码中出现的顺序,即同步加载。
  • CommonJS模块是对象,是运行时加载,运行时才把模块挂载在exports之上(加载整个模块的所有)
  • vue.runtime.common.js vue的cjs版本
  • 用法:
    导出使用module.exports.fn = function(){},也可以exports.obj = {}
    module.exports === exports

    引入使用require('xxx')

ES Module规范

  • ES6 模块输出的是值的引用。
  • 使用export或export default 显示指定输出,再通过import输入。
  • 此方式为编译时加载。用于服务器和浏览器
  • 该类型模块不是对象
  • (构建工具使用,只包含运行时) vue.runtime.esm.js
  • (浏览器使用,完整版本)用于在现代浏览器中通过 <script type="module"> 直接导入。

UMD 规范

  • CommonJS和AMD规范的糅合,还兼容全局引用的方式
  • UMD 使得你可以直接使用 <script> 标签引用

AMD规范(异步模块定义)

  • RequireJS是一个工具库,主要用于客户端(浏览器)的模块管理。它的模块管理遵守AMD规范,实现异步或动态加载。
  • 定义模块:define(id?, dependencies?, factory)。加载模块:require([module], factory)
  • require.js的诞生,就是为了解决这两个问题:
    1)实现js文件的异步加载,避免网页失去响应;
    2)管理模块之间的依赖性,便于代码的编写和维护。

CMD规范(通用模块定义)

  • CMD是 SeaJS 在推广过程中对模块定义的规范化产出。
  • CMD推崇依赖就近,AMD推崇依赖前置。
  • 定义模块:define(factory)。加载模块:require('xxx')

相关文章

网友评论

      本文标题:js的模块规范

      本文链接:https://www.haomeiwen.com/subject/ghisvhtx.html