Vue

渐进式框架

众前端周知,Vue是一套用于构建用户界面的渐进式框架,自底向上逐层应用,关注视图层。那我们就来说道说道:

渐进式:声明式渲染->组件系统->客户端路由(router)->数据管理状态(Vuex)->构建工具(npm)

所谓的渐进式:我觉得就是渐进嘛,一步一步来,首先Vue给了你核心的Vue核心库,实现最基本的组件系统、双向数据绑定。但是你要新的,强大的功能,可以啊,没有问题,自己添加嘛,逐步根据自己的需求添加相应的插件。就比如说:你需要路由了,你去添加Vue-router,你需要状态管理了,你添加Vuex,渐进式的添加使用你所需要的功能。

核心点:

响应式数据绑定:数据发生变化的时候,试图自动更新,实现数据的双向绑定。就是利用ES6的Object.definedProperty中的getter/setter代理数据,监控对数据的操作。

组合的视图组件:页面最终就是一个组件树,采用树形的数据结构进行数据结构的设计,方便之后的维护和使用。

虚拟DOM

利用内存中生成的与真实的DOM对应的dom树结构,当数据发生变化时,用最小的代价将刷新的组件应用到DOM操作上。

基本的内部指令

这个部分主要的指令就不展示了,提几个有意思的点吧:

  1. v-if 和 v-show的区别

    v-if:在切换过程中条件内的事件监听器和子组件适当的被销毁,重建,开销比较高,一般改变比较少的时候使用;

    v-show:灵活的使用css的display属性,开销比较小,需要频繁切换的时候使用。

  2. {{msg}}一般取值的话会有一个弊端就是,在网速很慢的时候,或者js加载很慢的时候,就会在页面直接显示{{msg}},可以用v-text解决这个问题、

<div>{{meg}}</div>
<!-- 和下面的一样 -->
<div v-text="meg"></div>

3.v-pre

直接输出原值,也就是不会输出渲染的值(vue中的data)

<div v-pre>{{meg}}</div>

4.v-cloak

在vue渲染完了指定的整个DOM之后才进行显示,必须和CSS一起使用

// css
[v-cloak] {
display: none;
} // html
<div v-cloak>{{meg}}</div>

5.v-once

只显示一次DOM改变的值,之后就不再改变了,优化了DOM消耗资源的问题,对页面的加载其实是很好的

生命周期

常用的一些选项

  1. computed

    计算属性:主要就是对原来的数据进行改造(格式化输出:大小写转换,排序,添加符号)
  2. methods

    方法属性:用于绑定HTML中的事件对应的方法
  3. watch

    数据变化监听器:主要用于监测data中的数据变化

    4.filters

    过滤器:通常格式化字符,使用传值
filters: {
filterA(value) {
return value.toUpperCase();
}
}
  1. mixins

    混入:用于减少代码污染、减少代码量、实现代码的重用

6.extends

扩展:对构造器进行扩展

组件基础

  1. 组件注册

    全局注册
// script
Vue.component('button-counter', {
data: function () {
return {
count: 0
}
},
template: '<button v-on:click="count++">全局组件显示: {{ count }}</button>'
}); new Vue({
el: '#app'
}); // html使用
<button-counter></button-counter>

局部注册

// script
new Vue({
el: '#app',
components:{
"button-inner":{
data: function() {
return {
inner: 0
}
},
template: '<button v-on:click="inner++">局部组件显示: {{ inner }}</button>'
}
}
}); // html使用
<button-inner></button-inner>

简单对比组件,可以发现:就是说全局的组件注册呢,就是Vue.component的一个使用,在对象里面添加组件名,组件属性,之后就可以在全局调用组件了,一般不推荐使用吧;之后就是局部组件,那就是在绑定的组件里面去声明组件,然后调用,这个用法在路由中不就得到了广泛的应用么

父子组件

// script
// 子组件
var city = {
template:`<div>Sichuan of China</div>`
}
// 父组件
var parent = {
template:
`<div>
<p> Panda from China!</p>
<city></city>
</div>`,
components:{
"city": city
}
} // 实例化
new Vue({
el: '#app',
// 定义局部组件
components:{
// 组件注册
"parent": parent
}
}); // html使用
<parent></parent>

模板使用

vue中的模板用template实现

  1. 选项模板:一般选项模板就是在实例化的时候将template放入实例化之中
  2. template标签模板
  3. script type="x-template"标签模板

插槽 slot

关于插槽这个概念,通俗的根据我的理解,就是一个用来放置其他东西的空间,应该是说:可以提供空间给其他的组件使用

  1. 单个slot

    也就是我们说到的默认插槽,匿名插槽,不设置name属性
  2. 具名slot

    slot添加了name属性,也就是具名插槽了,可以在一个组件中出现多次

    必须写在template中

写在最后,几天重新学Vue之后吧,感觉比之前是好挺多的,对很多的概念啥的有了更深的理解吧,就像之前的ThinkPHP5.0,起初就是为了实现基本的功能,但是,还是没有深入的了解到整个框架比较重要的部分吧。二次入门还是收获很多的。有些东西还是得经过时间的磨练呀

