乐趣区

关于css:ES6-中-module-备忘清单你可能知道-module-还可以这样用

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

有幻想,有干货,微信搜寻 【大迁世界】 关注这个在凌晨还在刷碗的刷碗智。

本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,有一线大厂面试残缺考点、材料以及我的系列文章。

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

// 命名导入 / 导出 
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

export const name = 'value';
import {name} from 'some-path/file';

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

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

默认形式

应用默认导出,不须要任何名称,所以咱们能够轻易命名它?

export default 'value'
import anyName from 'some-path/file'

console.log(anyName) // 'value'

❌ 默认形式不必变量名

export default const name = 'value';  
// 不要试图给我起个名字!

命名形式 和 默认形式 一起应用

命名形式 默认形式 能够同个文件中一起应用?

eport const name = 'value'
eport default 'value'
import anyName, {name} from 'some-path/file'

导出列表

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

const name1 = 'value1'
const name2 = 'value2'

export {
  name1,
  name2
}
import {name1, name2} from 'some-path/file'

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

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

// ❌ Export list ≠ Object
export {name: 'name'}

重命名的导出

对导出名称不称心?问题不大,能够应用 a s关键字将其重命名。

const name = 'value'

export {name as newName}
import {newName} from 'some-path/file'

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

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

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

export const name = 'value'

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

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

重命名导入

同样的规定也实用于导入,咱们能够应用 as 关键字重命名它。

const name1 = 'value1'
const name2 = 'value2'

export {
  name1,
  name2 as newName2
}
import {
  name1 as newName1,
  newName2
} from '...'

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

❌
name1; // undefined
name2; // undefined

导入全副

export const name = 'value'

export default 'defaultValue'
import * as anyName from 'some-path/file'

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

命名形式 vs 默认形式

是否应该应用默认导出始终存在很多争执。查看这 2 篇文章。

  • Why I’ve stopped exporting defaults from my JavaScript modules
  • GitLab RFC by Thomas Randolph

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

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

假如你欠敌人一些钱。你的敌人说能够用现金或电子转帐的形式还钱。通过电子转帐付款就像 named export 一样,因为你的姓名已附加在交易中。因而,如果你的敌人健忘,并开始叫你还钱,说他没收到钱。这里,你就能够简略地向他们显示转帐证实,因为你的名字在付款中。然而,如果你用现金偿还了敌人的钱(就像 default export 一样),则没有证据。他们能够说过后的 100 块是来自小红。现金上没有名称,因而他们能够说是你自己或者是任何人?

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

这取决于你是否信赖的敌人?,实际上,这不是解决这一难题的正确办法。更好的解决方案是不要将你的关系置于该地位,免得冒险危及友情,最好还是互相坦诚。是的,这个想法也实用于你抉择 named export 还是default export。最终还是取决你们的团队决定,哪种形式对团队比拟敌对,就抉择哪种,毕竟不是你本人一个人在战斗,而是一个个人?

人才们的【三连】就是小智一直分享的最大能源,如果本篇博客有任何谬误和倡议,欢送人才们留言,最初,谢谢大家的观看。


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

代码部署后可能存在的 BUG 没法实时晓得,预先为了解决这些 BUG,花了大量的工夫进行 log 调试,这边顺便给大家举荐一个好用的 BUG 监控工具 Fundebug。


交换

文章每周继续更新,能够微信搜寻 【大迁世界】 第一工夫浏览,回复 【福利】 有多份前端视频等着你,本文 GitHub https://github.com/qq449245884/xiaozhi 曾经收录,欢送 Star。

退出移动版