ES模块化的导入和导出

一、为什么要使用模块化的导入和导出?

假如我们在开发项目时,会写很多个js文件,我们需要把这些js文件引用到一个html文件中去,但此时这些文件是没有联系的。如果我们需要在一个js文件中引用另一个js文件的变量或者函数等,就需要使用模块化的导入和导出。总的来说,就是跨域调用。


<body>
    <!--这里使用type="module"就可以把他们分成独立模块
    ,即使这些js文件里有相同名的变量也不会相互影响-->
    <script src="one.js" type="module"></script>
    <script src="two.js" type="module"></script>
    <script src="three.js" type="module"></script>
</body>

二、导出—export的使用

(1)导出变量

//这里是one.js
//导出方式1:先定义变量再导出
var name="小花"
var age="31"
var flag = true
export{
    
    
    name,flag
}

//导出方式2:导出的时候定义变量
export var name = "大喜";
export var age = "30"

(2)导出函数或类

//这里是one.js
function sum(num1,num2){
    
    
    return num1+num2
}
class person1 constructor(name,age){
    
    
    this.name = name;
    this.age= age;
}
//方法一:使用名直接导出
export {
    
    sum,person1}
//方法二:边导出边定义
export function mul(num1,num2){
    
    
    return num1*num2
} 
export class person {
    
      //定义一个类
    height(){
    
    
        consolo.log("162cm");
    }
}

(3)export default 导出

一般来说,我们导出的是什么名字,别人导入使用的就是什么名字。

但某些情况下,一个模块中包含某个功能,我们要让导入者自己来命名,这个时候就可以使用export default了。

注意:export default在同一个模块中,只能有一个


//这里是one.js
const fruit = "西瓜"
export default fruit

//定义一个函数,并导出
export default function(aaa){
    
    
    consolo.log(aaa);
}

三、导入—import的使用

(1)导入变量

//这里是two.js
//导入one.js的name和flag
import {
    
    name,flag} from "./one.js";

(2)导入函数或类

//这里是two.js
//导入one.js中的mul函数和person类
import {
    
    mul,person} from "./one.js"
//使用他们
consolo.log(mul(2,3));
const p=new person(); //使用类
p.height()

(3)export default导入

注意:export default在同一个模块中,只能有一个

//这里是two.js
//这里的shuiguo就是导入者自己命名的
//这个shuiguo只会去寻找export default定义的那个东西
import shuiguo from "./one.js";
consolo.log(shuiguo);

//导入定义的aaa函数并使用
import shuiguo from "./one.js";
shuiguo("苹果")

(4)通过*导入

如果想要摸个模块中所有的信息都导入,一个个导入就显的有点麻烦。

  • 通过*可以导入模块中所有的export变量
  • 通常情况下还的给*起一个别名,方便后续使用
import * as one1 from "./one.js"
consolo.log(one.name,one.age,one.sum);//使用one.js里面的一些变量或者函数

猜你喜欢

转载自blog.csdn.net/weixin_48931875/article/details/107608782