import和require及export和module.exports区别

import和require是不同的js规范,import为ES6中的导入模块方式,require为CommonJS标准,这两个玩意常常搞混,不知道道理是什么标准。
CommonJS 使用的是 module.exports = {} 导出一个模块对象,require(‘file_path’) 引入模块对象;
ES6使用的是 export 导出指定数据, import 引入具体数据。
其实export相当于一个关键字,其实就相当于module.exports,module是代表当前对象,exports代表这个js对象的一个属性,这个属性就是要向外暴露的属性,方便给外部调用。其实有点类似于JAVA中的private,public关键字。
以下是一些常见的问题。

1、为何有的地方可以直接import aa from ‘…/…/xx.js’ 而有的地方为import { myfun } from ‘…/…/myfun.js’,增加大括号的作用是什么?

我们常看到有些代码在import时不用加大括号,其实是因为他在导出时使用了export default,也就默认导出方式,这样aa可以是任意名称,不用一定是导出的方法名,因为它知道把变量指向那个方法,如果没有default,那么必须加大括号,而且里面的名称必须是导出方法中的名称,不然会出现找不到方法的错误。大括号可以被认为是导入那些方法,因此名称必须要指定。

2、export 是否可以多次使用,怎么导出多个方法

通常在一个js文件中我们可能不只有一个方法,我们可能有多个方法需要导出,这样我们可以写成

export function funa(){
    
    
	console.log("aaa");
}
export function funb(){
    
    
	 console.log("bbb");
}

或者

function funa(){
    
    
	console.log("aaa");
}
function funb(){
    
    
	 console.log("bbb");
}
export {
    
     funa,funb }

然后在要引用的js文件中使用import { funa,funb } from ‘…/myFun.js’ 就可以了。要注意的是我们不能写成export funa,funb 或者export funa;export funb; 看来export后面只能是一个对象。

猜你喜欢

转载自blog.csdn.net/weixin_36557877/article/details/129485185