前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ES6 中 module 备忘清单,你可能知道 module 还可以这样用!

ES6 中 module 备忘清单,你可能知道 module 还可以这样用!

作者头像
前端小智@大迁世界
发布2020-07-13 10:29:35
2430
发布2020-07-13 10:29:35
举报
文章被收录于专栏:终身学习者终身学习者

作者:Samantha Ming 译者:前端小智 来源:medium

点赞再看,微信搜索【大迁世界】关注这个没有大厂背景,但有着一股向上积极心态人。本文 GitHub https://github.com/qq44924588... 上已经收录,文章的已分类,也整理了很多我的文档,和教程资料。

这是一份备忘单,展示了不同的导出方式和相应的导入方式。 它实际上可分为3种类型:名称,默认值和列表 ?

代码语言:javascript
复制
// 命名导入/导出 
export const name = 'value'
import { name } from '...'

// 默认导出/导入
export default 'value'
import anyName from '...'

// 重命名导入/导出 
export { name as newName }
import { newName } from '...'

// 命名 + 默认 | Import All
export const name = 'value'
export default 'value'
import * as anyName from '...'

// 导出列表 + 重命名
export {
  name1,
  name2 as newName2
}
import {
  name1 as newName1,
  newName2
} from '...'

接下来,我们来一个一个的看?

命名方式

这里的关键是要有一个name

代码语言:javascript
复制
export const name = 'value';
代码语言:javascript
复制
import { name } from 'some-path/file';

console.log(name); // 'value'

大家都说简历没项目写,我就帮大家找了一个项目,还附赠【搭建教程】

默认方式

使用默认导出,不需要任何名称,所以我们可以随便命名它?

代码语言:javascript
复制
export default 'value'
代码语言:javascript
复制
import anyName from 'some-path/file'

console.log(anyName) // 'value'

❌ 默认方式不用变量名

代码语言:javascript
复制
export default const name = 'value';  
// 不要试图给我起个名字!

命名方式 和 默认方式 一起使用

命名方式默认方式 可以同个文件中一起使用?

代码语言:javascript
复制
eport const name = 'value'
eport default 'value'
代码语言:javascript
复制
import anyName, { name } from 'some-path/file'

导出列表

第三种方式是导出列表(多个)

代码语言:javascript
复制
const name1 = 'value1'
const name2 = 'value2'

export {
  name1,
  name2
}
代码语言:javascript
复制
import {name1, name2 } from 'some-path/file'

console.log(
  name1,  // 'value1' 
  name2,  // 'value2' 
)

需要注意的重要一点是,这些列表不是对象。它看起来像对象,但事实并非如此。我第一次学习模块时,我也产生了这种困惑。真相是它不是一个对象,它是一个导出列表

代码语言:javascript
复制
// ❌ Export list ≠ Object
export {
  name: 'name'
}

重命名的导出

对导出名称不满意?问题不大,可以使用as关键字将其重命名。

代码语言:javascript
复制
const name = 'value'

export {
  name as newName
}
代码语言:javascript
复制
import { newName } from 'some-path/file'

console.log(newName); // 'value'

// 原始名称不可访问
console.log(name); // ❌ undefined

❌ 不能将内联导出与导出列表一起使用

代码语言:javascript
复制
export const name = 'value'

// 你已经在导出 name ☝️,请勿再导出我
export {
  name
}

大家都说简历没项目写,我就帮大家找了一个项目,还附赠【搭建教程】

重命名导入

同样的规则也适用于导入,我们可以使用as关键字重命名它。

代码语言:javascript
复制
const name1 = 'value1'
const name2 = 'value2'

export {
  name1,
  name2 as newName2
}
代码语言:javascript
复制
import {
  name1 as newName1,
  newName2
} from '...'

console.log(newName1); // 'value1'
console.log(newName2); // 'value2'

❌
name1; // undefined
name2; // undefined

导入全部

代码语言:javascript
复制
export const name = 'value'

export default 'defaultValue'
代码语言:javascript
复制
import * as anyName from 'some-path/file'

console.log(anyName.name); // 'value'
console.log(anyName.default); // 'defaultValue'

命名方式 vs 默认方式

是否应该使用默认导出一直存在很多争论。 查看这2篇文章。

就像任何事情一样,答案没有对错之分。正确的方式永远是对你和你的团队最好的方式。

命名与默认导出的非开发术语

假设你欠朋友一些钱。 你的朋友说可以用现金或电子转帐的方式还钱。 通过电子转帐付款就像named export一样,因为你的姓名已附加在交易中。 因此,如果你的朋友健忘,并开始叫你还钱,说他没收到钱。 这里,你就可以简单地向他们显示转帐证明,因为你的名字在付款中。 但是,如果你用现金偿还了朋友的钱(就像default export一样),则没有证据。 他们可以说当时的 100 块是来自小红。 现金上没有名称,因此他们可以说是你本人或者是任何人?

那么采用电子转帐(named export)还是现金(default export)更好?

这取决于你是否信任的朋友?, 实际上,这不是解决这一难题的正确方法。 更好的解决方案是不要将你的关系置于该位置,以免冒险危及友谊,最好还是相互坦诚。 是的,这个想法也适用于你选择named export还是default export。 最终还是取决你们的团队决定,哪种方式对团队比较友好,就选择哪种,毕竟不是你自己一个人在战斗,而是一个团体?


原文:https://puppet.com/docs/puppe...

代码部署后可能存在的BUG没法实时知道,事后为了解决这些BUG,花了大量的时间进行log 调试,这边顺便给大家推荐一个好用的BUG监控工具 Fundebug

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 命名方式
  • 默认方式
  • 命名方式 和 默认方式 一起使用
  • 导出列表
  • 重命名的导出
  • 重命名导入
  • 导入全部
  • 命名方式 vs 默认方式
  • 命名与默认导出的非开发术语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档