目的

自从前端和后端分离之后,一个产品的实践好像变的不那么容易,因为你必须要找一个懂后端的人,通常是java PHP,这意味开发成本加大。

不过有人可能会说我能力强,node性能太垃圾,然而产品初期最关键的是快速验证想法的可行性(现在觉得vue在这方面做的比react更好)。但是在两个语言之间切换编程总是很别扭。

再谈ssr,刚开始一直不知道什么是ssr,因为想django,egg都会提供一个默认模版解析的模块,用来动态生成网页。

并且随着前端SPA崛起,更多的渲染逻辑都放在了客户端,就有了CSR(客户端渲染)。

让从现在开始直接写前端的人对ssr感到陌生。

SSR说白了就是在服务器端编译好静态页面,然后发送到客户端。

CSR的优点是跟视图相关的操作一股脑的放在了前端。

  • 优点
    • 页面切换不会打断用户体验,后面页面的变更也是通过数据更改视图,提高页面渲染速度。
  • 缺点
    • 没有了首页加载,也就是用户首次加载会很慢,出现长时间白屏等现象,对于seo不够友好。

纯粹的SSR的优点是对于seo友好,页面快速加载,这方面可以查看hero 生成博客。

  • 优点
    • 页面首次渲染快,对于seo友好
  • 缺点
    • 页面内容每次都需要全量变更,用户体验不好。

那么现在流行的ssr的策略则是,首次加载ssr,后面的加载通过csr请求数据,部分变更完成。

Node全栈开发框架Blitz_Blitz

React SSR 框架 NEXT

NEXT 提供了上面的首次加载SSR后面CSR的解决方案,并通过约定路由,混合SSG(构建时生成)和SSR(服务端渲染)等功能增强用户体验。

但是NEXT 仅仅是一个SSR解决方案,你可以用它搭建一个对于seo友好的前端页面。针对用户并不完全是全栈开发人员,虽然通过一系列配置改动,也可以做到全栈开发。

但仍要花费大量时间去寻找流行的orm框架,团队内约束文件目录命名,api开发规范等,还需要接入性能监控,这些虽然都可以做到,但是其实是很重复的工作,而且需要花费大量成本去做好。

基于NEXT 的全栈开发框架Blitz

Blitz 基于Next 所以便拥有了Next全部的优点。

并且默认集成了

  • orm(对象关系映射)框架 prisma
  • 授权的 passport.js
  • 一个可交互的命令行界面,可以交互当前各种api
  • 一个可视化的数据库网页连接器(不用再找数据库操作软件了)

文档的开篇介绍便说吸取了 Ruby on Rails (这是一个Ruby的web开发框架,崇尚约定优于配置。)

通过约定优于配置,就可以做许多的自动化生成代码

昨晚试水了一下。

初始化项目

首先是安装需要开代理,他会下载github的一些东西,不过生成文件后也可以直接取消,自己通过npm安装依赖,比他的要快。

blitz new test  
# 生成文件后直接不用他的安装依赖,自己安装
# npm install

# 生成数据库结构
blitz db migrate复制代码

然后我们就可以启动服务了

# 在localhost:3000就可以看到应用了
npm start复制代码

Node全栈开发框架Blitz_Blitz_02

Blitz 查看数据库

通常我们经常需要找一个数据库的gui产品来查看我们的数据,但是Blitz自带一个

# 看数据库
npm run studio复制代码

Node全栈开发框架Blitz_Node_03

生成代码

通过 blitz generate 我们可以生成大量模版代码,提高开发效率

blitz generate all project复制代码

生成后需要改下 db/schema.prisma

因为自动生成的模版会带一个name属性,很费解,不过blitz时刻提醒你这是alphe版本,也可以理解。

model Project {
  id        Int      @default(autoincrement()) @id
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
+  name      String?
}复制代码

会自动帮我们生成表单组件,列表页面,详情页面等,也可以选择需要生成什么。

不过暂时没发现如何自定义生成模版,如果有这个表单就会更快。

总结

Blitz 提供了一套开箱即用的全栈开发解决方案,优雅的文件目录约束,让人眼前一亮的交互终端,和数据库操作界面。

从开发成本上来说,极大的降低了开发人员技术选型的成本,快速进入业务开发阶段。

降低代码维护成本,通过约束,再也不用担心代码千人千面,不知道代码目录代表的意思了。

当然也有其不足之处,对于自定义服务支持文档不完善,支持国外多家部署平台Render.com、Vercel 、Heroku,国内服务没有任何支持,不过国内对于前端部署这方面成型的产品好像确实比较少。

细节地方不够完善比如代码生成的模版代码有点死版,不过官方都说了这是 alpha 版本,也是可以接受的。

最后,这是一个未来可期的全栈开发框架,而且有 Ruby on Rails 已经对这种想法做了验证,相信后面的完善,也许Node 就此翻盘,小企业可直接用此降低人工成本,对产品进行快速验证,迭代。