import和require的使用
文章类型:Javascript
发布者:hp
发布时间:2024-12-02
在前端开发过程中,我们随处可见import,require方式,拿来就使用,那么,两者有什么区别呢?
1:定义:是CommonJS模块规范,主要运用于Node环境
2:规则:require 执行时会把导入的模块进行缓存,下次再调用会返回同一个实例
3:执行情况:require默认是同步的,(并非绝对,Webpack中能使用 require.ensure 来进行异步加载模块)
1:定义:是Es6模块规范,主要应用于现代浏览器和现代JS开发
2:规则:import默认是静态编译的
3:执行情况:默认同步,有引用提升置顶效果,(通过import()动态引入是异步的哦,并且是在执行中加载的)
1:场景:导入模块(也就是三方库),导入本地模块
2:代码:
const os = require('os');
// 使用
os.platform()
module.exports = {
add: (a, b) => a + b,
};
3:兼容性:Node.js14 之前是默认模块系统。目前的浏览器基本是不原生支持 CommonJS,都是需要通过构建工具(如 Webpack )转换才行
1:场景:静态引入,动态引入
2:代码:
import test from '@/components/test.vue';
{
path: '/',
name: 'test',
component: () => import('@/components/dutest.vue')
},
<script setup>
const MyTest = await import('@/components/MyTest.vue');
</script>
3:兼容性:import是ES6规范,并且Node.js在Node.js12开始支持ES6,Node.js14 之后是默认选项。
1:import 和 import() 都是 ES6 中用于导入模块的语句,而 require() 则是 Node.js 中用于导入模块的函数
2:使用 import 语句导入模块时,模块会被静态加载,:编译时确定了导入的模块;import() 和 require() 都是动态加载。运行时根据需要加载模块。
3:import 和 import() 语句支持模块的默认导出和命名导出,而 require() 只支持模块的默认导出 (module.exports) 导出
4:import() 是基于 Promise 的异步加载,而 require() 是同步加载模块
1:import 是同步的,import() 是异步的。
2:import 用于在静态环境中导入模块的关键字,它是在代码加载阶段执行的,import() 用于在动态环境中导入模块的函数,它是在运行时执行的。
3:import() 函数返回一个 Promise,可以在 Promise 的 then 方法中使用导入的模块。
1:静态执行是指在编译阶段就能够确定其执行结果的代码执行方式,动态执行是指在运行时才能确定其执行结果的代码执行方式。
2:import语句是静态执行的,在编译阶段确定所导入的模块,在运行时快速加载,require函数是动态执行的,在运行时才能够确定所需的模块,需要动态地加载
3:import语句是静态执行的,在代码中不能使用变量或表达式作为模块路径,只能使用字符串字面量。而require函数则可以接受变量或表达式作为模块路径,从而动态地确定所需的模块