新闻详情

新闻详情

首页 / 资讯中心 / 详情

Shiori Web 前端开发指南:基于 Vue 3 + Vite + Bun 构建书签管理器界面

发布时间:2026/11/4 20:06:45来源:尧图网络
Shiori Web 前端开发指南:基于 Vue 3 + Vite + Bun 构建书签管理器界面
Shiori Web 前端开发指南基于 Vue 3 Vite Bun 构建书签管理器界面【免费下载链接】shioriSimple bookmark manager built with Go项目地址: https://gitcode.com/gh_mirrors/sh/shiori本文围绕 shiori 仓库中 webapp/README.md 展开系统讲解新版 Web 前端的开发环境、依赖安装、本地热更新、类型检查、生产构建、单元测试与代码规范检查的完整流程。读完本文你将掌握用 Bun 驱动 Vue 3 Vite 技术栈开发、调试与产出 shiori 前端产物并理解该产物如何最终被嵌入 Go 二进制中随服务一起分发。webapp 在 shiori 中的定位shiori 是一个用 Go 编写的简单书签管理器Simple bookmark manager built with Go仓库同时维护着两套前端internal/view下的旧版模板页面以及webapp目录下的新版 Vue 3 单页应用。从 webapp/embed.go 可以看到前端构建产物通过 Go 的 embed 机制被打进二进制package webapp import ( embed ) //go:embed dist/index.html var Templates embed.FS //go:embed dist/assets dist/*.ico var Assets embed.FS也就是说webapp开发流程的终点是产出dist/index.html与dist/assets之后由 Go 侧统一嵌入并对外提供服务。因此本 README 中的每一条命令都直接关系到最后随 shiori 二进制一起发布的界面能否正确生成。推荐 IDE 环境VSCode VolarREADME 明确给出了编辑器建议使用 VSCode 并安装Volar扩展同时禁用 Vetur。原因在于 Vue 3 的 SFC单文件组件工具链与 Vue 2 时代不同类型检查由vue-tsc取代原生tsc承担编辑器中让 TypeScript 语言服务识别.vue文件类型信息的正是 Volar。从 webapp/package.json 的 devDependencies 中也能印证这一点项目同时依赖vue-tsc^2.2.12、typescript~5.8.3与vue/tsconfig^0.7.0。如果你在 IDE 中看到.vue导入报类型错误或没有补全首先应检查是否安装了 Volar 且 Vetur 已被禁用。项目依赖与技术栈全景先看 webapp/package.json 声明的依赖理解开发流程背后的技术选型运行时依赖dependencies依赖版本用途vue^3.5.22Vue 3 框架本体vue-router^4.5.1前端路由history 模式pinia^3.0.3状态管理登录态、标签数据vue-i18n^9.14.5国际化en/es/fr/de/ja 五种语言vueuse/core^13.9.0组合式工具函数集tailwindcss/vite^4.1.13Tailwind CSS 4 的 Vite 插件开发依赖devDependenciesvite^6.3.6、vitejs/plugin-vue、vite-plugin-vue-devtools、vitest^3.2.4、vue/test-utils、eslint^9.36.0、eslint-plugin-vue、prettier、npm-run-all2等覆盖构建、测试、lint 与格式化全链路。package.json 中的脚本定义如下scripts: { dev: vite, build: run-p type-check \build-only {}\ --, preview: vite preview, test:unit: vitest, build-only: vite build, type-check: vue-tsc --build, lint: eslint . --fix, format: prettier --write src/ }后续所有 README 命令都可以在本文件的 scripts 中找到一一对应关系。安装依赖bun install仓库在 webapp/bun.lock 与 webapp/bun.lockb 之外还保留了 webapp/package-lock.json说明项目同时兼容 Bun 与 npm 两类包管理器。README 以 Bun 为准如果你的环境没有安装 Bun也可以用npm install代替但建议遵循官方 README 使用 Bun以保证与 lockfile 的一致性。本地开发编译与热更新bun dev该命令实际执行vite启动带热更新Hot-Reload的开发服务器。Vite 的配置集中在 webapp/vite.config.tsexport default defineConfig({ plugins: [ vue(), vueDevTools(), tailwindcss(), ], resolve: { alias: { : fileURLToPath(new URL(./src, import.meta.url)) }, }, css: { devSourcemap: true, }, })三个插件分别负责.vue单文件编译、Vue DevTools 调试面板和 Tailwind CSS 4 的按需扫描别名指向src目录这也是源码中随处可见/stores/auth、/client这类导入的原因devSourcemap开启 CSS 源码映射方便在浏览器中直接定位到 webapp/src/assets/main.css 等源文件。入口在 webapp/index.html它挂载#app并加载 webapp/src/main.ts。main.ts依次注册 Pinia、Vue Router 与 i18n 后挂载应用对应 webapp/src/App.vue 的根组件。类型检查与生产构建bun run build这一步与直接vite build不同它通过npm-run-all2的run-p并行执行type-check与build-only两个子任务——即先/同时做类型检查再产出生产包保证发布产物通过类型校验。type-check执行vue-tsc --build参照 webapp/tsconfig.app.json、webapp/tsconfig.json 等配置对整个src做类型检查这正是 README 强调“用 vue-tsc 替换 tsc”的实际落点build-only执行vite build将产物输出到dist/。构建完成后dist/index.html与dist/assets即被 webapp/embed.go 中声明的//go:embed指令收集。若想单独预览构建产物可运行bun run preview即vite preview它会以生产模式在本地起一个静态服务用于验收。单元测试Vitestbun test:unit对应脚本为vitest。测试配置在 webapp/vitest.config.ts它通过mergeConfig继承vite.config.ts的插件与别名配置并补充test: { environment: jsdom, exclude: [...configDefaults.exclude, e2e/**], root: fileURLToPath(new URL(./, import.meta.url)), }environment: jsdom在 Node 环境中模拟浏览器 DOM配合 webapp/src/assets/main.css 无关的纯逻辑与组件测试显式排除e2e/**将端到端测试隔离到仓库根目录的 e2e/Playwright Go 服务端测试体系之外避免单元与 E2E 混跑。ESLint 侧也通过vitest/eslint-plugin对src/**/__tests__/*目录启用了 Vitest 专属规则见 webapp/eslint.config.ts。代码规范ESLint 与 Prettierbun lint执行eslint . --fix。该项目使用 ESLint 9 的flat config写法webapp/eslint.config.tsexport default defineConfigWithVueTs( { name: app/files-to-lint, files: [**/*.{ts,mts,tsx,vue}], }, { name: app/files-to-ignore, ignores: [**/dist/**, **/dist-ssr/**, **/coverage/**], }, pluginVue.configs[flat/essential], vueTsConfigs.recommended, { ...pluginVitest.configs.recommended, files: [src/**/__tests__/*] }, skipFormatting, )要点lint 范围是全部 TS/MTS/TSX/Vue 文件但跳过构建产物目录vueTsConfigs.recommended让 Vue SFC 同时获得模板与脚本的类型感知skipFormatting意味着格式化交给 Prettier 负责即配套命令bun format对应prettier --write src/两者分工为ESLint 管代码质量未使用变量、类型问题、Vue 规范Prettier 管排版风格。前端架构速览开发时值得关注在开始写业务代码前快速熟悉 webapp/src 的目录划分能让你更高效地使用上面的工具链webapp/src/router/index.ts路由表定义/home、/login、/tags、/folders、/archive、/settings并在全局beforeEach守卫中结合 Pinia 的 auth store 做登录态校验未匹配路由统一重定向到/home。除/home、/login外各页面均使用动态import()做路由级代码分割webapp/src/stores/auth.ts以localStorage持久化 token 与过期时间封装login、logout、validateToken、refreshToken并通过X-Shiori-Response-Format: new请求头对接新的 API 响应格式注意开发时其 APIbasePath写死为http://localhost:8080webapp/src/stores/tags.ts标签的增删改查与本地状态同步webapp/src/utils/i18n.ts默认语言取自浏览器navigator.language优先级低于localStorage中的shiori-language语言包位于 webapp/src/localesen/es/fr/de/ja 五个 JSONwebapp/src/client由 OpenAPI Generator 根据 docs/swagger/swagger.json 自动生成的 API 客户端runtime.ts、apis/*、models/*其中的 webapp/src/client/runtime.ts 提供Configuration类用于注入 basePath、accessToken 与自定义 headerswebapp/src/views七个页面视图登录、主页、标签、文件夹、归档、设置、关于配合 webapp/src/components/layout 下的 AppLayout、Sidebar、TopBar、LanguageSelector 等布局组件使用。常见问题与注意事项改完代码要跑bun run build本地bun dev不会修改dist/只有构建后才能通过go:embed打进 Go 二进制。若修改了前端却看不到服务端界面变化多半是忘了重新构建。开发期 API 地址当前 webapp/src/stores/auth.ts 等 store 中basePath固定为http://localhost:8080本地联调时需保证 shiori 服务监听在 8080 端口部署到其他地址需按实际环境调整。编辑器类型提示不生效确认已安装 Volar 并禁用 Vetur同时建议直接打开webapp/目录而非仓库根目录以便 VSCode 正确加载根级 tsconfig。锁文件一致性项目同时存在 Bun 与 npm 两套 lockfile建议统一使用 README 推荐的bun install避免两套依赖树不一致导致 CI 与本地行为不同。测试隔离Vitest 配置已排除e2e/**单元测试与 e2e/ 的端到端测试Playwright Go 容器彼此独立跑bun test:unit前无需启动任何服务。综上webapp的开发闭环可以概括为bun install装依赖→bun dev迭代开发→bun test:unitbun lintbun format质量保障→bun run build产出dist/供 webapp/embed.go 嵌入。掌握这条链路你就能独立参与 shiori 新版界面的开发与构建发布。【免费下载链接】shioriSimple bookmark manager built with Go项目地址: https://gitcode.com/gh_mirrors/sh/shiori创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

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

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/4 15:56:54

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/3 12:09:35

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/4 17:01:23

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/4 12:33:12

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/4 1:25:31

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/4 3:51:11

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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