2023-05-25 15:33:31 +08:00
|
|
|
## Wkit
|
|
|
|
> A library for building fast, lightweight web components.
|
2023-03-06 12:25:54 +08:00
|
|
|
|
2023-03-07 20:41:55 +08:00
|
|
|
### 开发文档
|
2023-05-25 15:33:31 +08:00
|
|
|
[开发文档](https://github.com/bytedo/wkit/wiki)
|
2023-03-07 20:41:55 +08:00
|
|
|
|
2023-04-07 10:10:17 +08:00
|
|
|
|
|
|
|
### 我们的特色
|
|
|
|
|
|
|
|
- `@xxx=yyy` 事件绑定, 可以任意节点上直接使用类似`vue事件绑定`的这种写法, 就可实现事件绑定。组件被移出文档时, 事件会**自动销毁**, 无须手动销毁。
|
2023-04-17 16:39:45 +08:00
|
|
|
- `@click.stop=xxx` 事件绑定支持修饰符
|
2023-04-07 10:10:17 +08:00
|
|
|
- `:xxx=yyy`, 属性绑定, 类似`vue`,在属性前加上`:`, 该属性不再使用`setAttribute()`, 而是直接赋值, 可满足你需要传递复杂数据结构的需求。
|
|
|
|
- `#animation={type}`, 开箱即用的动画配置, 内置6种动画`fade(默认), scale, bounce, micro-bounce, rotate, slide`
|
|
|
|
- `ref=xxx`, 类似`vue`的节点标识, 可方便的在`mounted()`之后通过 `this.$refs.xxx` 来访问该节点
|
|
|
|
- 用内置的`bind()`方法来给当前组件绑定事件时, 组件移除时事件也会自动销毁,无需手动销毁。
|
2023-04-07 10:11:58 +08:00
|
|
|
- 灵活的`props`定义
|
2023-04-07 10:10:17 +08:00
|
|
|
|
|
|
|
|
2023-03-07 20:41:55 +08:00
|
|
|
### 示例
|
2023-03-06 12:25:54 +08:00
|
|
|
|
|
|
|
```js
|
2023-05-25 15:33:31 +08:00
|
|
|
// alias wkit='//jscdn.ink/wkit/latest/index.js'
|
|
|
|
import { css, html, Component } from 'wkit'
|
2023-03-06 12:25:54 +08:00
|
|
|
|
|
|
|
class Hello extends Component {
|
|
|
|
|
|
|
|
static props = {
|
|
|
|
count: {
|
|
|
|
type: Number,
|
2023-03-14 15:51:21 +08:00
|
|
|
default: 0,
|
|
|
|
attribute: true // 是否显式表现为html属性
|
|
|
|
},
|
|
|
|
foo: 0, // 简写
|
|
|
|
bar: String // 简写
|
2023-03-06 12:25:54 +08:00
|
|
|
}
|
|
|
|
|
2023-03-14 15:51:21 +08:00
|
|
|
// 若需要支持 scss, 则需要使用 @bd/wcui-cli,预处理。
|
|
|
|
// 可支持数组
|
2023-03-06 12:25:54 +08:00
|
|
|
static styles = css`
|
|
|
|
button { color: #09f; }
|
|
|
|
span { color: #f30; }
|
|
|
|
`
|
|
|
|
|
2023-03-14 15:51:21 +08:00
|
|
|
// 支持多个
|
|
|
|
static styles = [
|
|
|
|
css`...`,
|
|
|
|
css`...`
|
|
|
|
]
|
|
|
|
|
2023-03-06 12:25:54 +08:00
|
|
|
render(){
|
|
|
|
return html`
|
|
|
|
<div>
|
2023-03-07 20:41:55 +08:00
|
|
|
<button @click="${this.increase}">点击我</button>
|
2023-03-06 12:25:54 +08:00
|
|
|
</div>
|
|
|
|
<div>所有点击数为: <span>${this.count}</span></div>
|
|
|
|
`
|
|
|
|
}
|
|
|
|
|
|
|
|
increase(){
|
|
|
|
this.count++
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2023-03-27 19:03:19 +08:00
|
|
|
if (!customElements.get('wc-hello')) {
|
|
|
|
customElements.define('wc-hello', Hello)
|
|
|
|
}
|
|
|
|
// 和上面的写法等价
|
|
|
|
// 如果不希望修改前缀`wc-`的话, 可以直接调用内置的reg方法注册组件即可。
|
|
|
|
Hello.reg('hello')
|
2023-03-06 12:25:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
<!-- 在html中,便可以直接使用 -->
|
|
|
|
<wc-hello></wc-hello>
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|