学习javascript中的require、import和export的一点总结

1, AMD和CMD是基于require 来实现的。

2, AMD和CMD两者的不同在于对依赖模块的执行时机处理不同。AMD依赖前置,js可以方便知道依赖模块是谁,立即加载;CMD就近依赖,按需加载,需要使用把模块变为字符串解析一遍才知道依赖了那些模块。

3, AMD和CMD两者都是异步加载,。

4,import模块导入与export模块导出功能相对应,也存在两种模块导入方式:命名式导入(名称导入)和默认导入(定义式导入)。ES2015里的新模块化规范。注意:在node中使用的是exports,不要混淆了。

5,import的语法跟require不同,而且import必须放在文件的最开始,且前面不允许有其他逻辑代码,这和其他所有编程语言风格一致。

6,require的使用非常简单,它相当于module.exports的传送门,module.exports后面的内容是什么,require的结果就是什么,对象、数字、字符串、函数……再把require的结果赋值给某个变量,相当于把require和module.exports进行平行空间的位置重叠。属于CommonJS规范的一部分。

7,ES6发布的module并没有直接采用CommonJS,甚至连require都没有采用,也就是说require仍然只是node的一个私有的全局方法,module.exports也只是node私有的一个全局变量属性,跟标准半毛钱关系都没有。

8,require是赋值过程,其实require的结果就是对象、数字、字符串、函数等,再把require的结果赋值给某个变量import是解构过程;

9,

require / exports :
遵循 CommonJS/AMD,只能在运行时确定模块的依赖关系及输入/输出的变量,无法进行静态优化。
用法只有以下三种简单的写法:

const fs = require('fs')
exports.fs = fs

module.exports = fs 10,

import / export:
遵循 ES6 规范,支持编译时静态分析,便于JS引入宏和类型检验。动态绑定。
写法就比较多种多样:

import fs from 'fs'
import {default as fs} from 'fs'
import * as fs from 'fs'
import {readFile} from 'fs'
import {readFile as read} from 'fs'
import fs, {readFile} from 'fs'

export default fs
export const fs
export function readFile
export {readFile, read}
export * from 'fs'

猜你喜欢

转载自blog.csdn.net/wangrong111222/article/details/79781059