Node.js框架对比及应用方案

 

一、 Node.js 框架对比

(一)基础框架Koa vs Express

  

  Express,基于Node.js平台,快速、开放、极简的 web 开发框架。

  自从2009年第一次提交,经过多年发展,是最为成熟的框架。使用内置的路由,模板等模块可以很简单地架起一个服务。

  Express 是基于 callback 来组合逻辑。Callback 有两大硬伤,一是不可组合,二是异常不可捕获。造成callback hell问题。

  

  koa 是由 Express 原班人马打造的,致力于成为一个更小、更富有表现力、更健壮的 Web 框架,是node框架发展的趋势。与express不同点有:

  koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量的函数库,使得编写应用更轻松,可以自行选择功能中间件,更体现了模块化。

  基于node ,ES6的新特性,promise等处理异步函数,可以免除重复繁琐的回调嵌套,并极大地提升错误处理的效率。

 

  对比:1、express发布时间早,相比koa发展较为成熟。2、对异步回调的处理,koa可以使用async/await 从语法层面避免回调地狱问题。3、Koa体量小,文档清晰,有更好的编码体验。

(二)MVC框架 Thinkjs vs Egg.js

  ThinkJS 从 3.0 开始,框架底层基于 Koa 2.x 实现,兼容 Koa 的所有功能。

  特性:

  • 基于 Koa 2.x,兼容 middleware
  • 内核小巧,支持 Extend、Adapter 等插件方式
  • 内置自动编译、自动更新机制,方便快速开发
  • 性能优异,单元测试覆盖程度高
  • 使用更优雅的 async/await 处理异步问题
  • 从 3.2 开始支持TypeScript

  

  Egg.js 为企业级框架和应用而生。

  特性:

  • 提供基于 Egg 定制上层框架的能力
  • 高度可扩展的插件机制
  • 内置多进程管理
  • 基于 Koa 开发,性能优异
  • 框架稳定,测试覆盖率高

  从特性来看,两个框架都基于Koa,使用ES6/7语法处理异步回调,兼容中间件模式,支持可扩展的插件机制,提供便捷的本地开发调试方法。

二、 Node服务应用方案

  Node服务主要提供接口和页面渲染服务。

  使前后端开发工作分离,具有提升开发效率,页面的接口调用速度,首屏时间,利于SEO优化等优势。

(一)纯模板引擎渲染页面

1、选用模板引擎

  基于 node 的模板框架比较流行的有jade、EJS、handlebars、Nunjucks等

  对模板引擎的基本期望是:

    1、所见即所得,可直接拿前端切好的页面当作模板

    2、语法简单,学习成本低,易上手

    3、基础功能完善,如标签转义、字段过滤等

    4、扩展性强,速度不要太慢

  

  Jade/pug代码简洁,靠行间缩进区分标签,学习成本稍高。

2、搭建脚手架, MVC分层

  选取node框架,中间件,分层构建路由、接口服务、页面模板、静态资源。在node环境中实现路由控制,业务逻辑。

3、渲染依赖于计算,配合缓存策略

  静态页面及资源:利用http协议,在浏览器端配置较长时间的缓存

  动态内容页面:采用微缓存,在服务端设置较短的缓存时间

  含有接口数据的页面:异步渲染,提前将模板组合渲染成半成品页面,在用户访问时,调取数据结合缓存模板进行渲染。

 

(二)结合Vue框架,实现服务端渲染

  Vue.js 是构建客户端应用程序的框架,默认情况下,可以在浏览器中输出 Vue 组件。结合Node服务,可以将同组件在服务端渲染为 HTML 字符串(静态页面),将它们直接发送到浏览器,最后在客户端初始化将静态标记"混合"为具有交互功能的应用程序。

特点:

  更快的内容到达时间(time-to-content),页面到达客户端即可渲染展示,减少了客户端对于js文件的请求和编译执行时间,对于数据接口的请求时间,前端的模板解析时间。

  提高开发效率,路由,模板,数据等大多在vue框架内完成,正常开发过程中需要的技术栈比较熟悉。

  更好的SEO,搜索引擎爬虫抓取工具可以直接查看完全渲染的页面。

  前后端路由渲染相结合,配合缓存策略,相比纯模板渲染具有性能优化的潜力。

缓存策略:

  页面级别缓存(Page-level Caching):包含动态内容,且不是用户特定(user-specific),我们可以利用名为微缓存的缓存策略。

  组件级别缓存(Component-level Caching):对于循环使用组件,如列表组件可做组件缓存。

转载于:https://www.cnblogs.com/banyue/p/8462302.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值