# 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 用