Blitz 尚在 beat 阶段! 🎉 预计会在今年的 Q3 季度发布 1.0
Back to Documentation Menu

Blitz.js 宣言

Topics

Jump to a Topic

背景

技术重复循环着“分久必合,合久必分”的准则。2005 年创建的 Ruby on Rails,成 为了主要的“合”的力量。它使 Web 应用开发比以往的任何时候都更容易访问。这让 每个人都有所收益——从学习编程的新手到构建架构体系的老手。

一个重要的“分”的力量发生在 2013 年——只专注于渲染层的 React 诞生。随着 React 越来越受欢迎,所有其它部分的选择也越来越活跃,这让开发人员在启动新的 应用程序时需要作出数百个决定。虽然这导致了 JavaScript 疲劳,但它也一直是前 端快速创新的强大驱动力。

现在,在 2020 年,是另一个“合”的力量的绝佳时机了。开发人员渴望更轻松、更简 单的方式来构建 Web 应用。初学者需要一个引领者来构建一个强大的应用。老年人 需要一个可以消除早期繁琐细节并能提供高度可拓展架构的框架。

因此 Blitz 诞生了。

Blitz 用来做什么?

Blitz 用于构建由小型到大型的有数据库支持全栈应用,这些应用具有一个或多个终 端用户界面,如 Web 或移动应用。

基本原则

  1. 全栈 & 一体式
  2. 不必需要 API
  3. 约定由于配置
  4. 宽松的约束
  5. 易于启动,易于拓展
  6. 稳定性
  7. 社区重于代码

1. 全栈 & 一体式

一个全栈、一体式的应用会比前后端分离开发和部署的应用更简单。一体式并不意味 着它会缓慢或难以拓展到大型团队。一体式并不意味着没有关注点分离。一体式意味 着你可以将你的应用作为单个实体进行推演。

2. API Not Required

到目前为止,为你的 React 视图层选择生态库常要求你拥有 REST 或 GraphQL API,即使第三方都没有使用它。这种额外的复杂性是 Ruby on Rails 等传统服务器 渲染应用所没有的重大不足。

Blitz 是一个适用于员工少于 100 人的公司中 99% 的场景。这些应用绝大多数实际 上并不需要 API,至少直到几年后你有时间和资源来构建 API 时才需要。

3. 约定优于配置

从零建起一个全栈 React 应用目前来说太难。你必须要花费数天时间来配置 eslint、prettier、husky、jest、cypress、typescript、决定文件结构、配置数据 库、添加身份验证和授权、设置路由、定义路由约定以及配置你的样式库。

Blitz 为你做出尽可能多的决定来帮助你提前完成尽可能多的工作。这使得开始真正 的开发变得如闪电般迅速。这也极大地造福了社区。通用的项目结构和架构模式可以 轻松地从 Blitz 应用移动到另一个 Blitz 应用,并立即有宾至如归的感觉。

约定由于配置并不意味着没有配置。这意味着配置是可选的。Blitz 将为你提供各种 定制通道。

4. 宽松的约束

Blitz 很果断。开箱即用的体验引导你步入适合绝大多数应用的完美路线。然而 ,Blitz 并不傲慢。它理解有非常好的理由来偏离惯例,并且允许你这样做。例如 ,Blitz 具有传统的文件结构,但除了少数例外,它不会 强制 这样做。

当没有社区共识时,blitz new 会提示你进行选择。

5. 易于启动,易于扩展

仅在应用程序生命周期的一个环节容易使用的框架不是好的框架。启动和拓展都必须 很容易。

易于启动包括易于初学者和易于将现有的 Next.js 应用程序迁移到 Blitz。

拓展在所有方面都很重要:代码行数、在代码库中工作的人数以及代码执行。

6. 稳定性

在快节奏的 JavaScript 世界中,稳定、可预测的发布周期是一股清流。稳定的发布 周期可确保将破坏性更改降至最低,并确保你确切的了解破坏性更改将发生的内容和 时间。它还通过确保功能处于测试阶段的时间最短,从而最大限度地减少稳定版本中 的错误。Ember 是这方面的模范公民

Blitz 发布周期的确切细节有待确定,但我们将遵循类似于 Ember 的模式,严格遵 循 SemVer,每 6 周发布一次稳定版本,每 6 个月发布一次 LTS。

Blitz 将遵循公共 RFC(意见征求)流程,因此所有用户和公司都可以参与提议和评 估新功能。

如果需要删除 Blitz API,它将会在次要版本中被弃用。主要版本将简单地删除先前 版本中已弃用的 API。

7. 社区重于代码

到目前为止,Blitz 社区是该框架最重要的环节。我们有一个全面 的行为准则。LGBTQ+、女性和少数民族尤其受欢迎。

无论最年轻的还是到最老的,我们都携手与共。我们的相似性都比我们的不同大。我 们应该向其它社区学习,而不是与他们竞争。


Idea for improving this page? Edit it on GitHub.