Vue.js知识点

独立构建和运行时构建

有两种构建方式,独立构建和运行构建。它们的区别在于前者包含模板编译器而后者不包含。

模板编译器的职责是将模板字符串编译为纯JavaScript的渲染函数。如果你想要在组件中使用template选项,你就需要编译器。

生命周期

具体查看官网的流程图,要注意的是created和mounted区别,created是vm实例已创建但未挂载,因此一些DOM操作应该放在mounted中。异步请求放在created或者mounted暂时没发现什么区别,如您知道有什么区别,请评论指出。

计算(computed)属性

模板内的表达式不应该包含太多的逻辑,对于任何复杂逻辑,都应当使用计算属性

computed属性和methods不同的是计算属性是基于它们的依赖进行缓存的。

computed属性和computed属性,通常更好的想法是使用computed属性而不是命令式的watch回调。虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的watcher。当你想要在数据变化响应时,执行异步操作或开销较大的操作,这是很有用的。

数组更新检测

数组的变异方法(mutation method,会改变被这些方法调用的原始数组)会触发视图更新,有以下七个:

push()

pop()

shift()

unshift()

splice()

sort()

reverse()

当使用非变异方法时,可以用新数组替换旧数组,或者使用Vue.set方法。

对象更新

可以用新对象替换旧对象,或者使用Vue.set方法

Vue.set(vm.someObject,'foo','bar')

this.someObject = Object.assign({},this.someObject, {a:1,b:2})

事件处理器

Vue.js为v-on提供了事件修饰符和按键修饰符

表单控件绑定

可以用v-model指令在表单控件元素上创建双向数据绑定。常见修饰符有.lazy、.number、.trim。

也可以使用自定义事件的表单输入组件。

组件

Vue组件的API来自三部分:props,events和slots:

Props允许外部环境传递数据给组件

Events允许组件触发外部环境的副作用

Slots允许外部环境将额外的内容组合在组件中。

1)组件的data属性必须是函数

2)父子组件

在Vue.js中,父子组件的关系可以总结为 props down, events up 。父组件通过props向下传递数据给子组件,子组件通过events给父组件发送消息。

prop是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来。这是为了防止子组件无意修改了父组件的状态——这会让应用的数据流难以理解。

另外,每次父组件更新时,子组件的所有prop都会更新为最新值。这意味着你不应该在子组件内部改变prop。如果你这么做了,Vue会在控制台给出警告。

为什么我们会有修改prop中数据的冲动呢?通常是这两种原因:

1.prop作为初始值传入后,子组件想把它当作局部数据来用;

2.prop作为初始值传入,由子组件处理成其它数据输出。

对这两种原因,正确的应对方式是:

1.定义一个局部变量,并用prop的值初始化它:

props: ['initialCounter'],

data:function(){

        return{ counter:this.initialCounter }

}

2.定义一个计算属性,处理prop的值并返回。

props:['size'],

computed: {

            normalizedSize:function() {   

                 return this.size.trim().toLowerCase()  

    }

}

注意在JavaScript中对象和数组是引用类型,指向同一个内存空间,如果prop是一个对象或数组,在子组件内部改变它会影响父组件的状态。

3)非父子组件

有时候两个组件也需要通信(非父子关系)。在简单的场景下,可以使用一个空的Vue实例作为中央事件总线。在复杂的情况下,我们应该考虑使用专门的状态管理模式。

4).sync修饰符

在一些情况下,我们可能会需要对一个prop进行『双向绑定』。

2.0中移除了.sync,Vue2.3.0+又将其添加回来了,但是这次它只是作为一个编译时的语法糖存在,它会被扩展为一个自动更新父组件属性的v-on侦听器。

5)使用slot进行内容分发

作用域插槽:接收从子组件中传递的prop对象。作用域插槽更具代表性的用例是列表组件,允许组件自定义应该如何渲染列表每一项

6)动态组件、is特性和keep-alive指令

7)子组件索引

尽管有props和events,但是有时仍然需要JavaScript中直接访问子组件。为此可以使用ref为子组件指定一个索引ID。

异步更新队列

虽然 Vue.js 通常鼓励开发人员沿着“数据驱动”的方式思考,避免直接接触 DOM,但是有时我们确实要这么做。为了在数据变化之后等待 Vue 完成更新 DOM ,可以在数据变化之后立即使用 Vue.nextTick(callback) 。这样回调函数在 DOM 更新完成后就会调用。

过渡效果

Vue在插入、更新或者移除DOM时,提供多种不同方式的应用过渡效果。包括以下工具:

在CSS过渡和动画中自动应用class

可以配合使用第三方CSS动画库,如Animate.css

在过渡钩子函数中使用JavaScript直接操作DOM

可以配合使用第三方JavaScript动画库,如Velocity.js

1)单元素/组件的过渡

Vue提供了transition的封装组件,在下列情形中,可以给任何元素和组件添加过渡

条件渲染(使用v-if)

条件展示(使用v-show)

动态组件

组件根节点

2)多个元素的过渡

对于原生标签可以使用 v-if/v-else

3)多个组件的过渡

多个组件的过渡我们可以使用动态组件。

4)列表过渡

Render函数和JSX

自定义指令

和Angular的指令类似,主要操作DOM,下面是一个滚动加载的指令,holder暂时没想到什么更好的处理方法:

混合

混合是一种灵活的分布式复用Vue组件的方式。混合对象可以包含任意组件选项。以组件使用混合对象时,所有混合对象的选项将被混入该组件本身的选项。

插件

1)创建插件

Vue.js的插件应当有一个公开方法install。这个方法的第一个参数是Vue构造器 , 第二个参数是一个可选的选项对象。

2)使用插件

通过全局方法Vue.use()使用插件:

// 调用`MyPlugin.install(Vue)`Vue.use(MyPlugin)

也可以传入一个选项对象:

Vue.use(MyPlugin, {someOption: true })

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 226,979评论 6 528
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 97,750评论 3 412
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 174,647评论 0 373
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,299评论 1 307
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,104评论 6 405
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,623评论 1 320
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,716评论 3 434
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 41,873评论 0 285
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,380评论 1 330
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,344评论 3 354
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,496评论 1 365
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,055评论 5 355
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,756评论 3 343
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,146评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,410评论 1 281
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,072评论 3 386
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,485评论 2 370

推荐阅读更多精彩内容