关于Vue的那些事儿的更多相关文章

  1. 公用的cefsharp窗口

    书接上回,.net实现一个nw,一个字,简单. 结构,无废话,上图. 要说这部分上回展示过的,大致结构如此,其实要说清楚结构,还是得从工作流程开始说起 流程 1.通过桌面的快捷方式启动WebOnDes ...

  2. [VUE]关于路由哪些事儿

    什么是路由 之前有个小伙伴面试被问到:面试官:不用vue能不能写单页面应用?答:用angular啊(咳咳,开个玩笑),答案确实是可以的,原生js中有个事件叫做onhashchange,可以在windo ...

  3. Vue组件库的那些事儿,你都知道吗?

    前段时间一直在研究Vue组件库,终于在组内派上了用场.来给大家贡献一篇关于Vue组件库的相关知识.经验不多,如果有不合理的地方还请多多指出哦--- 回想一下,在你们公司或者你们小组是否有一个以上的项目 ...

  4. 浅谈Vue模板的那些事儿

    接触过vue的童鞋都知道,组件的模板一般都是在template选项内定义的,如 Vue.component('child-component', { template: '<h3>我是闰土 ...

  5. vue组件通信那些事儿

    一.说说通信 通信,简言之,交流信息.交流结束后,把信息放在哪里,这是一个值得思考的问题.vue中保存状态有2种方式,组件内的data属性和组件外的vuex的state属性. 1.用state的场景 ...

  6. vue那些事儿

    本篇文章基于vue2,vuejs不支持ie8,因为es5的Object.defineProperty特性不被ie8支持,而vue正是使用Object.defineProperty把遍历过的data属性 ...

  7. Vue那些事儿之用visual stuido code编写vue报的错误Elements in iteration expect to have 'v-bind:key' directives.

    当用vsc打开我们的vue代码时,在其他编辑器里面本来没有错误,到这个编辑器里面 v-for就出毛病了.如下图所示, 那是因为我们打开了对vue进行Eslint的检查. 搜索vetur.validat ...

  8. vue cli 3 那些事儿

    配置 eslint 可在 package.json 中的 eslintConfig 中配置,比如允许在代码中使用 console,package.json 中配置如下 ... "eslint ...

  9. !!误解--var vm = new vue({}) 与 export default {} 是一回事儿??

    这两者完全不是同一回事.export default {} 是es6的module中的语法, 而var vm = new vue({}) 是创建一个vue实例.引起误解是因为用了webpack开发vu ...

随机推荐

  1. Canal v1.1.4版本避坑指南

    前提 在忍耐了很久之后,忍不住爆发了,在掘金发了条沸点(下班时发的): 这是一个令人悲伤的故事,这条情感爆发的沸点好像被屏蔽了,另外小水渠(Canal意为水道.管道)上线一段时间,不出坑的时候风平浪静 ...

  2. 【模式识别与机器学习】——SVM举例

  3. C#LeetCode刷题之#62-不同路径(Unique Paths)

    目录 问题 示例 分析 问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3680 访问. 一个机器人位于一个 m x ...

  4. 5招详解linux之openEuler /centos7防火墙基本使用指南

    防火墙是一种防火墙管理解决方案,可用于许多 Linux 发行版,它充当 Linux 内核提供的 iptables 数据包筛选系统的前端.在本指南中,将介绍如何为服务器设置防火墙,并向你展示使用管理工具 ...

  5. MongoDB学习4:MongoDB复制集机制和原理,搭建复制集

    1.复制集的作用   1.1 MongoDB复制集的主要意义在于实现服务高可用   1.2 它的实现依赖于两个方面的功能:    · 数据写入时将数据迅速复制到另一个独立节点上    · 在接收写入的 ...

  6. 45道Promise面试题

    来看看通过阅读本篇文章要点: Promise的几道基础题 Promise结合setTimeout Promise中的then.catch.finally Promise中的all和race async ...

  7. 使用树莓派搭建LoRaWAN网关并接入腾讯云物联网开发平台

    安装树莓派环境 制作镜像 下载img文件烧录器 传送门:img文件烧录器地址,下载完成之后双击安装 下载镜像文件 传送门:树莓派系统镜像 推荐下载这个版本的img,因为有桌面,并且大小适中. 下载完之 ...

  8. libview关于图片导入并显示

    1 程序框图->图形与声音->图形格式,选择“写入某个格式的图片”,然后在路径处创建输入控件,然后在“图片函数”中选择“绘制平面像素图”,在控件输出端“新图片”创建显示控件.打开前面板,在 ...

  9. window下git多账户管理

    前言 一般情况下,我们都是一台电脑配置一个Git账号,使用如下命令: git config --global user.name "your name" git config -- ...

  10. 「完整案例」基于Socket开发TCP传输客户端

    ​1 程序界面设计 TCP客户端在上位机开发中应用很广,大多数情况下,上位机软件都是作为一个TCP客户端来与PLC或其他服务器进行通信的.TCP客户端的主要功能就是连接服务器.发送数据.接收数据.断开 ...