新闻详情

新闻详情

首页 / 资讯中心 / 详情

SolidStart 最小应用指南:从 bare 脚手架掌握项目创建、开发调试与 preset 构建部署

发布时间:2026/10/2 8:16:56来源:尧图网络
SolidStart 最小应用指南:从 bare 脚手架掌握项目创建、开发调试与 preset 构建部署
Web框架前端【免费下载链接】solid-startSolidStart, the Solid app framework项目地址https://gitcode.com/GitHub_Trending/so/solid-start点击查看免费下载SolidStart 是 Solid 生态的全栈应用框架而apps/fixtures/bare是仓库中最精简的裸脚手架没有路由、没有 Meta 标签、没有多余依赖仅保留启动一个 SolidStart 应用所必需的最小文件集。本篇以该脚手架的 README 为主线结合仓库内真实源码完整讲解创建项目 → 安装依赖 → 启动开发 → 构建部署的闭环并深入解释solidStart()Vite 插件与 Nitro preset 机制背后的实现原理帮助读者从零搭建并真正理解一个 SolidStart 项目的每个组成部分。bare 脚手架SolidStart 的最小可运行骨架仓库中的 apps/fixtures/bare 是一个private的测试用 fixture它的定位正如其名——bare裸的只包含运行一个 SolidStart 应用所必需的最少内容。它是验证框架能否在零配置、零额外特性条件下正常工作的基线项目也是理解 SolidStart 工程结构的最佳入门样例。其 README.md 开篇即点明项目宗旨Everything you need to build a Solid project, powered bysolid-start.即构建 Solid 项目所需的一切都由 solid-start 提供。这份 README 虽然简短却覆盖了 SolidStart 从创建到部署的完整命令链是官方脚手架模板npm init solid生成的默认项目README 的标准内容。下面逐节展开。创建项目npm init solidlatestREADME 给出了两种创建方式# 在当前目录创建新项目 npm init solidlatest # 在 my-app 目录下创建新项目 npm init solidlatest my-appnpm init solidlatest会拉取官方脚手架模板并支持交互式选择 TypeScript/JavaScript 等选项。仓库中的bare与 bare-js 两个 fixture 恰好对应模板的两类产物形态apps/fixtures/bareTypeScript 版本含tsconfig.json与.tsx源码apps/fixtures/bare-jsJavaScript 版本全部为.jsx源码无tsconfig.json。两者除语言差异外结构完全一致均通过 vite.config.ts或vite.config.js接入框架。创建完成后需要安装依赖。README 明确说明可使用npm install、pnpm install或yarn任一包管理器当前仓库使用 pnpm workspace 管理其 pnpm-workspace.yaml 中的solidjs/start以workspace:*形式依赖本地包源码普通用户从模板创建的项目则安装 npm 发布版。依赖基线从 package.json 看懂最小依赖集查看 apps/fixtures/bare/package.json最小项目的依赖只有四项{ name: fixture-bare, private: true, type: module, scripts: { dev: vite dev, build: vite build }, dependencies: { solidjs/start: workspace:*, nitro: ^3.0.260610-beta, solid-js: ^1.9.15, vite: ^8.1.5 }, engines: { node: 24 } }几个值得注意的细节type: module项目以 ESM 模式运行dev: vite dev、build: vite build脚本直接透传 Vite 命令SolidStart 的构建逻辑全部封装在 Vite 插件内部nitro是显式依赖SolidStart 的服务端构建基于 Nitro需要在项目中显式声明engines: { node: 24 }当前版本要求 Node.js 24 及以上这是运行本仓库 fixture 的前提条件private: truefixture 仅供仓库内部测试不发布。深入项目骨架从源码看懂 SolidStart 的最小组成bare 脚手架去掉public/静态资源后源码只有四个文件每一个都对应 SolidStart 的一个核心概念。逐一拆解如下。1. vite.config.ts框架的接入点vite.config.ts 全文仅 7 行却完整接入了框架import { nitro } from nitro/vite; import { defineConfig } from vite; import { solidStart } from ../../../packages/start/src/config; export default defineConfig({ plugins: [solidStart(), nitro()], });其中solidStart()来自仓库内的 packages/start/src/config/index.ts是框架的核心 Vite 插件nitro()则接入 Nitro 作为服务端运行时。两者组合让vite dev同时具备客户端构建、服务端渲染与 API 路由能力。2. src/app.tsx应用根组件app.tsx 是一个使用 Solid 响应式原语的经典计数器import { createSignal } from solid-js; import ./app.css; export default function App() { const [count, setCount] createSignal(0); return ( main h1Hello world!/h1 button classincrement onClick{() setCount(count() 1)} typebutton Clicks: {count()} /button p Visit start.solidjs.com to learn how to build SolidStart apps. /p /main ); }注意两点App是默认导出框架按约定从appRoot目录寻找app.{j,t}sx作为应用入口CSS 通过import ./app.css直接引入样式在构建时会被自动收集。3. src/entry-client.tsx客户端挂载入口entry-client.tsx 负责浏览器端的水合hydration// refresh reload import { mount, StartClient } from solidjs/start/client; mount(() StartClient /, document.getElementById(app)!);mount将StartClient挂载到服务端渲染输出的div idapp节点上完成客户端激活。文件首行的// refresh reload注释是 Solid 的 Fast Refresh 标记配合solidStart()插件在开发环境提供热更新。4. src/entry-server.tsx服务端渲染入口entry-server.tsx 使用createHandler定义服务端请求处理器// refresh reload import { createHandler, StartServer } from solidjs/start/server; export default createHandler(() ( StartServer document{({ assets, children, scripts }) ( html langen head meta charsetutf-8 / meta nameviewport contentwidthdevice-width, initial-scale1 / link relicon href/favicon.ico / {assets} /head body div idapp{children}/div {scripts} /body /html )} / ));createHandler返回的处理器即 SSR 的 HTML 模板函数children是服务端渲染出的组件树assets是收集到的样式与资源标签scripts是客户端水合脚本。从这里可以看到服务端渲染的完整数据流——组件在服务端渲染为 HTML再由客户端脚本接管。5. tsconfig.jsonTS 项目的基础配置tsconfig.json 中除了常规的严格模式配置有两项与 SolidStart 强相关{ compilerOptions: { jsx: preserve, jsxImportSource: solid-js, types: [solidjs/start/env], paths: { ~/*: [./src/*] } } }jsxImportSource: solid-js让 JSX 按 Solid 语义编译types: [solidjs/start/env]引入框架的 env.d.ts 类型声明paths: { ~/*: [./src/*] }约定~/别名指向src/目录这是 SolidStart 应用代码导入的惯用写法。开发调试npm run dev安装依赖后README 给出开发命令npm run dev # 或启动服务器并自动打开浏览器新标签页 npm run dev -- --opennpm run dev实际执行vite dev见 package.json-- --open将--open参数透传给 Vite让它在启动后自动唤起浏览器。开发服务器的能力来自solidStart()插件返回的插件数组见 packages/start/src/config/index.ts 的solidStart()函数其中关键的几个子插件devServer接管开发期服务端渲染请求fsRoutes基于src/routes目录自动生成客户端与 SSR 路由见 fs-router.tsmanifest生成路由与资源清单envPlugin提供$env环境变量处理serverFunctionsPlugin编译use server服务端函数指令见 directives。这些插件让vite dev一个命令就同时提供 Vite 的模块热更新HMR与 SolidStart 的 SSR 开发能力。构建与部署preset 机制README 关于构建的核心论述值得完整引用Solid apps are built withpresets, which optimise your project for deployment to different environments.By default,npm run buildwill generate a Node app that you can run withnpm start. To use a different preset, add it to thedevDependenciesinpackage.jsonand specify in yourapp.config.js.翻译与展开如下默认构建Node 应用不额外配置时npm run build实际执行vite build会生成一个可直接运行的 Node 应用npm run build # 生成 dist/ 产物 npm start # 启动生产服务器构建产物按环境分为dist/client与dist/server两部分——从源码看solidStart()插件在 config/index.ts 中通过 Vite 8 的多环境environments机制分别配置了clientappType: custom输出dist/client与serverSSR 模式输出dist/server并在builder.buildApp中保证先构建客户端再构建服务端。自定义 preset针对不同部署环境优化SolidStart 将目标部署环境抽象为preset概念。不同的 preset 会对产物做针对性优化——例如生成适合 Vercel、Netlify、Cloudflare Workers、Deno 等平台格式的部署包。README 给出的自定义步骤是将目标 preset 加入package.json的devDependencies在app.config.js中指定该 preset。需要说明的是当前仓库源码显示配置方式已经演进。在 packages/start/src/config/index.ts 中SolidStartOptions接口的文档注释明确写道Configuration options for SolidStart. (previously inapp.config.ts)并引用了官方迁移指南move framework configuration into vite.config.ts。也就是说在较新版本中框架配置已从独立的app.config.ts/app.config.js迁移进vite.config.ts通过solidStart(options)传入——bare fixture 的 vite.config.ts 正是这一新写法的实证。因此实际使用中preset 的指定可写作// vite.config.ts import { nitro } from nitro/vite; import { defineConfig } from vite; import { solidStart } from solidjs/start/config; export default defineConfig({ plugins: [ solidStart({ /* framework 配置 */ }), nitro({ preset: 你的目标 preset 名 }), ], });若使用的是旧版本脚手架仍可按 README 所述在app.config.js中配置。具体可选 preset 名称以你所安装的 Nitro 版本文档为准本文不展开未经验证的清单。源码级验证solidStart() 插件支持哪些配置围绕配置这一点从 packages/start/src/config/index.ts 的SolidStartOptions接口可以看到框架当前支持的核心配置项及其默认值配置项默认值作用appRoot./src应用根目录存放app.tsx的位置routeDir./routes文件系统路由目录相对appRootssrtrue是否启用服务端渲染设为false进入纯客户端 SPA 模式源码中会相应把solidjs/start/server与/client别名指向spa子路径devOverlaytrue开发期错误覆盖层开关extensions[js, jsx, ts, tsx]参与路由解析的文件扩展名middleware—可选中间件模块路径配合createMiddlewareexperimental.islandsfalse群岛架构实验开关当前固定为falseserialization.modejson服务端函数跨端序列化方式可选jsonCSP 友好或js基于 Seroval 的自定义二进制格式env—环境变量插件配置serverFunctions.filter/onError—服务端函数包含/排除过滤以及错误处理模块路径solidStart()实现中还会执行几项关键约定均有源码佐证通过globSync在appRoot下寻找app.{j,t}sx作为应用入口找不到则直接抛错config/index.ts 中Could not find an app jsx/tsx entry约定入口文件必须命名为entry-client与entry-server拼接到appRoot后内置noExternal: [solidjs/start, h3, cookie-es]强制这些模块走 Vite 打包流程避免包管理器提升hoisting导致的版本错位问题通过define注入import.meta.env.START_SSR、START_APP_ENTRY、SEROVAL_MODE等编译期常量。这些配置与约定构成了vite dev/vite build背后完整的行为基线。对 bare 这类零配置项目而言所有默认值恰好让框架开箱即用——这正是最小脚手架的意义所在。小结从 apps/fixtures/bare 这个最小 fixture 出发可以完整走通 SolidStart 的核心工作流创建npm init solidlatest可带目标目录名生成脚手架安装npm install/pnpm install/yarn开发npm run dev-- --open可自动开浏览器底层由solidStart()nitro()两个 Vite 插件驱动提供 SSR、HMR 与文件路由构建npm run build默认产出可运行的 Node 应用npm start启动针对不同部署平台可选用 preset 优化产物新版本在vite.config.ts中配置旧版本按 README 走app.config.js。理解了 bare 脚手架的四个源码文件——app.tsx应用根组件、entry-client.tsx水合入口、entry-server.tsxSSR 模板、vite.config.ts框架接入点——就掌握了所有 SolidStart 应用共享的骨架。在此之上添加routes目录、middleware与use server函数即可逐步构建出完整的全栈应用。赞分享Web框架前端【免费下载链接】solid-startSolidStart, the Solid app framework项目地址https://gitcode.com/GitHub_Trending/so/solid-start点击查看免费下载相关推荐gods-eye-view 社区 PR 维护者工作流五道验收门、可信指令与集成署名实操指南gods eye view 社区 PR 维护者工作流五道验收门、可信指令与集成署名实操指南 本指南完整解析 gods eye view 仓库的社区贡献验收流程Web框架前端SolidStart 上手全指南从 npm init 项目创建到 Preset 构建部署SolidStart 上手全指南从 npm init 项目创建到 Preset 构建部署 SolidStart 是 Solid 官方推出的全栈应用框架把细粒Web框架前端在 Turborepo 中构建 SolidStart v2 应用从项目创建、开发调试到 Nitro 部署构建在 Turborepo 中构建 SolidStart v2 应用从项目创建、开发调试到 Nitro 部署构建 本篇文章以 Turborepo 示例仓库 wit构建工具开发工具CLI上一篇3 步修好下载体积异常Gopeed 断点续传实战下一篇RuboCop 1.72.0 版本深度解析六个新 Cop、服务器模式增强与扩展插件支持创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

