目录
Vue是一套用于构建用户界面的渐进式JavaScript框架
Vue可以自底向上逐层的应用
- 简单应用:只需一个轻量小巧的核心库
- 复杂应用:可以映入各式各样的Vue框架
遵循MVVM模式,编码简洁,体积小,运行效率高,适合移动/PC端开发
- 采用组件化模式,提高代码复用率,且让代码更好维护
- 声明式编码,让编码人员无需直接操作DOM,提高开发效率
- 使用虚拟DOM+优秀的Diff算法,尽量复用DOM
想让Vue工作,就必须创建一个Vue实例,且要传入一个配置对象

- root容器里的代码依然符合html规范,只不过混入了一些特殊的Vue语法
- root容器里的代码被称为【Vue模板】
- Vue实例和容器是一一对应的,正式开发中只有一个Vue实例,并且会配合着组件一起使用
html 中包含了一些 JS 语法代码,语法分为两种,分别为
- 插值语法(双大括号表达式)
- 指令(以 v-开头)
功能:用于解析标签体内容
写法:{{xxx}},xxx是js表达式,且可以直接读取到data中所有的属性

功能:用于解析标签(包括:标签属性、标签体内容,绑定事件。。。)
写法:v-bind:href = "xxx" 或简写为:href="xxx",xxx同样要写表达式,且可以直接读取到data中所有的属性
![]()
Vue的数据绑定分为两种绑定方式:单项数据绑定 和 双向数据绑定
- 语法:v-bind:href ="xxx" 或简写为 :href
- 特点:数据只能从 data 流向页面
- 语法:v-mode:value="xxx" 或简写为 v-model="xxx"
- 特点:数据不仅能从 data 流向页面,还能从页面流向 data

在创建Vue的实例对象时,有两个属性是我们必须使用到的,el 和 data属性
1. el的两种写法
1. new Vue的时候配置el属性
- new Vue({
- el: '#root',
- data: {
- name: '张三'
- }
- })
2. 先创建Vue实例,随后再通过vm.$mount('#root')指定el的值
- new Vue({
-
- data: {
- name: '张三'
- }
- }).$mount('#root')
2. data的两种写法
1. 对象式
- new Vue({
- el: '#root',
- data: {
- name: '张三'
- }
- })
2. 函数式
- new Vue({
- data() {
- return {
- name: '张三'
- }
- }
- }).$mount('#root')
- M:模型(Model):对应的data中的数据
- V:视图(View):模板
- VM:视图模型(ViewModel):Vue实例对象

-
- let number = 18;
- var person = {
- name: '张三',
- sex: '男',
-
- }
-
- Object.defineProperty(person, "age", {
- // value: 18,
- // enumerable: true,//控制属性是否可以枚举,默认值是false
- // writable: true,//控制属性是否可以被修改,默认值是false
- // configurable: true,//控制属性是否可以被删除,默认值是false
-
- //当有人读取person的age属性时,get函数(getter)就会被调用,且返回值就是age的值
- get() {
- return number;
- },
- //当有人修改person的age属性时,set函数(setter)就会被调用,且会收到修改的具体值
- set(value) {
- number = value;
- }
- })
- // console.log(Object.keys(person));
-
-
- console.log(person);
-
- enumerable:true, //控制属性是否可以枚举,默认值是false
- writable:ture, //控制属性是否可以被修改,默认值是false
- configurable:true //控制属性是否可以被删除,默认值是false
通过一个对象对另一个对象中的属性的操作(读、写)
通过vm对象来代理data对象中属性的操作(读/写)
好处:更加方便地操作data中的数据
基本原理:
- 通过Object.defineProperty()把data对象中所有的属性添加到vm上
- 为每一个添加到vm上的属性,都指定一个getter/setter
- 在getter/setter内部去操作(读/写)data中对应的属性
- 使用v-on:xxx 或 @xxx 绑定事件,其中xxx是事件名
- 事件的回调需要配置在methods对象中,最终会在vm上
- methods中配置的函数,不要用箭头函数!否则this指向的就不是vm了
- methods中配置的函数。都是被Vue所管理的函数,this的指向是vm 或组件实例对象
- @click = "demo" 和@click = “demo($event)”效果一致,但是后者可以传参
- <div id="root">
- <h1>欢迎来到{{name}}h1>
- <button v-on:click="showInfo1">时间的基本使用1button>
- <button @click="showInfo2($event,12)">时间的基本使用2button>
- div>
- Vue.config.productionTip = false;//阻止 vue 在启动时生成生产提示。
- new Vue({
- el: '#root',
- data: {
- name: '尚硅谷'
- },
- methods: {
- showInfo1() {
- alert('同学你好!');
- },
- showInfo2(event, a) {
- // alert('你好同学!!')
- console.log(event.target.innerHTML);
- console.log(a);
- }
- }
- })
-
| 事件修饰符 | 说明 |
|---|---|
| prevent | 阻止默认事件(常用) |
| stop | 阻止事件冒泡(常用) |
| once | 事件只触发一次(常用) |
| capture | 使用事件的捕获模式 |
| self | 只有event-target是当前操作的元素时才触发事件 |
| passive | 时间的默认行为为立即执行,无需等待事件回调执行完毕 |

vue中常见的按键别名
| 键盘按键名称 | 按键别名 |
|---|---|
| 回车 | enter |
| 删除 | delete(捕获“删除‘和”退格“键) |
| 退出 | esc |
| 空格 | space |
| 换行 | tab(特殊,必须配合keydown取使用) |
| 上 | up |
| 下 | down |
| 左 | left |
| 右 | right |
- vue未提供别名的按键,可以使用按键原始的key值去绑定,但是注意要转为kebab-case(短横线命名)
- 也可以使用keyCode取指定具体的按键(不推荐)
- 可以去定制按键别名: Vue.config.keyCodes.自定义键名 = 键码
系统修饰键(用法特殊)
ctrl,alt,shift,meta