_lit-dev-manual.md 5.4 KB

Lit 原生 ESM 无构建开发最佳实践(源稿)

用户提供规范文档全文。用于构建 fmode-code-lit 规则仓库。目标:零编译、零打包、纯原生 JS,基于浏览器原生 ESM + Import Map,复用 npm 原始包托管在内部 FMODE Repose,业务代码直接上传 OBS+CDN,保存刷新即预览。对标新版 Angular(History 干净路由、DI 依赖注入、Signal 细粒度响应式、组件/服务分层、后台多标签,无 Zone.js)。技术底座:原生浏览器 API(Fetch/History/localStorage)+ Lit 官方原生包。

一、整体架构

  • 无构建无打包:不用 rollup/esbuild/vite/webpack,源码浏览器直接执行
  • 依赖统一托管:lit、@lit-labs/* 从 npm 下原始 ESM 原样同步到内部 FMODE Repose,全业务共享
  • 业务资源独立托管:业务源码(index.html、js 组件)部署 OBS+CDN
  • 分层(对标 Angular):WebComponent(LitElement) 只渲染视图/DOM事件,不写复杂业务逻辑;Service(普通 ESM Class) 存全局状态/接口/业务计算,与 DOM 解耦;共享工具纯 ESM 函数无状态
  • 响应式:@lit-labs/signals(细粒度信号)
  • DI:@lit-labs/context(组件树注入)
  • 路由:@lit-labs/router History 干净URL(支持微信 OAuth 回调,需 CDN 回退规则)

部署拓扑

  • FMODE Repose:/npm/lit/v3.x.x/、/npm/@lit-labs/context|signals|router/vx/、/npm/importmap/lit-v3.json(公共 importmap)
  • OBS+CDN:index.html(入口引入 importmap)、app.js(入口)、/routes/、/components/、/services/、/utils/

运行流程

浏览器打开 → CDN 回退规则返回 /admin/index.html(200非302) → index.html 加载公共 importmap → 加载 app.js → import lit 依赖 → 初始化路由/Store/根组件渲染

二、前置基础设施(硬性)

  1. FMODE Repose:.js 必须 Content-Type: text/javascript;CORS 允许业务域名;开启 HTTP/2/3;依赖按版本目录化
  2. OBS+CDN History 路由:规则1 匹配真实静态资源直接返回;规则2 不存在路径返回 index.html(200,禁 302/301);index.html head 加 base 标签(子目录部署写 )
  3. ImportMap:公共托管 FMODE Repose 全业务复用;business 的 index.html 用