es6 模块化学习总结

简介: es6 模块化学习总结
 ===============commonJS==================
    在node.js 中,由于有且仅有一个入口文件(启动文件),而开发一个应用肯定会涉及到多个文件的配合,
     因此,node.js 对模块的需求比浏览器端要大的多
    模块的导出:
     什么叫做模块: 模块就是一个JS文件,它实现了一部分的功能,并隐藏自己的内部实现,同时提供一些接口供其他模块使用
     模块有两个核心元素: 隐藏和暴露
     隐藏的,是自己内部的实现
     暴露的,是希望外部使用的接口
     在任何一个正常的模块化标准,都应该默认隐藏模块中的所有实现,而通过一些语法或api调用来暴露接口
    模块的导入:
     当需要使用一个模块时,使用的是该模块暴露部分(导出的部分),隐藏的部分永远是无法使用的
    commonJS 规范:
     commonJS 使用exports导出模块, require导入模块
     具体规范如下:
       1. 如果一个JS文件中存在exports或require, 该JS文件是一个模块
       2. 模块内所有代码均为隐藏代码,包括全局变量,全局函数,这些全局的内容均不应该对全局变量造成污染
       3. 如果一个模块需要暴露一些API 提供给外部使用,需要通过exports导出,exports是一个空对象,你可以为该对象添加任何需要导出的内存。
       4. 如果一个模块需要导入其他模块,通过require实现,require是一个函数,传入模块的路径即可返回该模块导出的整个内容
       注意: nodejs 中导入模块,使用相对路径,并且必须以./ 或 ../ 开头
    nodejs 对CommonJS的实现
    为了实现CommonJS规范,nodejs对模块做了以下处理:
      1. 为了保证高效的执行,仅加载必要的模块。nodejs只有执行到require函数才会加载并执行模块
      2. 为了隐藏模块中的代码,nodejs执行模块时,会将模块中的所有代码放置到一个函数中取执行,以保证不污染全局变量
      (function(){})();
      3. 为了保证顺利的导出模块的内容,nodejs做了一些处理:
        1. 在模块开始执行前,初始化一个值为module.exports = _+
        2. module.exports 即模块的导出值
        3. 为了方便开发者便捷的导出,nodejs在初始化完module.exports 后, 又声明了一个变量 exports = module.exports
        (function(module){
            module.exports = {};
            var exports = module.exports;
            // 模块中的代码
            return module.exports;
        })()  
      4. 为了避免反复重复加载同一个模块,nodejs默认开启了模块缓存,如果加载的模块已经被加载过了,则自动使用之前的导出结果    
   ===================es6导入=================================
   模块的引入:
    注意: 这一部分非模块化标准, 目前浏览器使用以下方式引入一个ES6模块文件:
     <script scr="入口文件" type="module">
    ES6模块导入导出分为两种:
     1. 基本的导入导出
     2. 默认的导入导出
    基本的导出:
    类似于 export.xxx
    使用方法:
    export 声明表达式
     例如: export const a = 1 // 导出a,值为2, 类似CommonJS中的exports.a = 1
            export function test() {} // 导出test,值为一个函数,类似CommonJS中的 exports.text = function(){}
     export {} 
    例如: const a = 18; export {age} // 将a 的名称当作导出的名称,将a的值当作导出的值
    由于基本导出必须具有名称,所以要求导出的内容必须跟上声明表达式或具名符号
    基本导入:
    由于使用的是依赖预加载,因此,导入的任何其他模块,导入代码必须放置到所有代码之前
    对于基本导出,如果要进行导入,使用下面的代码:
    import {导入的符号列表} from "模块路径"
     例如: import {name, age} from "a.js"
     注意:
      1. 导入的时候,可以通过关键字as 来进行重命名
      2. 导入时使用的符号是常量,不可以修改
      3. 可以使用*号导入所有的基本导出,形成一个对象
    默认的导入导出
    默认导出:每个模块,除了允许有多个基本导出之外,还允许有一个默认导出,默认导出类似于CommonJS中的module。exports,由于只有一个,因此无需具名
    具体的语法是:
    export default 默认导出的数据
     例如: export default 123
    或者export {默认导出的数据 as default} 
    由于每个模块仅允许只有一个默认导出,因此,每个模块只能有一个默认导出 
    默认导入:
    需要想要导入一个模块的默认导出,使用下列语法:
    import 接受变量名 from "路径"
    注意: 如果使用*号,会将所有的默认导出聚和到一个对象里面
相关文章
|
4月前
|
JavaScript 前端开发 开发工具
ES6模块化
【10月更文挑战第11天】 ES6模块化是JavaScript中重要的代码组织方式,通过`import`和`export`实现模块间的功能导入与导出,具备独立作用域和静态特性,有效提升代码的可读性、可维护性和复用性,支持动态导入和循环依赖处理,是现代JS开发的关键技术。
|
4月前
|
JavaScript 前端开发
在实际开发中,如何选择使用 ES6 模块还是 CommonJS 模块?
【10月更文挑战第11天】 在选择 ES6 模块还是 CommonJS 模块时,需考虑项目需求、团队经验、运行环境、库兼容性、构建工具、代码可读性和性能等因素。ES6 模块适合大型项目,提供更好的模块管理和可读性;CommonJS 模块则适用于旧环境和特定库。
|
4月前
|
JavaScript 前端开发 Java
VUE学习四:前端模块化,ES6和ES5如何实现模块化
这篇文章介绍了前端模块化的概念,以及如何在ES6和ES5中实现模块化,包括ES6模块化的基本用法、默认导出与混合导出、重命名export和import,以及ES6之前如何通过函数闭包和CommonJS规范实现模块化。
185 0
VUE学习四:前端模块化,ES6和ES5如何实现模块化
|
6月前
|
缓存 JavaScript 前端开发
|
9月前
|
JavaScript 前端开发
js开发:请解释什么是模块化(modularization),并说明如何在JavaScript中实现模块化。
模块化将复杂系统拆分为松散耦合的模块,提高代码可读性、可维护性、可复用性和可扩展性。JavaScript模块化历经CommonJS(Node.js中常见,使用`require()`和`module.exports`)、AMD(RequireJS,异步加载,`define()`和`require()`)和ES6 Modules(官方标准,`import`和`export`)三个阶段。打包工具如Webpack、Rollup处理兼容性问题,使模块化代码能在各种环境中运行。
80 0
|
9月前
|
JavaScript 前端开发
说说你对ES6模块化的理解?和commonJS的区别?
ES6模块化(也称为ES2015模块化)是ECMAScript 6中引入的一种模块化规范,用于在JavaScript中组织和管理代码。它提供了一种更优雅和强大的方式来定义、引入和导出模块。
103 0
|
9月前
|
JavaScript 前端开发 Java
[前端学习]ES6小史
[前端学习]ES6小史
56 0
|
编解码 JavaScript 前端开发
ES6 模块化编程 详解
ES6新特性 模块化编程详解。
143 0
|
前端开发
前端学习案例2-es6的模块化
前端学习案例2-es6的模块化
69 0
前端学习案例2-es6的模块化
|
前端开发
前端学习案例1-es6的模块化
前端学习案例1-es6的模块化
95 0
前端学习案例1-es6的模块化