美文网首页
ES6学习(一)--- 模块化

ES6学习(一)--- 模块化

作者: lv_H | 来源:发表于2018-03-18 14:25 被阅读0次

简介

CommoneJS模块化:CommoneJS为代表(Node应用由模块组成,采用CommonJS模块规范)。其主要特点是语法简洁,模块使用同步加载机制,主要使用在服务器端。

异步模块定义(AMD):RequireJS为代表。其主要特点是模块使用异步加载,主要使用在浏览器端。

CommonJS规范

CommonJS规范规定,每个模块内部,module变量代表当前模块。这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。

var a = 5;
var fn = function (value) {
  return value + a;
};
module.exports.a = a;
module.exports.fn = fn;

上面代码通过module.exports输出变量a和函数fn。

require方法用于加载模块。

var example = require('./a.js');

console.log(a.a); // 5
console.log(a.fn(1)); // 6

exports 与 module.exports

为了方便,Node为每个模块提供一个exports变量,指向module.exports。这等同在每个模块头部,有一行这样的命令。

var exports = module.exports;

于是我们可以直接在 exports 对象上添加方法,表示对外输出的接口,如同在module.exports上添加一样。注意,不能直接将exports变量指向一个值,因为这样等于切断了exports与module.exports的联系。

ES6模块规范

不同于CommonJS,ES6使用 export 和 import 来导出、导入模块。

// a.js
var a= 'a';
var b= 'b';
var c= 123;

export {a, b, c};

需要特别注意的是,export命令规定的是对外的接口,必须与模块内部的变量建立一一对应关系。

// 写法一
export var a = 1;

// 写法二
var a = 1;
export {a};

// 写法三
var b = 1;
export {b as a};

export default 命令

使用export default命令,为模块指定默认输出。

// a.js
export default function () {
  console.log('123');
}

export default 和 export 区别:

1.export与export default均可用于导出常量、函数、文件、模块等

2.在其它文件或模块中通过import+(常量 | 函数 | 文件 | 模块)名的方式,将其导入,以便能够对其进行使用

3.在一个文件或模块中,export、import可以有多个,export default仅有一个

4.通过export方式导出,在导入时要加{ },export default则不需要

注意

1.使用export导出需要{},与此相对使用import导入也需要{}

2.使用export default 导出不需要{},与此相对使用import导入也不需要{}

支持状况

ES6为JavaScript带来了模块机制,但ES6的模块机制在当前所有的浏览器及Node.js中均不受支持。但我们可以通过一些编译器来对ES6语法进行转换,从而利用这些新特性给我们项目带来便利:

Babel-Babel是一个ES6语法转换为ES5语法的转换器,其支持对ES6模块语法的转换,包括:异步加载、状态隔离、顶级命名空间隔离等

es6-module-transpiler -将ES6模块编译为AMD规范或者CommonJS规范的模块

ES6 module loader-能支持动态加载ES6风格的模块

Traceur-Google开发的JS转换编译器,目的在于支持更多的JavaScript特性包括ES6模块

相关文章

  • 第4章 ES6模块化

    目标 模块化系统演进 ES6模块化实现 模块化概述 在 ES6 之前,社区制定了一些模块加载方案,最主要的有 Co...

  • 第4章 ES6模块化

    目标 模块化系统演进 ES6模块化实现 模块化概述 在 ES6 之前,社区制定了一些模块加载方案,最主要的有 Co...

  • ES6学习笔记(一)

    最近学习了ES6,被它更简洁的代码编写方式、面向对象以及模块化开发所吸引。ES6有一定的学习成本而且知识点比较琐碎...

  • js模块化规范

    一、js模块化1、模块化规范: script CommonJS AMD CMD ES6 modules 2、scr...

  • 十二、模块化

    1、es6 2、闭包模块化

  • 如何在项目中使用webapck

    随着ES6的推进,从以往的CommonJS和AMD。到如今ES6中的module方案,前端模块化越来越成熟,模块化...

  • 前端模块化:ES6,CommonJS

    前端模块化 共有四种规范 ES6 Module CommonJS AMD CMD ES6 Module ES6模块...

  • 前端模块化

    什么是前端模块化? 前端为什么需要模块化? CommonJS、AMD、ES6、CMD区别是什么? 一、什么是模块化...

  • 当import/export、require/module.ex

    ES6的模块化: import export default common.js的模块化: require mod...

  • ES6模块化

    模块化技术有哪些:- CommonJS(nodejs)、ES6模块化、AMD、CMD等 CommonJS:Comm...

网友评论

      本文标题:ES6学习(一)--- 模块化

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