ITADN
gracile-web/gracile
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

🧚 Gracile

一个轻量级的全栈 web 框架。

特性:

  • 得益于 Lit (SSR),可移植的 HTMLCSSJS
  • 得益于 Vite,在开发和构建期间具有高度响应性。
  • runtime 和你的 distributable 具有最小的依赖足迹
  • 拥抱 Custom Elements(又称 Web Components)或 WhatWG Fetch API 等 Web 标准。
  • 构建时提供流畅的 Developer eXperience,而非繁琐的调整。

🏁 快速开始

使用 create gracile@latest 命令引导项目:

npm create gracile@latest
pnpm create gracile@latest
bun create gracile@latest
yarn create gracile@latest

欲了解更多信息,请访问 文档网站 (gracile.js.org)

🌐 面向平台的元框架

Gracile 由 ViteLit SSR 提供支持。

借助它,你可以实现:

  • 基于文件的路由,具备高效的代码分割
  • Server Side Rendering(服务端渲染)
  • Static Site Generation(静态站点生成)
  • Server 集成(Request/Response),适用于 ExpressHono
  • 全栈 Custom Elements(Lit),支持 hydration(水合)
  • Content 网站
  • 多页或单页 Applications(应用程序)
  • 渐进式增强(无 JS 回退、智能 hydration…)
  • 以及更多功能,通过 Add-ons(插件)实现(Markdown、Metadata、SVG…)

所有这一切,仅需少量约定面向标准的方法以及 非常精简的占用空间 🤏。

Web Components、TypeScript、SASS、Lit 以及其他 DX 优势均触手可及; 同时它们仍是可选的。

得益于 Vite 的模块化架构和 Node.js 的通用性,开发者 体验开发和构建生产环境时都得到了全面优化。

易用性

为服务端和客户端编写相同的标记、样式和脚本语言。
即你已在其他地方熟悉并使用的:HTMLCSSJavaScript

简单并不意味着晦涩。你依然掌控全局,无需将灵活性 拱手让给你的框架。

面向标准

秉持平台化思维构建。每当标准可用于某项任务时,都应予以采用。
这也意味着更少的供应商特定惯用法需要维护,以及整体更具可移植性的代码库。
停止重复造轮子,拥抱面向未来的 API,日后你会感谢自己的!

开发者体验

随着开发者对日常工具链期望的提升,DX 标准也在不断提高。
“Vanilla” 社区中散落着许多瑰宝。
Gracile 提供一体化的开箱即用体验,同时将非核心观点保留为_可选_。

约定优于配置

便利性自由度之间找到正确的平衡点颇具挑战性。
希望在全栈 JS 领域,越来越多的模式得以确立。

Gracile 受到那些广泛实践的启发,让你有宾至如归之感。

轻量且无侵入

总而言之,Gracile 框架仅仅是 Vite、Lit SSR 以及一套非常受限的辅助函数和第三方依赖
查看其 npmgraph 上的依赖树, 你会一目了然。
此外,一切设计都旨在尽可能保持你的 Vite 配置纯净。可以在极短时间内增强现有项目,且无任何干扰。

性能

速度并非 Gracile 的主要目标,因为那只是你起步时的合理 默认设置。
避免复杂的模板转换,或精准地交付客户端 JS 只是让 Gracile 成为“用更少做更多”强大工具的诸多方面中的几个。

核心

描述
npm@gracile/gracile全栈 Web 框架 — Vite & Lit SSR
npm@gracile/engine基于 Vite 的构建和开发服务器引擎
npm@gracile/server服务端实用工具和 SSR 辅助函数
npm@gracile/client客户端实用工具和交互辅助函数
npm@gracile/cliCLI 和配置加载器
npmcreate-gracile项目脚手架生成器 (npm create gracile)

附加组件

描述
npm@gracile/markdown带元数据提取的 Markdown 文件导入
npm@gracile/markdown-preset-marked使用 Marked 的 Markdown 预设
npm@gracile/metadata页面头部元数据辅助工具(标题、OG…)
npm@gracile/sitemapSitemap 和 robots.txt 生成
npm@gracile/svgSVG 导入、优化和内联

Labs (@gracile-labs)

描述
npmclient-routerGracile 页面的客户端路由
npmislands支持多框架水合的岛屿架构
npmhmrWeb Components HMR Vite 插件
npmcss-helpersWeb Components 的采用样式表工具
npmbetter-errors增强的错误显示和格式化
npmfunctional基于信号的钩子和上下文原语
npmdevtools用于路由和状态的浏览器内开发面板

Labs — JSX & 模板

描述
npmjsx-forge原生 TS 编译器:JSX 转 HTML 模板字符串
npmvite-plugin-jsx-forgeJSX Forge 的 Vite 插件
npmbabel-plugin-jsx-to-literalsBabel 插件:JSX 转 HTML 模板字符串
npmvite-plugin-babel-jsx-to-literalsJSX→Literals Babel 插件的 Vite 封装

Labs — Literals (@literals)

描述
npmhtml-css-minifier压缩 HTML 模板字符串
npmrollup-plugin-html-css-minifier用于 HTML 字符串压缩的 Rollup 插件
npmparser从代码中解析模板字符串

Labs — 独立工具

PackageDescription
npmog-images-generator从 HTML 生成 OG 图片(无需无头浏览器)
npmvite-plugin-standard-css-modules在 Vite 中通过 import 属性使用 CSS modules

Internal

描述
npm@gracile/internal-tsconfigs共享的 TypeScript 配置预设
npm@gracile/internal-utils共享的 monorepo 工具

👐 贡献

参见 CONTRIBUTING.md



“完美并非无可添加,而是无可删减。”

安托万·德·圣-埃克苏佩里, 飞行员的奥德赛