百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

基于NEXT 的全栈开发框架Blitz(nextcode入门)

ccwgpt 2024-11-03 12:46 80 浏览 0 评论

目的

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

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

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

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

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

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

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

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

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

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

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


渲染过程


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安装依赖,比他的要快。

bash

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

# 生成数据库结构
blitz db migrate

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

bash

# 在localhost:3000就可以看到应用了
npm start


首页图片


Blitz 查看数据库

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

bash

# 看数据库
npm run studio


数据库预览


生成代码

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

none

blitz generate all project

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

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

none

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 就此翻盘,小企业可直接用此降低人工成本,对产品进行快速验证,迭代。

相关推荐

十分钟让你学会LNMP架构负载均衡(impala负载均衡)

业务架构、应用架构、数据架构和技术架构一、几个基本概念1、pv值pv值(pageviews):页面的浏览量概念:一个网站的所有页面,在一天内,被浏览的总次数。(大型网站通常是上千万的级别)2、u...

AGV仓储机器人调度系统架构(agv物流机器人)

系统架构层次划分采用分层模块化设计,分为以下五层:1.1用户接口层功能:提供人机交互界面(Web/桌面端),支持任务下发、实时监控、数据可视化和报警管理。模块:任务管理面板:接收订单(如拣货、...

远程热部署在美团的落地实践(远程热点是什么意思)

Sonic是美团内部研发设计的一款用于热部署的IDEA插件,本文其实现原理及落地的一些技术细节。在阅读本文之前,建议大家先熟悉一下Spring源码、SpringMVC源码、SpringBoot...

springboot搭建xxl-job(分布式任务调度系统)

一、部署xxl-job服务端下载xxl-job源码:https://gitee.com/xuxueli0323/xxl-job二、导入项目、创建xxl_job数据库、修改配置文件为自己的数据库三、启动...

大模型:使用vLLM和Ray分布式部署推理应用

一、vLLM:面向大模型的高效推理框架1.核心特点专为推理优化:专注于大模型(如GPT-3、LLaMA)的高吞吐量、低延迟推理。关键技术:PagedAttention:类似操作系统内存分页管理,将K...

国产开源之光【分布式工作流调度系统】:DolphinScheduler

DolphinScheduler是一个开源的分布式工作流调度系统,旨在帮助用户以可靠、高效和可扩展的方式管理和调度大规模的数据处理工作流。它支持以图形化方式定义和管理工作流,提供了丰富的调度功能和监控...

简单可靠高效的分布式任务队列系统

#记录我的2024#大家好,又见面了,我是GitHub精选君!背景介绍在系统访问量逐渐增大,高并发、分布式系统成为了企业技术架构升级的必由之路。在这样的背景下,异步任务队列扮演着至关重要的角色,...

虚拟服务器之间如何分布式运行?(虚拟服务器部署)

  在云计算和虚拟化技术快速发展的今天,传统“单机单任务”的服务器架构早已难以满足现代业务对高并发、高可用、弹性伸缩和容错容灾的严苛要求。分布式系统应运而生,并成为支撑各类互联网平台、企业信息系统和A...

一文掌握 XXL-Job 的 6 大核心组件

XXL-Job是一个分布式任务调度平台,其核心组件主要包括以下部分,各组件相互协作实现高效的任务调度与管理:1.调度注册中心(RegistryCenter)作用:负责管理调度器(Schedule...

京东大佬问我,SpringBoot中如何做延迟队列?单机与分布式如何做?

京东大佬问我,SpringBoot中如何做延迟队列?单机如何做?分布式如何做呢?并给出案例与代码分析。嗯,用户问的是在SpringBoot中如何实现延迟队列,单机和分布式环境下分别怎么做。这个问题其实...

企业级项目组件选型(一)分布式任务调度平台

官网地址:https://www.xuxueli.com/xxl-job/能力介绍架构图安全性为提升系统安全性,调度中心和执行器进行安全性校验,双方AccessToken匹配才允许通讯;调度中心和执...

python多进程的分布式任务调度应用场景及示例

多进程的分布式任务调度可以应用于以下场景:分布式爬虫:importmultiprocessingimportrequestsdefcrawl(url):response=re...

SpringBoot整合ElasticJob实现分布式任务调度

介绍ElasticJob是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目ElasticJob-Lite和ElasticJob-Cloud组成。它通过弹性调度、资源管控、...

分布式可视化 DAG 任务调度系统 Taier 的整体流程分析

Taier作为袋鼠云的开源项目之一,是一个分布式可视化的DAG任务调度系统。旨在降低ETL开发成本,提高大数据平台稳定性,让大数据开发人员可以在Taier直接进行业务逻辑的开发,而不用关...

SpringBoot任务调度:@Scheduled与TaskExecutor全面解析

一、任务调度基础概念1.1什么是任务调度任务调度是指按照预定的时间计划或特定条件自动执行任务的过程。在现代应用开发中,任务调度扮演着至关重要的角色,它使得开发者能够自动化处理周期性任务、定时任务和异...

取消回复欢迎 发表评论: