JavaScript 高手都知道的 10 件事
照片来源 Unsplash 的 Nathz Guardia
我猜你一定是一个前端工程师。也许你有一份满意的工作并且如鱼得水,也或许是一名自由职业者。这一行前景不错,如我之前描述的 传送门英文。当然也可能你刚刚入行,或者已经编程有一段时间了。不管怎样,获取并阅读前沿的技术,很优秀。下面这 10 件事是你成为 JavaScript 高手之前需要掌握的。
1.控制流
这可能是这些观点里最基础的了。当然它很重要,也许是最重要的。如果你还不知道该怎样写代码,那你可要下一点功夫了。了解基本的输入输出在编程里面是不可或缺的。
if else
---如果你连这个也不知道,你之前是怎么写的代码的?switch
---这是if else
的另一个版本,当你有多个不同条件分支的时候它会很有用。for
---不要重复你自己,这就是 for 存在的意义。除了普通的for
循环外,for of
和for in
也很方便。你可以在分支很多的时候使用箭头函数,这样代码会更优雅。for
循环最大的魅力在于它是闭塞的,这意味着你可以放心的在它里面使用async await
。- 高级条件---使用三元运算符和逻辑运算符可以增加你编程时的幸福指数,特别是在你想要在一行内完成一项功能时,这意味着你不想把一些数据存留备用。举个栗子:
// ternary
console.log(new Date().getHours() < 12 ? 'Good Morning!' : 'Time for a siesta')
// logical operators
const isJsMaster = prompt('Are you a JavaScript master?') === 'true'
console.log(isJsMaster && 'proficient coder')
2.异常捕获
理解这些我着实花了一些时间。不管你是前端还是后端,可能在开始的几年或者一直到目前为止,你是使用 console.log
或者 console.error
来做“异常捕获”的。想要写一个健壮的应用,把你懒惰的 log 改成正规的异常捕获。你需要知道怎样构造异常控制器,怎样准确的捕获异常,这样才能找到问题的真正所在。
更新:这篇文章介绍了如何优雅的捕获异常传送门英文
3.数据结构
在持续改进程序的同时,你还需要提前考虑数据架构。因为变动数据不仅影响数据库,还会连带影响函数参数、对象、变量。举个栗子:
const calcShape = (width, height, depth, color, angle) => {...}
const calcShape = ({width, height, depth, color, angle}) => {...}
4.异步
这是 JavaScript 里面非常重要的一个部分,不论是获取数据还是处理其它异步请求。在几乎所有的案例里,你都会涉及到异步。如果你一知半解,你可能会发现很多诡异的错误,修复他们会耗费你大把的时间。如果你熟悉它,但是没有精通,那么恭喜你掉入了回调地狱。最好的方案是在你的应用里使用 promise 或者 async await
。
5.DOM 操作
这是一个有趣的主题。如今开发者常常会把它丢在一旁。也许是学习了 JQuery 然后就觉的在也不需要掌握原生 DOM 操作技能,也许是正在使用一个高级的前端框架,很少需要手动操作DOM。不管怎样,我认为这是理解 JavaScript 的关键,包括后端人员。了解 DOM 怎样工作以及怎样访问 DOM 元素会让你对网页的原理有更深的理解。另外,还有一个原因,即使是你用上了高大上的前端框架,在 packages.json
里加入 JQuery 只是为了访问 DOM 元素这有点说不过去吧。
图片来源 Unsplash 的 LinkedIn Sales Navigator
6.Node.js / Express
即使是做为前端开发者,你也应该了解 node.js。理想情况下,你应该知道怎样构建一个简单的 express 服务器以及添加更改路由。JavaScript 同时也是帮助你工作自动化的一个超级棒的脚本语言。因此,了解了文件读写、工作路径以及流,你会发现你多了一个能做很多事的工具。
7.函数式编程
面向对象编程和函数式编程的争论由来已久。其实你可以用两种编程方式达到相同的目的。在 JavaScript 里尤为简单,因为它两种方式都能 hold 住。之前类似于 lodash 的库可以方便的提供函数式编程的范例。今天,你甚至都不需要任何额外的库。因为一些重要的函数已经被 JavaScript 规范实现了。相信你也听过 map reduct filter forEach find
这些骚操作了吧。
8.面向对象编程
和函数式编程类似,你也需要熟悉面向对象编程。很长一段时间我忽略了这点,我只是以我自己的方式用我自己的解决方案,但是后来发现使用 objects/classes 以及 instances 来实现一些功能超级方便。Classes 现在已经被 React、MobX 等广泛的应用了。
9.前端框架
最火的三个框架 React.js、Angualar、Vue.js。如果你要找一份前端工作,几乎所有的要求里会看到要至少掌握其中之一。它们更新的很快,但是熟悉它们的基本概念,了解它们如何工作很重要。同时,用它们来写应用超级方便。如果你还没有决定学习哪一个,我的建议是 React.js。我已经用了好多年,现在为止从没后悔过我的选择。
10.打包 / 编译
很不幸,这是前端开发里的一大块。一方面,我不该说不幸,因为使用这些新特性写代码很高效。另一方面,我说不幸的原因是这些新特性不被老旧的浏览器支持,我们不得不把这些代码编译成老旧浏览器能支持的代码。如果你是 node.js 开发者,你可能很少需要它。流行的编译方案是 babel.js,你需要了解一下。打包就是把你的多个文件编译成一个文件,你有很多选择,很长一段时间 Webpack 都是不二的选择。不久前,parcel 横空出世,成为了我的最爱,它性能更佳配置很方便,即使它现在还不完美。
额外赠送:正则表达式
这不是 JavaScript 的规范,但是在某些场景很有用。学习它会花费一定的时间,而且记住那些复杂的规范几乎是不可能的。
更新:测试
正如 Paul Kamma 指出的那样,测试在软件开发里是很重要的一环,JavaScript 也不例外。编程中,(希望)你每次在发布新功能前要好好测试一下,哪怕是手动的。一个好的习惯是使用自动化测试,有很多不同种类的测试如:单元测试、端到端测试、加载测试、安全测试、前端测试(测试组件是否被挂载)。同时也有很多不同的测试环境如,enzyme、jasmine、mocha、chai 等,目前我的最爱是 ava.js,赶紧行动起来自动化测试一下你的代码吧。
希望你已经掌握上面列出的所有的主题了。如果没有,行动起来,做一个 JavaScript 高手。绝对值得。记住练习很重要,如果你还不熟悉这些概念或者知道它们但是还没有真正的应用它们,那么它们从未属于过你。
你有什么看法,我有什么遗漏的吗?你认为别的主题会更重要吗?评论留言吧。
关于作者:Lukas Gisder-Dubé 一家创业公司的联合创始人,做了 1 年半的 CTO,构建了技术部以及系统加架构。离开这家创业公司后, 在 Ironhack 任首席讲师,现在在 Berlin 成立了创业咨询机构。点击 dube.io 了解更多。
原作者授权翻译