目前大型互联网公司对于前端工程师的需求越来越大,一些高级的前端岗位依然非常缺人,候选人的面试通过率却非常低。究其原因,这些互联网公司对于前端工程师的要求越来越高,它们希望候选人不局限于掌握浏览器,也要掌握一些偏后端的技能。
对于前端工程师来说,因为其所用的编程语言就是我们熟悉的 JavaScript,所以学习 Node 比较轻松。Koa 是 Node 中使用比较广泛的一个框架,非常值得前端工程师学习。
Koa在业界使用比较广泛,很多知名的BFF框架(比如Egg)都基于Koa实现。如果能够透彻理解Koa,那么对于公司内部或者技术社区里的一些BFF框架就能够轻松驾驭。
1、Koa的诞生
我们先了解一下Node的发展史。Node是在2009年由Ryan Dahl开发的,它基于Chrome的V8 JavaScript引擎,因为具有非阻塞、事件驱动的I/O模型和轻量级环境等特点,所以吸引了不少开发者。重要的是,Node框架可以用JavaScript进行编程,这对于前端开发者来说太友好了。
在Node诞生的第二年,也就是2010年,一款强大的Web框架诞生了,它就是Express。Express集成了中间件、路由、模板等通用能力,在使用上,为开发人员节省了很多时间,提高了开发效率,因而备受青睐。慢慢地,Express的缺点也暴露出来了—内置的能力太多,本身过于臃肿,且不易扩展。在2013年,Express的原班人马决定重新打造一款Web应用框架,于是Koa就诞生了。
Koa不再使用Node的req对象和res对象,而是封装了自己的ctx.request和ctx.response。整体实现简单、巧妙、易于扩展。在Node支持async/await语法后,Koa 2抛弃了generator/yield的写法,运用async/await,使得代码更加优雅。
2、Koa学习顺序
无论是哪种技术或者哪种框架,想要掌握它,第一步就是会使用,不要一上来就看源码,虽然阅读源码是透彻理解的前提,但是最好不要在刚接触时就攻源码,除非这个框架比较简单。
笔者主要从事搭建架构相关的工作,学习并实践过很多知名的开源框架,有千余个业务项目实战经验,那么正确学习Koa的顺序是什么样的呢:
学习Koa的顺序
- 1. 会使用
学习一个新框架之初,会使用是第一步。Koa也不例外,学习Koa的第一步就是要学会如何使用Koa提供的一些功能,比如中间件、创建服务等。我们可以通过阅读官方文档学习使用Koa,需要注意的是,在阅读官方文档的时候,一定要写demo,然后看运行结果,这样对于Koa的理解是有一定帮助的。
- 2. 懂源码
在会使用的基础上,下一步就是懂源码了。在读懂源码的过程中,一方面要全面了解Koa的内部实现,只有扎实掌握Koa的源码,才能在面对实战中一些复杂应用时做到游刃有余。另一方面要学习Koa中的一些优秀设计,将其复用到你的项目里,你就成为一个能力出众的程序员了。
很多互联网公司喜欢考察“八股文”,其实就是在考察开发者的源码能力。以Koa为例,如果可以很快地写出合并中间件、代理对象属性等相关实现,那说明你对相关知识已经掌握得非常好了。其他社区里优秀的框架也一样,如果想全面掌握,还是需要理解源码实现的。
- 3. 善应用
在熟练使用并理解源码后,第三步就是实战了。目前业界很多BFF框架都是基于Koa写的。我们利用Koa解决业务场景中的各种问题,才能把Koa的价值发挥出来。
本书的讲解思路基本符合上述顺序,除了讲解Koa本身,还会介绍如何基于Koa搭建一个企业级BFF框架、如何设计中间件,以及在实现中需要注意哪些问题。虽然从开始搭建一款框架是有一定难度的,但只要耐心学习,就能够在技术上更上一层楼。另外,这样的实战经历也有助于你求职面试。
3、必修的 Hello World 应用:
代码语言:javascript复制const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
ctx.body = 'Hello World';
});
app.listen(3000);
4、如何快速掌握Koa
推荐大家阅读由抖音电商前端架构师刘江虹撰写的《Koa开发:入门、进阶与实战》一书。
这是一本能指导你零基础掌握Koa完整知识体系并深入理解Node.js难点的著作,将带领你在成为全栈工程师的道路上迈出坚实的一步。
本书作者是字节跳动抖音电商团队的前端架构师,曾利用Koa和Node.js等技术从零开发过一款可对标Egg的BFF框架,并在生产环境中能支撑上千个线上服务,在Koa和Node.js方面积累了丰富的经验。
这本书以入门、进阶、实战为学习曲线,从基本用法、底层实现、常见场景解决方案、难点和重点等等角度对Koa和Node.js进行了详细的讲解。
主要知识点:
(1)Koa的基本概念和完整用法,构建完整的Koa知识体系;
(2)Koa的源码实现和底层原理分析;
(3)Koa在实际业务中遇到的问题及其解决方案;
(4)从零搭建一个企业级BFF框架;
(5)BFF框架的架构设计、工程建设以及常见业务场景的解决方案;
(6)Node.js中比较常见但难以理解的概念和知识点;
(7)Node.js底层架构解析。
全书有大量实例和代码,能帮助读者在实践中迅速从新人成长为高手。
读者对象:
(1)想成为全栈工程师的前端技术人员;
(2)希望顺利入职大型互联网公司的前端工程师;
(3)对Node、Koa有学习热情的前端工程师;
(4)对开源技术充满热情的前端工程师