JSC解密工具使用指南:从解压到反编译的完整流程 2026/10/2 8:58:55

JSC解密工具使用指南:从解压到反编译的完整流程

简介:这份新版JSC解密工具面向需要处理JavaScript混淆代码的开发者与逆向分析爱好者,尤其适合在调试、安全审计或学习加密逻辑时遇到JSC格式文件却无从下手的场景。压缩包共112个文件,以103个dll动态链接库为核心运行依赖,辅以5个…

阅读更多 →
Excel考核表自动化:模板+公式+宏一键生成月度报表 2026/10/2 8:58:48

Excel考核表自动化:模板+公式+宏一键生成月度报表

你是不是也这样:每个月月底,领导一句“把考核表发我”,你就得从人员名单、上个月的绩效数据、指标权重、评分、排名一路弄到汇总,少说也得折腾大半天。往上一翻,上个月的表格还躺在“桌面-最终版-真的最终版”这样的文…

阅读更多 →
UEFI双硬盘双系统启动架构深度解析 2026/10/2 8:58:48

UEFI双硬盘双系统启动架构深度解析

1. 为什么“UEFI双系统双硬盘”不是配置叠加,而是架构重构 很多人看到“UEFI”“双系统”“双硬盘”这三个词,第一反应是:不就是装两个系统、各占一块盘嘛?点点鼠标、选选分区,搞定。我去年在给一家做嵌入式AI边缘设备…

