• 2019年NodeJS框架Koa和Express选型对比


    致敬原作者

     +

    Koa和Express都是NodeJS的主流应用开发框架。

    Express是一个完整的nodejs应用框架。Koa是由Express团队开发的,但是它有不同的关注点。Koa致力于核心中间件功能。nodejs中间件是访问请求对象(req)和响应对象(res)的例程。这些例程在路由处理程序之前被调用,因此它们位于客户端与生成响应的路由逻辑的“中间”。nodejs应用程序可以将中间件例程“链接”到自定义请求/响应管道中。管道可以根据请求和响应进行操作,包括头和主体。Express和Koa都包含中间件,但实现方法却截然不同。

    核心Koa模块只是中间件内核。而Express包含一个完整的应用程序框架,具有路由和模板等功能。Koa确实有这些功能的选项,但它们是单独的模块。因此,Koa的模块化程度更高;您只需包含所需的模块即可。核心KOA模块只有大约2千行代码,因此,如果您只需要核心请求应答上下文对象,则Koa占用空间非常小。相比较而言,Express较为庞大,内置了一整套中间件功能,好处是对于大部分应用场合你可以省掉自己选择和组合模块的时间。

    Koa对Express进行了扩展,并充分利用了ES7新的语法。Koa的Context对象是对Express核心请求和应答对象的扩展,另外利用async/await来消除回调(callback)陷阱。

    回调的语法类似如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    function myFunction(params, callback){ 
        //make async call here  
        asyncCall(params, function(res) { 
            callback(res); 
        }) 
    myFunction(myParams, function(data){   
        //do something with 'data' here 
    })

    异步语法async/await类似如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    async myFunction(){
        try {
            let res = await asyncCall();
            return res;
        }
        catch(err){
            console.log("Error: " + err);
        }
    }
     
    let result = await myFunction();

    回调陷阱(大量嵌套的回调函数)问题这里略过,写过大型JS应用的,应该都深有体会,下面的async/await语法除了执行顺序更加清楚之外,异常处理也更容易。对异步问题的处理方式是Koa和Express两者一个显著区别。

    关于性能,这两个框架相差无几,Koa略好,这里略过具体的测试用例了,基本上都能达到几千req/s。

    最后简单总结下,如何选型:

    1. 如果是新项目,运行环境对ES7语法没有限制,对性能比较看重,团队有较高的定制化需求和技能,那么优先选择Koa;

    2. 如果是Express的老项目,那么建议继续使用Express,没必要只是为了用新技术而来迁移,Koa和Express也不那么兼容;

    3. 如果你不想自己选择和搭建各种模块组件并有可能需要处理兼容问题,而喜欢一体的、快速集成开发,那么选择Express,Express是一套成熟的应用开发框架,而不仅仅提供核心模块

  • 相关阅读:
    python基础语法3 元组,字典,集合
    python基础语法3 整形(进制转换),浮点,字符串,列表
    python基础语法2 流程控制 if,while,for
    python基础语法1 用户交互,基本数据类型,格式化输出,运算符
    编程语言和python介绍, 变量,小整数池,垃圾回收机制
    计算机基础
    python奇闻杂技06 基于百度大脑AI的人工智能,百度颜值检测,语音合成与识别
    python奇闻杂技05 爬虫初步学习+jieba分词+词云库+哔哩哔哩弹幕爬取示例(数据分析pandas)
    python奇闻杂技04 列表,元祖,统计值计算示例,py文件转为EXE文件,爬虫初步学习
    python 基础 字符串格式化
  • 原文地址:https://www.cnblogs.com/leolovexx/p/12212552.html
Copyright © 2020-2023  润新知