如何选择正确的Node框架:Next, Nuxt, Nest?

这三个框架都是服务器端渲染,它们分别与React、Vue和Angular(三个目前最流行的前端框架)密切相关

我们的比较将基于一下几点:

  GitHub Stars和npm下载

  安装

  基本的Hello World应用程序

  好处

  缺点

  性能

  社区活跃度

Next

Next是一个React框架,允许使用React构建SSR和静态web应用

start

  GitHub Stars: +36,000

  npm weekly downloads: +300,000

    安装

next react react-dom是必不可少的

npm install --save next react react-dom 

package.json 中添加脚本,如下所示:     

{  

         "scripts": {  

           "dev": "next",  

           "build": "next build",  

           "start": "next start"  

         }  

       } 

next 将读取page目录下的js文件,并解析成页面路由

 Hello World

项目内创建目录文件 ./pages/index.js     

function Home() {  

return<div>Hello world!</div>;  

        }   

         export default Home;     

         // npm run dev  

        // 然后访问 http://localhost:3000 

好处

  默认情况下,每个组件都是服务器渲染的

  自动代码拆分,加快页面加载速度

  不加载不必要的代码

  简单的客户端路由(基于页面)

  基于Webpack的开发环境,支持模块热更新(HMR)

  获取数据非常简单

  支持任何Node HTTP服务器实现,如Express

  支持Babel和Webpack自定义

  能够部署在任何能运行node的平台

  内置页面搜索引擎优化(SEO)处理

缺点

  Next不是后端服务,应该与后台操作独立开

  如果你只想创建一个简单的WEB应用,那么它可能会是牛刀杀鸡

  数据会在客户端和服务器重复加载

  没有实现前后分离的项目,迁移到Next是一件痛苦的事,可能需要双倍工作

    性能

性能基于一下两点

      1、使用Apache Bench测试吞吐量。

      2、使用 lighthouse测试 Preformance、Accessibility、Best Practices、SEO


这是Next基本HelloWorld程序。每秒能处理550.87个请求。每个请求花费的平均时间为18.153ms


ighthouse测试报告中可以看到Preformance、Accessibility、Best Practices、SEO都高于70,虽然比其他两个框架低,但不得不说已经是一个比较好的数据,Best Practices 得分nuxt则是高于其他俩个

社区活跃度

  贡献者数量:678

  Pull Requests: 3,029

  社区相当活跃

Nuxt

Nuxt是一个基于Vue的通用应用框架,预设了利用Vue开发服务端渲染的应用所需要的各种配置,主要关注的是应用的UI渲染

star

  GitHub stars:+19,000

  npm weekly downloads: +100,000

    安装

为了快速入门,Nuxt.js团队创建了脚手架工具 create-nuxt-app     

// 确保安装了npx(npx在NPM版本5.2.0默认安装了)  

npx create-nuxt-app<项目名> 

它会让你进行一些选择:在集成的服务器端框架如:Express、Koa、Hapi、Feathers、Micro、Adonis (WIP);选择您喜欢的UI框架:Bootstrap、Vuetify、Bulma、Buefy等等

 Hello World

Nuxt依据 pages 目录结构自动生成 vue-router 模块的路由配置     

// ./pages/index.vue  

<template>  

<div>  

<h1>Hello world!</h1>  

<NLink to="/about">  

              About Page  

</NLink>  

</div>  

</template> 

好处

  它的主要范围是UI渲染,同时抽象出客户端/服务器分布

  静态渲染、前后分离

  自动代码分层

  服务、模板皆可配置

  项目结构清晰

  组件与页面无缝切换

  默认支持得ES6 / ES7

  支持开发热更新

  路由级别的异步数据获取

  支持静态文件服务

  样式预处:Sass,Less,Stylus等

缺点

  周边资源较少

  开发复杂的组件可能会很麻烦

  自定义配置显得很麻烦

  很多具有副作用的数据操作this.items[key]=value

  高流量可能会给服务器带来压力

  只能在某些挂钩中查询和操作DOM

    性能

Nuxt中的基本HelloWorld应用。每秒能处理190.05个请求。平均一个请求时间为52.619毫秒。在此度量标准上,Nuxt与其他两个框架相比表现最差


 Lighthouse测试报告中Preformance、Accessibility、SEO三项中得分最高


社区活跃

  贡献者数量:191

  Pull Requests:1,385

Nest

Nest是一个渐进式Node框架,深受Angular的启发。用于构建高效,可扩展的Node.服务器端应用程序的框架。使用TypeScript构建,保留与纯JS的兼容性,集OOP(面向对象编程),FP(函数式编程),FRP(响应式编程)一身。服务引擎盖默认使用Express但也提供与各种其他库的兼容性,例如Fastify,允许轻松使用可用的无数第三方插件

    安装

nest提供cli使用该cli命令安装Nest并创建新项目     

npm i @nestjs/cli  

       nest new project-name 

或者,使用Git安装TypeScript启动项目:   

git clone https://github.com/nestjs/typescript-starter.git project  

      cd project  

      npm install  

      npm run start 

    Hello World

使用该npm cli命令创建新项目后,src目录下会出现几个核心文件,main.ts是我们的入口     // 创建一个服务然后监听3000端口  

       import { NestFactory } from '@nestjs/core';  

       import { ApplicationModule } from './app.module';      

        async function bootstrap() {  

constapp = await NestFactory.create(ApplicationModule);  

         await app.listen(3000);  

       }  

       bootstrap();       

        // 启动起来   

       npm start 

好处

  作为基于TypeScript的Web框架,可以进行严格的类型定义

  自动生成Swagger文档

  Nest中的文件夹结构主要基于Angular

  基于模块的框架,代码可复用

  项目结构清晰,只需要关注业务无需关注架构

  使用最新版本的TypeScript,意味着JS的型特性基本都可用

  为开发人员提供更少的上下文切换。从Angular代码到Nest的过渡相对容易

  与Angular类似,Nest也有一个不错的命令行工具

缺点

  缺乏文档。该框架与其他框架有很好的集成,但文档很少

  背后没有大型企业的支持力

  总体而言,与其他框架相比,Nest的社区规模较小

    性能

Nest中的基本HelloWorld应用。每秒能处理928.18个请求。每个请求的平均时间为10.774毫秒。在此指标上,Nest在我们比较的三个框架中表现最佳


Lighthouse提供的报告中,Nest具有非常高的性能,但是accessibility, best practices,SEO得分较低


Nest不是最流行的框架但值得一试!

社区参与

  贡献者数量:81

  Pull Requests:469

Next, Nuxt, Nest比较就到这里 Preformance、Accessibility、Best Practices、SEO选择你最想要的那个吧

欢迎工作一到五年的Java工程师朋友们加入Java架构开发:855801563 获取更多免费视频教程。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容