我是靠谱客的博主 美丽画笔,最近开发中收集的这篇文章主要介绍import原理与require有什么不同,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

import 原理(实际上就是ES6 module的原理)

1.简单来说就是闭包的运用

2.为了创建Module的内部作用域,会调用一个包装函数

3.包装函数的返回值也就是Module向外公开的API,也就是所有export出去的变量

4.import也就是拿到module导出变量的引用

与require的不同

1.CommonJS模块输出的一个值的拷贝,ES6模块输出的是值的引用

2.CommonJS 模块是运行时加载,ES6模块是编译是输出接口

CommonJS是运行时加载对应模块,一旦输出一个值,即使模块内部对齐做出改变,也不会影响输出值。

// a.js
var a = 1;
function changeA(val) {
    a = val;
}
module.exports = {
    a: a,
    changeA: changeA,
}

// b.js
var modA = require('./a.js');
console.log('before', modA.a); // 输出1
modA.changeA(2);
console.log('after', modA.a); // 还是1

而ES6模块则不同,import导入是js引擎对脚本静态分析时确定,获取到的是一个只读引用。等脚本增长运行时,会根据这个引用去对应模块中取值。所以引用对应的值改变时,其导入的值也会变化。

最后

以上就是美丽画笔为你收集整理的import原理与require有什么不同的全部内容,希望文章能够帮你解决import原理与require有什么不同所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部