Quasar Framework — 一套代码跑 Vue 全端的应用框架
待复核Quasar 是 Vue 生态里的全端脚手架 + 组件库:你写一套页面、路由和状态,用 CLI 的 -m 模式打出 SPA、SSR、PWA、Electron 桌面端或 Capacitor/Cordova 移动端。
日常类比:像同一套乐高积木,换不同底座——客厅地板(网页)、带轮子的底座(PWA 可离线)、带外壳的底座(Electron 窗口)。积木(Vue 组件)不用重买,换的是底座和打包方式。
它的卖点不是「又一个 UI 库」,而是同一仓库、多目标发布:业务逻辑写一遍,分发策略用配置切换。对小团队来说,少维护一套 CI 和一套路由约定,往往比多几个组件更值钱。
如果你把 Quasar 只当前端组件库,会忽略它真正价值:
- 你会把相同业务逻辑在 Web / 桌面 / 移动多个仓库里重写
- 你会在补 PWA 或 Electron 时推翻原有路由与构建链路
- 团队会把性能优化分叉到每个端单独做,文档也跟着分叉
- 「全端统一」听起来很虚,其实是工程约定成熟度问题
- CLI + 模式驱动:
quasar create/quasar dev/quasar build,用-m选目标。类比:同一份菜谱,烤箱模式 vs 空气炸锅模式。
npm init quasarcd my-appquasar dev -m spa # 默认网页quasar dev -m pwa # 同一项目切 PWAquasar build -m electron-
组件与路由一套复用:Quasar UI + Vue Router / Pinia 在各模式下共用。类比:店面装修图纸不变,只换开在商场还是路边摊。
-
平台差异进配置/插件,不进业务核心:Node API、Service Worker、原生插件按模式注入。类比:底座配件另装,积木本体保持干净。
案例 1:同一项目从 SPA 切到 PWA
Section titled “案例 1:同一项目从 SPA 切到 PWA”# 1) 若尚未加 PWA 模式,先装模式quasar mode add pwa
# 2) 开发态用 PWA 底座跑quasar dev -m pwa
# 3) 生产构建quasar build -m pwa逐部分解释:
mode add pwa:往工程里加 service worker / manifest 模板,不改业务页面dev -m pwa:同一套 router/store,只换可离线底座- 你主要调的是缓存策略与图标,而不是再开第二个仓库
案例 2:同一业务打出 Electron 桌面包
Section titled “案例 2:同一业务打出 Electron 桌面包”quasar mode add electronquasar dev -m electron # 弹出桌面窗口预览quasar build -m electron # 产出安装包/可执行文件逐部分解释:
- 窗口壳(主进程)由 Electron 模式提供;渲染层仍是你的 Vue 页面
- 需要读本地文件时,用 Quasar/Electron 桥,不要在组件顶层直接
require('fs') - 结果:Web 与桌面共享 90%+ 业务代码,差异集中在壳与权限
案例 3:SSR 做公开页 SEO
Section titled “案例 3:SSR 做公开页 SEO”quasar mode add ssrquasar dev -m ssrquasar build -m ssr逐部分解释:
- SSR 让首屏 HTML 在服务端生成,搜索引擎能直接看到内容
- store 初始化要分清「只在服务端跑一次」vs「客户端水合」,避免把请求级状态写进全局单例
- 同一内容层可同时服务 SPA 与 SSR,不必重写文案组件
- 过度依赖默认配置:大版本升级后
quasar.config默认值会变,关键行为(代理、PWA 策略)应显式写死。 - 一锅端导致包体积膨胀:多模式依赖树变大;上线前用构建分析看首屏 JS,目标常压到可接受的数百 KB 级。
- Web-only 组件直接上移动端:Capacitor 下部分 DOM API 行为不同,要用平台条件渲染。
- SSR 与客户端共享 store 竞态:把「每请求状态」做成工厂函数,别用模块级可变单例。
- Electron 变慢就怪框架:多半是 renderer 塞进了过重依赖;先做体积分析,再查主进程阻塞。
适用 vs 不适用场景
Section titled “适用 vs 不适用场景”适用:
- 新项目要同时覆盖 ≥2 端(网页 + 桌面或移动),团队 ≤15 人想单仓协作
- 已选定 Vue,需要统一组件视觉与 CLI 约定
- MVP 阶段要快速验证多端,而不是先搭三套脚手架
不适用:
- 只做单一 Web 端且要极致定制打包(直接 Vite + 自选 UI 更轻)
- 非 Vue 技术栈,或已在 Ionic / React Native 深度绑定
- 需要重度原生 UI / 特殊原生模块,跨端抽象会变成负担
历史小故事(可跳过)
Section titled “历史小故事(可跳过)”- 2015–2016:Razvan Stoenescu 起步,把 Vue 组件与多端构建想法收成框架
- 2019 前后:Quasar v1 稳定,CLI + 多 mode 成为卖点
- 2020s:Vite 成为默认开发体验,PWA / Electron / Capacitor 文档补齐
- 今天:定位仍是「一套 Vue 工程,多端编译」,适合产品主干持续交付
- 多端首先是工程治理,不只是库能力
- 把变更点推到配置层(
-m/ 插件),端间重复会显著下降 - 路由、状态、组件只做一遍,是高复用的最短路径
- 平台差异必须显式声明,否则「统一」会变成隐性 bug
- 官方文档:quasar.dev(安装、build mode、部署)
- Quasar CLI 模式说明:spa / ssr / pwa / electron / capacitor
- Vue 官方文档:组合式 API 与状态管理
- vue —— Quasar 的技术底座
- pwa —— 离线与更新策略
- electron —— 桌面壳对照
- 官方论坛:典型「mode 切不过去 / SSR 水合失败」排障帖
- vue —— 组件逻辑与生态基础
- vite —— 打包与开发体验核心
- capacitor —— 移动端跨平台实践
- electron —— 桌面分发链路
- ssr —— 搜索引擎友好的部署范式
- ionic —— 另一套移动优先跨端方案
- tauri —— 更轻量的桌面壳替代路线
(暂无反向链接)