关于 web-components
web-components 是面向原生 HTML、CSS 和 JavaScript 开发的编码规范与工作流程指南,适用于构建或重构轻量界面。它强调模块化 ESM、精简函数和不依赖框架。
主要功能
- 01仅使用 HTML、CSS 和 JavaScript
- 02采用模块化 ESM 并避免全局状态
- 03提供文件结构与命名约定
- 04涵盖语义化 HTML 和现代 DOM API
- 05包含 CSS 与 JavaScript 实践指南
适用场景
- 01从零构建原生 Web 界面
- 02实现模态框、标签页或下拉菜单
- 03移除项目中的框架依赖
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ manzdev/ web-core --skill web-components安装后在 Claude Code 中输入/web-components确认已加载。
详细介绍
原生 Web(HTML/CSS/JS)
必需约束(不可妥协)
- 仅使用 HTML/CSS/JS(不使用框架)
- 使用模块化 JS(ESM)
- 优先采用小巧、专注的函数和纯工具函数
- 避免全局状态
适用场景(用户提出以下需求时)
- 原生 JS / 纯 HTML/CSS/JS / 静态页面 / 高效
- 不使用框架、React/Angular/Vue
- 直接在 DOM 中构建小型 UI 组件(模态框、标签页、下拉菜单、表单验证)
- 重构以移除框架依赖或降低 JS 复杂度
输出要求
- 避免遗漏导入或路径
- 避免使用 TODO 占位符
- 保持改动小巧、可测试且循序渐进
实现工作流
1)结构
-
优先采用以下结构:
src/源代码public/静态文件(字体、图像等)index.html主入口main.js主 JS 入口src/css/global.css全局样式src/components/Web Components 文件夹src/modules/可复用模块和工具模块 JS
-
每个模块只负责一件事(DOM 绑定、模块状态、渲染、API、工具函数等)
-
避免全局可变状态。如果需要状态,请将其封装在模块中,并仅暴露最少量的函数。
-
文件名始终遵循以下命名约定:
src/components/中的组件应使用 PascalCase。类名应与文件名一致。CSS 文件也应如此。src/modules/中的模块应使用 camelCase。函数名应与文件名一致。
2)HTML 指南
- 在适用时使用语义化标签(
<header>、<footer>、<article>、<main>、<nav>、<button>、<dialog>等) - 避免堆砌 div(仅保留必要元素)
3)DOM 指南
- 使用
CSSStyleSheetAPI 创建样式,而不是使用字符串模板。 - 优先使用
import属性with,而不是new CSSStyleSheet()。优先使用new CSSStyleSheet(),而不是纯字符串模板。 - 使用
querySelector*()API,而不是getElement*()API。 - 使用
setHTMLUnsafe()/getHTML(),而不是innerHTML。 - 添加元素时优先使用现代 DOM API:
append()、prepend()、before()、after()。否则,优先使用insertAdjacent*(),而不是旧版 APIappendChild()。
4)CSS 指南
- 优先采用简单、易预测的命名方式
- 优先使用
@scope规则,而不是 BEM 命名 - 使用 CSS 变量定义主题基础值和常用可复用数据
- 默认确保布局具有响应性(flex/grid)
- 优先使用特异性较低的
:where(),而不是!important - 使用 CSS 嵌套对相关区块类进行分组
5)Javascript 指南
- 使用
type="module"和显式导入/导出 - 优先使用具名导入,而不是默认导入
- 优先采用纯工具函数和小型函数
- 对列表/动态 UI 使用事件委托
- 明确处理错误(网络故障、缺失的 DOM 节点、无效输入)
- 将拆分后的逻辑封装为小型类方法
- 为代码字符串模板添加
/* html */、/* css */或/* svg */前缀
验证清单
完成工作时,请确保:
- 改动未导致控制台错误或警告
- 所有引用的资源都能正常加载(路径/导入)
- 检查导入项,确认它们确实在使用
- 功能可通过键盘操作,且无需框架运行时
建议脚本
- 添加使用
servor本地服务器进行开发的npm run dev脚本
评论
支持 Markdown