美文网首页
ES6 Module

ES6 Module

作者: 小困的被窝 | 来源:发表于2018-04-10 14:12 被阅读0次

2018-04-10

为什么要添加这一功能:

让JavaScript可以分割成互相依赖的小文件,然后能用简单的方法拼装起来;有利于大型项目的管理。

设计思想:

尽量静态化,解析时加载,解析时就能确定模块间关系以及输入输出的变量。

语法:

export :
export var firstName = 'Michael';
// 或者
var firstName = 'Michael';
export  { firstName }
  • 最好将需要输出的变量放在模块最下方一并输出,一目了然。
function v1 () {}
export {
   v1 as anotherName
}
  • 可以用as重命名输出变量
  • 不能将export放入块级作用域
import:
import { firstName } from './export'
  • 导入名要与被导出模块对外接口名一致
  • import有提升效果,会提升到整个模块头部首先执行
import { firstName as surname } from './export'
  • as重命名
export { es6 as default } from './export';
// 等同于
import { es6 } from './export';
export default es6;
  • 输入输出连写; 推荐下面的写法。
模块的整体加载
import * as variableName from './export';
// 或者
module variableName from './export'
export default
export default function () {
   console.log('foo');
} // 匿名函数
function foo () {
   console.log('foo')
};
export default  foo; // 具名函数

import name from './export' // 即使时具名函数被输出,也会被name这个变量名代替;
console.log(name()); // foo

  • 默认输出
  • 一个模块只能有一个默认输出
import defaultVariable, { notDefault } from './export' // 输出默认和非默认的变量/函数的写法
  • export * 会忽略模块的default方法

commonJs 和 ES6模块加载比较

ES6 commonJs
模块输出是输出值的引用 模块输出是输出值的拷贝
原始值变,输入值改变;且变量只读,不可改变其地址,否则报错 在模块引入后,模块内的任何变化不影响输出后的值
遇到import,不执行模块,而是生成一个动态的只读引用;等到用时,再在模块中取值 require命令第一次加载该脚本,就会执行整个脚本,然后在内存中生成一个对象
不缓存 缓存

相关文章

  • 前端模块化:ES6,CommonJS

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

  • 模块(一) CommonJs,AMD, CMD, UMD

    系列文章导航 模块(二) es6 module typescript module 本文参考Javascript模...

  • js之模块化(3)

    随着ES6 Module的出现,我们在项目中也大概率的采用了ES6 Module的写法,主要是采用import 和...

  • ES6语法

    ES6 Module 在 ES6 Module出现之前,有3种模块化方案 AMD 浏览器端 CMD 服务器端 Co...

  • 2020-04-22

    分类: es6: import / exportcommonjs: require / module.export...

  • CommonJs模块规范中module.exports和expo

    之前简单总结过ES6中的export/import模块规范(ES6中的export/import module 基...

  • 学习webpack【第三章-核心概念2】

    一、Hot Module Replacement 热模块替换 二、使用babel处理ES6 ———————————...

  • 2020-04-16

    #ES6中的两个导出 1、export页面引用时候imprt {module1,module2} from 'xx...

  • webpack-02

    解析ES6和ReactJSX 解析ES6使用的是babel-loader,我们首先需要做在module的rules...

  • BigNumber 讲解

    安装 Browser: Node.js: ES6 module (bignumber.mjs): AMD load...

网友评论

      本文标题:ES6 Module

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