Koajs成长之路--之什么是Koa

650 阅读5分钟

      学习nodejs的小伙伴对于Express会非常熟悉,但对于koa可能有些小伙伴还没接触。我只能用一个字来形容使用koajs的感受,那就是 真香。

      koajs到底香在哪里呢?打开koajs官网,你会发现一个特别有勇气的词语。Koa--基于Nodejs平台的下一代web开发框架。 

       但我们查看Express官网,虽然Express的下载量那是杠杠的高,但人家官网也只是说,Express是一种保持最低程度规模的灵活Nodejs web应用程序框架,为web和移动应用程序提供一组强大的功能。

     人家Express下载量那么大(5月23日查看 weekly downloads为1400万),而koa才71万,连弟弟都算不上。那么koa凭什么敢说自己是下一代Nodejs  web 开发框架呢。

     还得从Koa的来源说起,再看koajs官网简介,Koa是一个新的Web框架,由Express幕后的原班人马打造,致力于成为web应用和api开发领域中的一个更小、更富有表现力、更健壮的基石。通过利用async函数,Koa帮你丢弃回调函数,并有力的增强错误处理。Koa并没有捆绑任何中间件,而是提供了一套优雅的方法,帮助你快速而愉快的编写服务端应用程序。

    通过koajs的官方介绍,我们可以清楚的看到一个连弟弟都不算的框架敢说自己是下一代web框架,敢情就是因为是同一波人又开发的一个新的框架,如果是别人开发的,例如thinkjs、egg.js ,没有一个会那么的不要face。纯属调侃。

    说了这么多,一个团队开发了两个框架,按照我们的理解,肯定后一个框架比前一个要好,肯定会修正前一个框架的不足才对。那么我们的学习顺序究竟应该如何呢?是只学第二个吗?

    其实以一个正在进行的码农来告诉您,两个你还都得学,而且两个都要通读源码,熟悉每个步骤、每个执行的后台原理。

为什么这么说呢?

1、其实Nodejs和其他后端框架的不同之处在于,我们可以完整的看到你引入的别人的npm包的所有代码,而javascript又经历了es5、es6 乃至后续的es n,javascript 也在不断的进步,nodejs 伴随着javascript的进步也在不断的进步。

2、每一个框架都是一个时期的产物,都代表着当前这个时期js能使用的最优境界。作为nodejs web开发人员,其实对于不同时期的语法都应该牢记,但对于最基础的知识更要透彻的掌握。因为在扎实的基础面前,一切语法糖都是弟弟。

3、nodejs的可使用npm包的数量大到你不敢想象,因此我们能做的就是不段的吸收优秀包的思想。如果针对我个人来说,我宁愿将引入的优秀包进行删减之后放进我自己的代码库。不要说不要face,这是一个码农不断进步,不断提升的捷径。踩着别人的肩膀快速的提升自己。

4、express 依然是当前nodejsweb开发框架的老大,虽然都是nodejs的 web开发框架不断的涌现,但是底层一般都是express。 你如果不会express,那么万一哪天一个优秀的公司摆在你面前,就是因为你没注意expres的存在而失去,那么你会懊悔一万年。

5、我们学习的目的是什么?小了说是为了我们的money,也就是市场需要什么,我们就要学什么。另外我们再更进一步的学习思想,为了是下一次不至于被淹没。

      说回重点,本篇是作为koajs框架的成长之路的开篇之作。目的就是忽悠你来学习koa框架,为你将来不至于淹没于大海,为我是可以和大家分享,可以更加深入的树立koa框架的不足,另外就是可以听到小伙伴的不同声音。

先提出几个问题?

1、express 既然是第一代web框架,那么相对于koa 第二代来说,应该下载量更少才对,为啥那么高?

      这就要说到express的优势了,express 可以说是一个拿来就可以用,而且包含了你最常用的功能,一般我们认为框架内置的绝对是效率、质量最高的,另一个就是express的生态太丰富了,要啥有啥。

   可能小伙伴有要说我了,既然这个框架那么优秀,为啥还要开发第二个呢,这就要提到一个神奇的语法糖 async、await,熟悉js异步开发的痛苦的小伙伴会明白想要一个方法同步执行的酸楚。 嵌套加嵌套,最多promise 。 但koa完美的支持async、await,这才是koajs最大的卖点。

2、koajs的源代码数量可能比高产的程序员一天的代码量还要低,一共就包含四个文件,application.js、request.js 、response.js 、context.js 。但仍然被叫做了一个框架,其实这个玩意就不应该叫框架,叫内核更贴切,因为你所有要用到的库基本都不包含,你需要去找、去安装。这不知道应该是好事还是坏事,在现在提倡大而全的背景下,小而美的不一定受欢迎。

最重要的问题,我们要不要学习koajs?   作为我的观点,我们不但要学,而且要学的好,学的精。就算当前公司不使用koa,但我们可以学到他的内核设计思想,学习如何更加优雅的学习async、 await的使用,毕竟现在nodejs对于async、 await的支持那叫一个给力。

张开怀抱拥抱koajs吧,哪怕你当前有一点排斥。但相信我,你学到的都是你自己的,哪怕当前不使用,但一定会在合适的机会给你一个大大的惊喜。

让我们一起踏入koajs的成长之路之旅,但愿随着我们的不断学习,我们的money会越来越多。加油吧,小伙伴们。 奥利给