唯品秀前端博客

以为Es6,javascript第一次支持了module。ES6的模块化分为导出(export)与导入(import)两个模块,其中在项目中,我们会经常看到一种用法import * as obj from,这种写法是把所有的输出包裹到obj对象里。

示例一

1
2
3
4
5
6
7
// index.js
export function fn1(data){
  console.log(1)
}
export function fn2(data){
  console.log(2)
}
1
2
3
import * as Fn from './index.js'
Fn.fn1()  // 1
Fn.fn2()  // 2

示例二

1
2
3
4
5
6
7
8
9
10
let myName = "Jon";
let myAge = 18;
let myfn = function(){
    return "我是"+myName+"!今年"+myAge+"岁了"
}
export {
    myName as name,
    myAge as age,
    myfn as fn
}

接收的代码

1
2
3
4
import {fn,age,name} from "./test.js";
console.log(fn()); //我是Jon!今年19岁了
console.log(age); //19
console.log(name); //Jon

或者写成

1
2
3
4
import * as info from "./test.js"; //通过*来批量接收,as 来指定接收的名字
console.log(info.fn()); //我是Jon!今年18岁了
console.log(info.age); //18
console.log(info.name); //Jon

示例三

重命名export和import,如果导入的多个文件中,变量名字相同,即会产生命名冲突的问题,为了解决该问题,ES6为提供了重命名的方法,当你在导入名称时可以这样做。

1
2
3
4
5
6
7
8
9
10
/*************test1.js*****************/
export let myName = "我来自test1.js";
/*************test2.js*****************/
export let myName = "我来自test2.js";

/*************index.js****************/
import {myName as name1} from "./test1.js";
import {myName as name2} from "./test2.js";
console.log(name1); //我来自test1.js
console.log(name2); //我来自test2.js

示例四

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# a.js导出单个特性
// 导出一个变量
export let name = 'Jack';
// 导出一个函数
export function numProduct(num1, num2) {
  return num1 * num2;
}
// 导出一个类
export class Person {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
  calcArea() {
    return this.height * this.width;
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# b.js
import { name, numProduct, Person } from './a.js';  // {}中的变量名要与export导出的变量名保持一致
console.log(name);  // Jack
console.log(numProduct(1, 7));  // 7
let p = new Person(10, 20);
console.log(p.height, p.width, p.calcArea());  // 10 20 200
 
 
// 导出的变量较多时可以使用*通配符代替变量名
import * as all from './a.js';
console.log(all);
 
console.log(all.name);
console.log(all.numProduct(1, 7));
let p = new all.Person(10, 20);
console.log(p);
console.log(p.height, p.width, p.calcArea());

导出默认值export default(只能有一个)

a.js中导出

1
2
const x = 1024;
export default x;

b.js中导入

1
2
import y from './a.js';  // 此处的变量名不加{},不需要与export default后面的名称保持一致,导入者可以直接重命名
console.log(y);  // 1024

其它

本站所有文章、图片、资源等如无特殊说明或标注,均为来自互联网或者站长原创,版权归原作者所有;仅作为个人学习、研究以及欣赏!如若本站内容侵犯了原著者的合法权益,可联系我们进行处理,邮箱:343049466@qq.com
赞(9) 打赏
标签:

上一篇:

下一篇:

相关推荐

0 条评论关于"浅谈ES6中import * as xxx from几种常见导出基本用法"

表情

最新评论

    暂无留言哦~~
谢谢你请我吃鸡腿*^_^*

支付宝扫一扫打赏

微信扫一扫打赏