[WIP]Vue 基础
创建: 2019/05/30
更新: 2019/11/02 补充组件基础里未完成部分
https://cn.vuejs.org/v2/guide/
安装 |
初期选择直接嵌入 <!-- 开发环境版本,包含了有帮助的命令行警告 --> <!-- 生产环境版本,优化了尺寸和速度 --> |
||||||||||||||||||||||||||
声明式渲染 |
<div id="app"> var app = new Vue({ |
||||||||||||||||||||||||||
条件与循环 |
● v-if 参数为真时显示 <div id="app-3"> var app3 = new Vue({ ● v-for <div id="app-4"> var app4 = new Vue({ |
||||||||||||||||||||||||||
处理用户输入 |
● v-on 绑定事件 例: v-on:click <div id="app-5"> var app5 = new Vue({ ● v-model 表单输入和应用状态之间的双向绑定 <div id="app-6"> var app6 = new Vue({ |
||||||||||||||||||||||||||
组件化应用构建 |
● 注册组件 Vue.component(组件名, 组件内容) 例 // 定义名为 todo-item 的新组件 <ol> ● 设计例 <div id="app"> |
||||||||||||||||||||||||||
Vue实例 | |||||||||||||||||||||||||||
创建一个vue实例 |
var vm = new Vue({ |
||||||||||||||||||||||||||
数据与方法 |
所有属性都以 $ 开头
|
||||||||||||||||||||||||||
声明周期钩子 |
● vue实例创建前后的处理
● 可挂载的钩子
|
||||||||||||||||||||||||||
声明周期图 |
|
||||||||||||||||||||||||||
template语法 | |||||||||||||||||||||||||||
插值 |
|
||||||||||||||||||||||||||
指令 |
所有指定以 v- 开始 v-once: 当前节点为根的节点树不会更新插值内容
|
||||||||||||||||||||||||||
缩写 |
● v-bind <!-- 完整语法 --> ● v-on <!-- 完整语法 --> |
||||||||||||||||||||||||||
计算属性和侦听器 | |||||||||||||||||||||||||||
计算属性 |
|
||||||||||||||||||||||||||
侦听器 |
watch: { |
||||||||||||||||||||||||||
class与style的绑定 | |||||||||||||||||||||||||||
绑定Class |
|
||||||||||||||||||||||||||
绑定内联Style |
|
||||||||||||||||||||||||||
条件渲染 | |||||||||||||||||||||||||||
v-if |
v-if , v-else-if , v-else ● 条件为真时渲染代码块 ● 如果要对多个元素使用条件, 可以包裹到 <template></template> <template v-if="ok"> ● 可以给元素设置唯一key, 有key的元素不会被混着重复利用 <template v-if="loginType === 'username'"> |
||||||||||||||||||||||||||
v-show |
条件为false时, 添加 display: none ● 不支持template, v-else, v-else-if |
||||||||||||||||||||||||||
v-if vs v-show |
一般来说, v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。 因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。
|
||||||||||||||||||||||||||
v-if与v-for一起使用 |
不要一起使用, 改用计算属性等计算好以后再v-for |
||||||||||||||||||||||||||
列表渲染 | |||||||||||||||||||||||||||
v-for对数组map | 写法:
v-for="item in items" 第二参数支持索引 v-for="(item, index) in items" 例: <ul id="example-1"> var example1 = new Vue({ |
||||||||||||||||||||||||||
v-for对对象 |
第二参数支持key名, 第三参数支持索引 v-for="value in object" 注: 枚举顺序为 Object.keys() 的顺序, 参考: https://www.cnblogs.com/lancgg/p/10403527.html 例: <table> sampleData: { |
||||||||||||||||||||||||||
维护状态 |
默认就地更新: 元素被改变了则更新元素而不是改变顺序匹配元素 加上key属性, 是的vue可以追踪 |
||||||||||||||||||||||||||
数组更新检测 |
● 被监视的变更数组的方法
● 对于不变更数组的方法, 把数组设置成相关方法的返回值 Vue只能识别, 只重新渲染需要的 ● 注: Vue不能识别如下变更方法
|
||||||||||||||||||||||||||
对象更新检测注意事项 |
Vue不能检测对象属性的添加或删除, 对现存属性的修改可以感应到 解决方法: Vue.set(object、propertyName、value) ● 合并object, 不要直接使用 Object.assign() , _.extend() 不要这样 Object.assign(vm.userProfile, { 要这样 vm.userProfile = Object.assign({}, vm.userProfile, { |
||||||||||||||||||||||||||
显示过滤/排序后的结果 |
不变更原数组, 只是表示的话用计算属性 <li v-for="n in evenNumbers">{{ n }}</li> data: { |
||||||||||||||||||||||||||
在v-for里使用值范围 |
v-for接受整数 <div> |
||||||||||||||||||||||||||
template的v-for |
和 v-if 一样, 可以对template使用 v-for <ul> |
||||||||||||||||||||||||||
v-for与v-if | 不要一起用 | ||||||||||||||||||||||||||
组件与v-for | # TODO: finish here | ||||||||||||||||||||||||||
监听事件 | |||||||||||||||||||||||||||
监听事件 |
v-on:事件名 例 <div id="example-1"> var example1 = new Vue({ |
||||||||||||||||||||||||||
事件处理方法 |
可以添加method, 然后事件触发时呼出 呼出方法: @事件名="方法名" 例 <div id="example-2"> |
||||||||||||||||||||||||||
内联处理器中的方法 |
也可以用式子来呼出方法 <button type="button" name="button" @click="msg('app-12')"> |
||||||||||||||||||||||||||
事件修饰符 |
● 可以不指定值, 只是用装饰符 <!-- 只有修饰符 --> ● 修饰符可以串联 <!-- 修饰符可以串联 --> ● 使用修饰符时,顺序很重要;相应的代码会以同样的顺序产生。 因此,用 v-on:click.prevent.self 会阻止所有的点击, 而 v-on:click.self.prevent 只会阻止对元素自身的点击。 |
||||||||||||||||||||||||||
按键修饰符 | # TODO: finish here | ||||||||||||||||||||||||||
系统修饰符 | # TODO: finish here | ||||||||||||||||||||||||||
为什么在 HTML 中监听事件? | # TODO: finish here | ||||||||||||||||||||||||||
表单绑定输入 | |||||||||||||||||||||||||||
基础用法 |
可用 v-model 在表单 <input> , <textarea> , <select> 上创建双向数据绑定 ● v-model 会忽略所有表单元素的 value 、 checked 、 selected 特性的初始值而总是将 Vue 实例的数据作为数据来源。 即Vue会忽略html设定的表单值 你应该通过 JavaScript 在组件的 ●
● v-model的本质 <input v-model="searchText"> 相当于 <input 当用在自定义组件上时, 相当于 <custom-input |
||||||||||||||||||||||||||
值绑定 | v-bind:value="..." | ||||||||||||||||||||||||||
修饰符 |
|
||||||||||||||||||||||||||
在组件上使用v-model | # TODO: finish here | ||||||||||||||||||||||||||
组件基础 | |||||||||||||||||||||||||||
基本示例 |
组件是可复用的 Vue 实例,且带有一个名字 我们可以在一个通过 new Vue 创建的 Vue 根实例中,把这个组件作为自定义元素来使用 // 定义一个名为 button-counter 的新组件 ● data, computed, methods, watch, 生命周期钩子等 |
||||||||||||||||||||||||||
组件的复用 |
注册的组件可以重复使用 <div id="components-demo"> ● data: function () { |
||||||||||||||||||||||||||
组件的组织 |
通常一个应用会以一棵嵌套的组件树的形式来组织 ● Vue.component(组件名, 组件) |
||||||||||||||||||||||||||
通过Prop向子组件传递数据 |
Vue.component('blog-post', { <blog-post title="My journey with Vue"></blog-post> |
||||||||||||||||||||||||||
单个根元素 |
每个组件必须只有一个根元素 |
||||||||||||||||||||||||||
监听子组件事件 |
抛出事件的方法 $emit(事件名, 参数) 例 <blog-post <button v-on:click="$emit('enlarge-text')"> ● 访问事件抛出的值
|
||||||||||||||||||||||||||
在组件上使用v-model |
● v-model的本质 <input v-model="searchText"> 相当于 <input 当用在自定义组件上时, 相当于 <custom-input 为了让它正常工作,这个组件内的
Vue.component('custom-input', { |
||||||||||||||||||||||||||
通过插槽分发内容 |
在需要的地方加入插槽 <slot></slot> |
||||||||||||||||||||||||||
动态组件 |
<!-- 组件会在 `currentTabComponent` 改变时改变 --> |
||||||||||||||||||||||||||
解析DOM模板时的注意事项 |
有些 HTML 元素,诸如 而有些元素,诸如 |
||||||||||||||||||||||||||
[WIP]Vue 基础的更多相关文章
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十八║Vue基础: 指令(下)+计算属性+watch
回顾 今天来晚辣,给公司做了一个小项目,一个瀑布流+动态视频控制的DEMO,有需要的可以联系我,公司的项目就不对外展示了(一个后端程序员真的要干前端了哈哈哈). 书接上文,昨天正式的开始了Vue的代码 ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十九║Vue基础: 样式动态绑定+生命周期
回顾 哈喽大家好,前后端分离系列文章又开始了,今天周一,还是感谢大家花时间来观看我写的博客,周末呢,没有写文章,但是也没有闲着,主要是研究了下遗留问题,看过之前文章的应该知道,之前的在AOP使用Red ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十║Vue基础终篇:传值+组件+项目说明
缘起 新的一天又开始啦,大家也应该看到我的标题了,是滴,Vue基础基本就到这里了,咱们回头看看这一路,如果你都看了,并且都会写了,那么现在你就可以自己写一个Demo了,如果再了解一点路由,ajax请求 ...
- python 全栈开发,Day89(sorted面试题,Pycharm配置支持vue语法,Vue基础语法,小清单练习)
一.sorted面试题 面试题: [11, 33, 4, 2, 11, 4, 9, 2] 去重并保持原来的顺序 答案1: list1 = [11, 33, 4, 2, 11, 4, 9, 2] ret ...
- Vue 基础精讲
Vue 基础精讲 Vue 官方文档:https://cn.vuejs.org/v2/guide/ VUE 实例 每个组件都是一个 vue 的实例. 一个 vue 项目是由实例组成的. vue 实例上有 ...
- Vue基础以及指令
Vue 基础篇一 一.Vue框架介绍 之前大家学过HTML,CSS,JS,JQuery,Bootstrap,现在我们要学一个新的框架Vue~ Vue是一个构建数据驱动的web界面的渐进式框架. 目 ...
- 2-5 vue基础语法
一.vue基础语法 语法: {{msg}} html赋值: v-html="" 绑定属性: v-bind:id="" 使用表达式: {{ok? "ye ...
- Vue 1-- ES6 快速入门、vue的基本语法、vue应用示例,vue基础语法
一.ES6快速入门 let和const let ES6新增了let命令,用于声明变量.其用法类似var,但是声明的变量只在let命令所在的代码块内有效. { let x = 10; var y = 2 ...
- vue基础知识之vue-resource/axios
Vue基础知识之vue-resource和axios(三) vue-resource Vue.js是数据驱动的,这使得我们并不需要直接操作DOM,如果我们不需要使用jQuery的DOM选择器,就没 ...
随机推荐
- Win7_自动播放
1.gpedit.msc(组策略)--.> 本地组策略编辑器 --> 展开“计算机配置→管理模板→所有设置” --> 右侧窗口"关闭自动播放" 2. 3.
- tkinter窗口系列之一——列表框
以下内容来自https://tkdocs.com/tutorial/morewidgets.html 一个列表框显示由单行文本所组成的一栏条目,通常它很冗长,它允许使用者通过列表浏览其中的内容,选择一 ...
- SpringMVC 文件上传及下载
首先需要导入jar包 创建一个jsp页面 package cn.happy.Controller; import java.io.File; import javax.servlet.http.Htt ...
- httpRequest.CookieContainer= cookie 与 httpRequest.Headers.Add("Cookie", cookie)
这两天做了一个获取cookie并且携带此cookie去请求另外一个url地址,中间携带cookie用了两种方式:1. httpRequest.CookieContainer= cookie (此coo ...
- 八 Django框架,模板语言
模板语言就是可以将动态数据在html模板渲染的语言 一.接收值渲染 locals()函数,写在请求响应render()函数里,可以将逻辑处理函数里的变量传到html用模板语言渲染 {{...}}接收一 ...
- Python中如何开发一个注册接口小实例
import flask from flask import request #想获取到请求参数的话,就得用这个 server = flask.Flask(__name__) #吧这个python文件 ...
- 不要使用Android Studio的Git Commit了---->记一次debug
今天下午写了一些代码,吃晚饭时分用Android Studio commit了一下,不知道有没有选择Commit and push,结果刚才代码出bug我想回滚到上个版本的时候,发现Android S ...
- informix 把数据从一个表倒到另外一个表中
drop table zrjReinUnClaimTmpT; create table zrjReinUnClaimTmpT ( mainid SERIAL not null, RepayNo var ...
- Qt Create 4.6.2无法自动生成Android Kit
开发环境: OS,Microsoft Windows [Version 10.0.17134.523] Qt,5.11.1 Qt Creator,4.6.2 JDK,1.8.0_181 Android ...
- 【Caffe】Ubuntu 安装 Caffe gpu版
安装环境:Ubuntu 16.04lts 64位, gcc5.4 gpu1050ti,cuda8.0,cudnn5.1.10 1. 安装依赖库 sudo apt-get install libprot ...