因为毕业设计开始了 vue
的学习之路,曾写过一些入门的 vue
小白学习文章系列(2018 我所了解的 Vue 知识大全(一))。如今已经工作半年了,这一次想说说我我平时练习项目中的 vue
,我习惯采用 ES6
书写,仅供参考,如果有可以改进的希望能够学习到,下次我说说我在工作中的 vue
练习的 参考项目,在项目中对于注释我自己还是很满意的哈哈哈
//函数节流,当一个函数被反复调用的时候,他只会执行一次,函数柯里化,调用一个函数,返回另一个函数
export function debounce(func,delay) {
let timer
return function (...args) {
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(()=>{
func.apply(this,args)
},delay)
}
}
复制代码
vue
中有一个 ref
特性,为了该组件赋予一个 ID
引用,可以通过引用可以获取到子组件里面的内容,但是我们要注意 $refs
只会在组件渲染完成之后生效,并且他们不是响应式的,避免在模板或者计算属性中访问 $refs
在父组件中的兄弟元素中通过 this.$refs.searchBox.setQuery(query)
进行引用详细见 search
组件92行和 search-box
组件的33行
getLyric() {//获取歌词格式化
this.currentSong.getLyric().then((lyric) => {
if (this.currentSong.lyric !== lyric) {
return
}
this.currentLyric = new Lyric(lyric, this.handleLyric)//当前歌曲的歌词
if (this.playing) {//当我们歌曲在播放的时候,才会有歌词,
this.currentLyric.play()
}
}).catch(() => {//异常处理,清理
this.currentLyric = null
this.playingLyric = ''
this.currentLineNum = 0
})
},
复制代码
异常处理,边界处理,我们前端应该要考虑,我们永远都不知道用户会怎么进行操作
mapMutations
是对 mutations
做一层封装,在 methods
,用扩展运算符,就可以做一个对象的映射,映射一个方法名vue
中,在 data
,prop
,computed
里面定义的数据会自动给她们添加一个 set
和 get
方法,用来实时监测数据的变化,然后响应到DOM
中,如果我们不需要监测变化,只是获取数据用来暂时保存,我们可以直接在方法中定义使用mixin
抽象出来(组件里面有的同名的方法会覆盖 mixin
里面的方法,因为组件里面的东西优先级更高)const
常量来引入。我们在引入子组件的时候,最好子组件里面都是抽象的东西,通过父组件去传递 suggest
组件的40行vue-cli
构建工具中,如果要上传空文件到 Github
上面需要一个 .gitkeep
文件,否则空文件是不会上传到 github
上面的vuex
定义数据的时候首先要想到我们需要什么数据,相关最底层数据=>stategetter
数据的映射,通常是一个函数,类似计算属性,可以根据 state
计算出一些属性,也可以是一些复杂的判断逻辑
mutation
,定义我们修改数据的逻辑,mutation-types
定义我们mutation
需要哪些动作即函数名
vue
的使用中,如果 data
中的键和 methods
对象中定义的函数名称相同,会有警告提示,因为会出现对象覆盖对象的情况,所以不允许出现这样的情况。优先级关系:props
优先级 > data
优先级 > methods
优先级vue2.0
以上的版本,最终渲染都是通过 render
函数,如果写的是template
属性,则需要编译成 render
函数(生命周期图可以看出)期待我的续更吧,或许写的有点糟糕,我是初学者,如有错误之处,请多多请教(sunseekers_)。