阅读更多 →
Vibe Coding 实践指南:用自然语言驱动 AI 编程,重塑开发者角色 2026/10/2 8:58:48

Vibe Coding 实践指南:用自然语言驱动 AI 编程,重塑开发者角色

1. 什么是 Vibe Coding:一场正在发生的编程范式转移“Vibe Coding”这个词,第一次听到的时候,我以为是某个小众亚文化的产物。但当我看到 Replit 创始人 Amjad Masad 在多个场合反复强调这个概念,并且所有跟 AI 编程相关的话题都在…

阅读更多 →
本地局域网服务器入侵防范实战:网络分段与主机加固 2026/10/2 8:58:48

本地局域网服务器入侵防范实战:网络分段与主机加固

1. 先统一认知:内网服务器不是"内网"的安全港 1.1 大多数失守不是"破墙",而是"门没锁" 我在帮几家企业做内部安全巡检时,发现一个特别扎心的现象:大家把公网入口防得滴水不漏,却在本地…

阅读更多 →
OpenClaw update出现Skipped怎么办?详解更新逻辑与三种修复方案 2026/10/2 8:58:48

OpenClaw update出现Skipped怎么办?详解更新逻辑与三种修复方案

如果你在终端里执行openclaw update,日志里突然冒出一行Skipped: this OpenClaw install isnt a git checkout, and the package manager...,先别慌,这大概率不是更新失败。我第一次看到这行字的时候,也愣了几秒,以为更…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