Vue.js的使用经验
Vue.js的意义
- 解耦了视图与数据
- 可复用的组件
- 前端路由
- 状态管理
- 虚拟DOM
Vue提供了很多实例属性与方法,都以$开头
- $el可以访问挂载Vue实例的元素。
- $set可以修改Vue实例的数据内容
- $event可以访问原生DOM事件
- $emit()触发事件
- $on()监听子组件事件
- $parent访问组件的父组件
- $children访问组件的子组件
- $refs可以取得子组件的索引名称
- $nextTick下一个事件循环
- $mount()可以手动挂载一个未挂载对实例,Vue.extend可以创建一个实例
- $route访问路由信息
- $router路由实例对象
- $store获取Vuex中的仓库store
- $options可以获取定义在data外的数据和方法
Vue常用的指令
- v-model
- v-html(输出HTML而不是纯文本)
- v-pre(使用 {{}}时跳过编译过程)
- v-if v-else-if v-else(条件渲染)
- v-show(CSS属性切换)
- v-bind(动态更新HTML元素上的属性)
- v-on
- v-cloak(在简单的项目中可以解决初始化慢导致页面闪动的问题)
- v-once(组件只渲染一次)
- v-for(可以遍历数组和对象的属性)
绑定class的几种方式
- 给v-bind:class设置一个对象,这个对象可以有多个属性,当某个属性为true时,元素便拥有该类名。
- 给v-bind:class绑定一个数组,类名为数组元素对应的值。
- 对象语法和数组语法也可以使用在组件上,但该组件的最外层必须是根元素,否则失效。
绑定内联样式的方式和绑定class相似
修饰符
Vue支持在@绑定的事件后加修饰符来达成某种特定功能
- .stop(阻止冒泡)
- .prevent(不再重载页面)
- .capture(使用事件捕获模式)
- .self(只在事件发生在元素自身上才触发事件)
- .once(只触发一次)
- .lazy(用在输入框中,会转变为在change事件中同步)
- .number(用在输入框中,可以将输入变为Number类型)
- .trim(用在输入框中,可以过滤输入的首尾空格)
组件通信
- 父组件向子组件传值:props
- 子组件向父组件传值:自定义事件(v-on监听子组件,在子组件内用$emit(‘事件名’,传递的数据)触发事件)
- 非父子组件传值:中央事件总线(bus),父链和子组件索引(在子组件标签上定义ref的值,父组件中使用this.$refs访问对应子组件),Vuex
自定义指令
注册自定义指令分为全局注册和局部注册
//全局注册
Vue.directive('command',{
//指令选项
})
//局部注册
var app = new Vue({
el:'#app',
derective:{
command:{
//指令选项
}
}
})
指令选项由几个钩子函数组成
- bind(指令第一次绑定到元素时调用)
- inserted(被绑元素插入父元素时调用)
- update(被绑元素更新时调用)
- componentUpdated(被绑元素所在模版完成更新周期时调用)
- unbind(解绑时调用)
每个钩子函数都有几个可用参数
- el(指令所绑定元素)
- binding(一个对象,包含name(指令名),value(指令的绑定值),oldValue(前一个绑定值),expression(绑定值的字符串形式),arg(传给指令的参数),modifiers(修饰符的对象))
- vnode(虚拟节点)
- oldVnode(上一个虚拟节点)
路由跳转
vue-router有两种跳转页面的方式
- 使用内置的
<router-link>组件,最终会被渲染为<a>标签 - 使用router实例的方法($router有push(可以跳转页面),replace(替换掉当前页面,不会向history添加新纪录),go(可以前进或者后退页面))
vue-router有两个导航钩子
- beforeEach(在路由改变之前触发)
- afterEach(在路由改变之后触发)
导航钩子函数有3个参数
- to(要进入的路由对象)
- from(即将离开的路由对象)
- next(调用此方法后才能进入下一个钩子)
状态管理与Vuex
- 数据保存在state字段内并且只能读取,可以通过$store.state取得
const store = new Vuex.Store({
state:{
count : 0
}
})
- mutations可以修改state内的数据,通过this.$store.commit(方法名)方法可以执行mutations,通常在mutations处理同步的数据
mutations:{
increment(state){
state.count++;
},
decrease(state){
state.count--;
}
}
- getter可以将组件写在计算属性中的内容进行封装,可以通过$store.getters访问
getters:{
filteredList:state = >{
return state.list.filter(item => item < 10);
}
}
- action可以异步操作state的数据,可以通过$store.dispatch触发,并且内部提交的是mutation,相当于异步中转mutation的操作
mutations:{
increment(state,n = 1){
state.count += n;
}
},
actions:{
increment(context){
context.commit('increment');
}
}
- 当项目足够大时,会用到modules将store分为多个store,每个store拥有自己的state,mutations,getters,actions
Vue.js的使用经验的更多相关文章
- 前端开发工具vue.js开发实践总结
最近有很长时间没有更新博客了,换了公司,全部的心思都放在项目上了.通过这次项目的上线,让我感受最深的是前后端分离后,前端页面的模块化管理,以及前端页面的数据邦定.在接触vue.js之前,我之前端要用到 ...
- Vue.js—快速入门
Vue.js是什么 Vue.js 是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,它不仅易于上手,还便于与第三方库或既有项目 ...
- 我从Angular 2转向Vue.js, 也没有选择React
译者按: 通过使用Angular的经历,作者已经完全转为Vue粉了!我们Fundebug目前还是用AngularJS 1,坦白说,学习曲线蛮陡的. 原文: Why we moved from Angu ...
- Vue.js是什么,vue介绍
Vue.js是什么,vue介绍 Vue.js 是什么Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用. ...
- Vue.js—快速入门及实现用户信息的增删
Vue.js是什么 Vue.js 是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,它不仅易于上手,还便于与第三方库或既有项目 ...
- Vue.js学习笔记(一) - 起步
本篇将简单介绍一下Vue.js,并在Node.js环境下搭建一个简单的Demo. 一.简介 我个人理解,Vue.js是一套前端视图层的框架,它只关心视图展示和数据绑定,它的一些语法与Angular 1 ...
- 公司内部技术分享之Vue.js和前端工程化
今天主要的核心话题是Vue.js和前端工程化.我将结合我这两年多的工作学习经历来谈谈这个,主要侧重点是前端工程化,Vue.js侧重点相对前端工程化,比重不是特别大. Vue.js Vue.js和Rea ...
- Vue.js 和 MVVM 小细节
MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自 ...
- Vue.js 2.0 和 React、Augular等其他框架的全方位对比
引言 这个页面无疑是最难编写的,但也是非常重要的.或许你遇到了一些问题并且先前用其他的框架解决了.来这里的目的是看看Vue是否有更好的解决方案.那么你就来对了. 客观来说,作为核心团队成员,显然我们会 ...
- 窥探Vue.js 2.0 - Virtual DOM到底是个什么鬼?
引言 你可能听说在Vue.js 2.0已经发布,并且在其中新添加如了一些新功能.其中一个功能就是"Virtual DOM". Virtual DOM是什么 在之前,React和Em ...
随机推荐
- W04 散文周刊 : 重回Emacs
W04 散文周刊 : 重回Emacs 邮箱:ppbhoy@qq.com 博客地址: www.pipihao.com 公纵号:南湖小皮 公告:后面会开始稳定更新 使用Emacs还是有些沉重,我一直将Em ...
- Zookeeper01 简介和单机安装使用
1 zookeeper几个关键的东西 1.1 数据结构-节点 /a/b/c 节点 包含了目录和文件的特性(名称类似目录,本身又类似文件携带数据) 1.2 节点分类 永久/临时|有序/无须 特点一:节点 ...
- 为什么称不坑盒子是wps和word使用者的救世主呢?
不坑盒子 很多朋友在工作过程中需要对Word文档进行编辑处理,如果想让Word排版更有效率可以试试小编带来的这款不坑盒子软件,这是一个非常好用的插件工具,专门应用在Word文档中,支持Office 2 ...
- Altium Designer v23.0.1.38图文详解
Altium Designer (AD) 最新安装河蟹教程 ,ltium designer 显著地提高了用户体验和效率,利用时尚界面使设计流程流线化,同时实现了前所未有的性能优化.使用64位体系结 ...
- C#汉字转拼音(Microsoft.PinYinConverter)
1. NuGet程序包 Microsoft.PinYinConverter 2. 使用方法 var chineseChar = new ChineseChar('中'); var pyStr = ch ...
- VisionPro学习笔记(1)——软件介绍和基本使用
前言 自己使用visionPro已经有段时间了,最近也一直在研究其算子的理论,为了加深印象,计划将自己的学习笔记整理在博客园,当然其官方文档对如何使用及其各种算子都有详细的介绍,所以这里的笔记仅仅为个 ...
- P3_注册小程序账号&安装开发者工具
注册小程序账号 点击注册按钮 使用浏览器打开 https://mp.weixin.qq.com/ 网址,点击右上角的"立即注册"即可进入到小程序开发账号的注册流程,主要流程截图如下 ...
- Windows MongoDB的安装及配置图文说明(非常详细)
1.下载 MongoDB 预编译二进制包下载地址:https://www.mongodb.com/try/download/community 2.安装 1)选择接受许可协议,点击Next下一步: 2 ...
- 删除resource中的图片后编译报错
同僚的一篇文章是:https://www.cnblogs.com/jljxxf/archive/2012/08/19/2646937.html, 详细介绍了C#的Resources,其中关于删除资源这 ...
- 关于联想对Jim博士的质疑
对Jim博士质疑的质疑 因为关注司马南,从他的空间里看到Jim博士和其龃龉,大致看了Jim博士头条里的文章,因为看到自己常用的EPICS,上午匆忙就写了上面的文. Jim博士是去年在头条上看到的,因为 ...