Storm

求知若饥 虚怀若谷

前端 | 开发 | 学习


一些常用的设计模式

总结一些写轱辘的时候使用的设计模式(套路)

1.发布订阅模式

1
2
3
vm.$emit('update:selected',this.name) //发布
vm.$on('update:selected',(name)=>{this.name = name}) //订阅
vm.$off('update:selected') //取消订阅

2.单项数据流

使用eventBus

1
2
3
4
5
6
7
//父亲
let vm = new Vue({
data(){return { selected: 1 }}
})
vm.eventBus.$emit('update:selected', this.selected) //给儿子说,我给你传个现在最新的selected
vm.eventBus.$on('update:selected',(selected)=>{ this.selected = selected })
//监听儿子有没有让我修改selected
1
2
3
4
5
6
7
//儿子
let vm = new Vue({
data(){return { selected: 2 }}
})
vm.eventBus.$emit('update:selected',this.selected) //给爸爸说一声,我想修改一下 selected的值
vm.eventBus.$on('update:selected',(selected)=>{this.selected = selected})
//监听爸爸有没有 同意 或者 让 我改selected

流程: 爸爸修改儿子数据 —–> 直接告诉儿子

​ 儿子想修改自己的数据 —–> 告诉爸爸想要修改 ——> 爸爸修改数据 —–> 告诉儿子

让爸爸始终掌控大局。

3.正交原则

props 不要违反正交原则

例如,我们设计一个button组件

1
props:['rightIcon','leftIcon']

这两个属性就是不正交的,他们都可以改变icon的位置

修改

1
props:['iconPosition']  // right || left

4.写可测试的代码

最近的文章

移动页面开发

移动页面1.移动页面的区别 没有 hover 没有 touch 没有 resize 没有 滚动条 要加一个 <meta name="viewport" content="width=device-width, user-scalable=no, initi …

CSS 阅读
更早的文章

LESS

LESS1.LESS是什么LESS是一种动态样式语言。 LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承,运算, 函数. LESS 既可以在 客户端 上运行 (支持IE 6+, Webkit, Firefox),也可以借助Node.js或者Rhino在服务端运行。 2.基本用法1.变量1 …

CSS 阅读
comments powered by Disqus