hybrid开发套件的工程化实现
功能概述
过去我在 hybrid 混合 webapp 领域做了多年,积累了不少的函数库、工具库、代码片段、常规解决方案、vue 组件库等。
为了能让零散的知识形成一套统一方法论,便于有同类需求的工程师们借鉴,如今我将他们封装成特定的“脚手架和基础能力底座”、”组件和指令库“、”代码片段“、”套件文档“。
先说说大概做了什么
首先脚手架层面:
- vite+vue3 套装
- vite 修改:dev 服务器增加–host 参数,方便局域网内直接手机访问电脑 IP 调试。
脚手架实现
参考 create-vite
脚手架文档和组件库文档
文档-使用文档
局域网调试
jsbridge 调用
移动端适配的 css 编写
按路由配置皮肤模式
按路由配置沉浸式
组件库和指令库
cicd 和部署
history 模式,需要 nginx 做好配合。
chunk 稳定性
hybrid 业务不同于完整的 webapp 项目,通常并不是一个单独的完整功能的 webapp 植入到 app 中。而是分散的各种不同的 h5(例如活动页、支付页、提现页、创作者中心、用户任务中心、榜单)等。
如果直接通过 vue 全家桶创建项目,会造成”修改单个页面,会连同其他非本次需求的页面一起被构建“,极易产生风险。因此这种场景下,通常需要采用”多项目“ 或 ”多页面 entry 入口“的方案。
但假如我们采用 history 路由模式,多入口和多项目会带来新的麻烦:我不得不在服务器上针对不同入口和项目分别去配置各自的 try_file nginx 配置,从而让 history 模式下始终访问到 index.html。
那是否有更轻量一丢丢的方案,即我依然采用单个入口,但是每次迭代 A 路由时候不要影响 B 路由的构建结果。这里,我们可以研究下 vite 的分包稳定性。
文档-细节原理
客户端
解决调试 webview 入口问题
解决局域网调试问题
1、需要解决 http 访问问题
2、需要解决 charlse 或 wistle 抓包证书信任问题
解决 jsbridge 通信问题
前端
解决局域网 IP 监听调试问题
解决 jsbridge 调用问题
路由皮肤和沉浸式管理
1、为增加路由可维护性,单独抽离 routes 配置到 routes.ts 文件中。
import routes from ‘./routes’
2、为实现按路由自定义皮肤和沉浸式能力,通过钩子给路由增加额外 meta 配置能力。