swc-ui (全称Stencil Web Component), 是基于 stencil.js 框架开发的符合 Web Components 规范的 UI 组件库,不受框架限制,运行在 JS/Vue/React/Angular 项目
# npm
npm i @swc-ui/components -S
# yarn
yarn add @swc-ui/components -S
# pnpm
pnpm add @swc-ui/components
1、全局批量注册组件
import { createApp } from 'vue'
import App from './App.vue';
import { applyPolyfills, defineCustomElements } from "@swc-ui/components/loader";
// 引入样式
import "@swc-ui/components/dist/swc-ui/swc-ui.css";
// Bind the custom elements to the window object
applyPolyfills().then(() => {
defineCustomElements();
});
createApp(App).mount('#app')
修改 vite.config.js
,vue 编译兼容自定义元素
import { defineConfig } from 'vite';
export default defineConfig({
// Vue compiler options
vue: {
template: {
compilerOptions: {
// Ignore custom elements to avoid rendering errors
isCustomElement: tag => tag.startsWith('swc-')
},
},
},
});
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import registerServiceWorker from './registerServiceWorker';
// test-component is the name of our made up Web Component that we have
// published to npm:
import { applyPolyfills, defineCustomElements } from 'test-components/loader';
ReactDOM.render(<App />, document.getElementById('root'));
registerServiceWorker();
applyPolyfills().then(() => {
defineCustomElements();
});
还未来得及处理 CDN,后续添加到 jsdelivrCDN,使用方法如下
<html>
<head>
<script src="'https://cdn.jsdelivr.net/npm/swc-ui@0.0.1/dist/components/index.min.js'">
</script>
</head>
<body>
<swc-button>按钮</swc-button>
</body>
</html>
1、克隆源码
git clone https://github.com/WebJeffery/stencil-component-ui.git
2、安装依赖
pnpm install
3、启动项目
npm run start
使用 git cz
代替 git commit
feat - 新功能 feature
fix - 修复 bug
docs - 文档注释
style - 代码格式(不影响代码运行的变动)
refactor - 重构、优化(既不增加新功能,也不是修复bug)
perf - 性能优化
test - 增加测试
chore - 构建过程或辅助工具的变动
revert - 回退
build - 打包
组件名称 | 搭配组件 | 组件描述 |
---|---|---|
button | button-group | 按钮组件 |
icon | - | 图标组件 |
aspect-ratio | - | 宽高保持固定比例的容器 |
Badge | - | 徽章组件 |
breadcrumb | breadcrumb-item | 面包屑导航组件 |
breadcrumb-item | - | 面包屑导航子组件,不可单独使用 |
card | - | 卡片组件 |
checkbox | - | 多选框 |
checkbox-group | checkbox | 多选框组 |
col | - | row的子组件,不可单独使用 |
contextmenu | contextmenu-item | 右键菜单组件 |
contextmenu-item | - | 右键菜单子组件,不可单独使用 |
collapse | Collapse-item | 折叠面板 |
collapse-item | - | 折叠面板子组件,不可单独使用 |
dialog | - | 弹窗组件 |
divider | - | 分割线,常用于分割内容 |
drawer | - | 抽屉组件 |
dropdown | dropdown-item | 下拉菜单组件 |
dropdown-item | - | 下拉菜单子组件,不可单独使用 |
empty | - | 空组件,常用于内容为空的场合 |
grid | grid-item | 宫格组件-常用于九宫格 |
image | - | 图片组件 |
input | - | 输入组件 |
Loading | - | 加载 |
message | - | 顶部弹层提示组件 |
option | - | 下拉选择子组件,不可单独使用 |
process | - | 进度条组件 |
radio | - | 单选框 |
radio-group | radio | 单选框组 |
row | col | 行组件,子组件必须是col组件 |
select | option | 下拉选择组件 |
switch | - | 开关组件 |
step | - | 步骤条子组件,不可单独使用 |
steps | step | 步骤条组件 |
tabs | tab-pane | tab组件 |
tab-pane | - | tab子组件,不可单独使用 |
tag | - | 标签组件 |
timeline | timeline-item | 时间线组件 |
timeline-item | - | 时间线子组件,不可单独使用 |
tip | - | 直接显示在界面上提示组件,等同于elementPlus的alert组件 |
tooltip | - | 提示组件 |
Link | - | 链接 |
Text | - | 文字 |