Moudle of JavaScript ES6

浏览器延迟加载的两种方式(默认情况下同步加载js脚本)

  • defer 渲染完执行
  • async 下载完执行
  • 但是浏览器加载ES6模块是异步加载的 <script type=‘module’ src=’foo.js’/> 等同于打开defer属性

CommonJS 和 ES6模块对比

CommonJS的一个模块就是一个js文件第一次被require后就会执行整个脚本,然后在内存中生成一个对象。 CommonJS模块输出的是一个值的复制,输出后模块内部变化和输出的值无关,ES6模块输出的是值的动态引用不缓存。 CommonJS模块是运行时加载,ES6模块是编译时输出接口。

  • ES6中不输出任何对象的写法是 export{},只是为了向Node声明自己是一个ES6模块,否则就是CommonJS模块了。
  • 在ES6模块中,默认情况下模块都是在严格模式下运行。
  • 在模块中你可以使用import和export关键字。

import加载模块的查找顺序和require一致

如果import一个CommonJS模块,Node会自动将module.exports属性当作模块的默认输出。

import './foo'
//1st   ./foo.js
//2nd   ./foo/packange.json
//3rd   ./foo/index.js

import 'bar'
//1st   ./node_modules/bar.js
//2nd   ./node_modules/bar/packange.json
//3rd   ./node_modules/bar/index.js
//4th   goto parent folder...

requireES6模块,ES6所有输出接口都会成为输入对象的属性

Node加载模块

they’re clear as what they look down below.

Tags: ,

Categories:

Updated:

Leave a Comment