Day1-初识vue
1、什么是vue?
官方解释
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
自我认识
Vue.js的核心是采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统。
Vue是一个渐进式的框架,什么是渐进式的呢?
①渐进式意味着你可以将Vue作为你应用的一部分嵌入其中,带来更丰富的交互体验。
②或者如果你希望将更多的业务逻辑使用Vue实现,那么Vue的核心库以及其生态系统。(vue全家桶)
③比如Core+Vue-router+Vuex(vue全家桶),也可以满足你各种各样的需求。Vue有很多特点和Web开发中常见的高级功能
- 解耦视图和数据
- 可复用的组件
- 前端路由技术
- 状态管理
- 虚拟DOM
Vue的核心是帮助开发人员减少不必要的DOM操作,提高渲染效率
2、vue的安装
方法一:下载引入
- 开发环境 https://vuejs.org/js/vue.js
- 生产环境 https://vuejs.org/js/vue.min.js
- 下载完后必须要在页面通过script标签引入。
注:开发环境是包含完整的警告和调试模式,而生产环境则删除了警告。另外,在使用script标签引入vue的时候,Vue会被注册成为一个全局变量。
方法二:直接CDN引入
你可以选择引入开发环境版本还是生产环境版本
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<!-- 生产环境版本,优化了尺寸和速度 -->
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
方法三:NPM安装
在用 Vue 构建大型应用时推荐使用 NPM 安装。NPM 能很好地和诸如 webpack 或 Browserify 模块打包器配合使用。同时 Vue 也提供配套工具来开发单文件组件。
# 最新稳定版
$ npm install vue
3、vue中的MVVM
什么是MVVM?
(1)MVVM的定义?
M:Model(服务器上的业务逻辑操作)
V:View(页面)
VM:ViewModel(Model与View之间核心枢纽,比如Vue.js)
Model与ViewModel之间是双向关系
- Model通过Ajax通信,发送数据给ViewModel。
- ViewModel也可以通过Ajax通信,发送请求给Model。
ViewModel与View之间也是双向关系
- ViewModel中的数据改变,可以同时改变View上的显示内容。
- View上的内容改变(比如输入框中的内容),也可以同时改变ViewModel中对应的数据。


(2)计数器的MVVM
我们的计数器中就有严格的MVVM思想
- View依然是我们的DOM
- Model就是我们我们抽离出来的obj
- ViewModel就是我们创建的Vue对象实例
它们之间如何工作呢?
首先ViewModel通过Data Binding让obj中的数据实时的在DOM中显示。
其次ViewModel通过DOM Listener来监听DOM事件,并且通过methods中的操作,来改变obj中的数据。
有了Vue帮助我们完成VueModel层的任务,在后续的开发,我们就可以专注于数据的处理,以及DOM的编写工作了。
4、创建Vue实例传入的options
你会发现,我们在创建Vue实例的时候,传入了一个对象options。
这个options中可以包含哪些选项呢?
- 详细解析:link.
- 目前掌握这些选项:
- el:
类型:string | HTMLElement(document.querySelector())
作用:决定之后Vue实例会管理哪一个DOM。 - data:
类型:Object | Function (组件当中data必须是一个函数)
作用:Vue实例对应的数据对象。 - methods:
类型:{ [key: string]: Function }
作用:定义属于Vue的一些方法,可以在其他地方调用,也可以在指令中使用。可定义多个,用逗号隔开。
- el:
(1)数据与方法
当一个 Vue 实例被创建时,它将 data 对象中的所有的 property 加入到 Vue 的响应式系统中。当这些 property 的值发生改变时,视图将会产生“响应”,即匹配更新为新的值。(当这些数据改变时,视图会进行重渲染。)**值得注意的是只有当实例被创建时就已经存在于 data 中的 property 才是响应式的。**也就是说如果你添加一个新的 property,比如:
vm.b = 'hi'
像上面,VM是vue的一个实例,那么对 b 的改动将不会触发任何视图的更新。如果你知道你会在晚些时候需要一个 property,但是一开始它为空或不存在,那么你仅需要设置一些初始值。比如:
data: {
newTodoText: '',
visitCount: 0,
hideCompletedTodos: false,
todos: [],
error: null
}
小贴士
唯一的例外是使用 Object.freeze(),这会阻止修改现有的 property,也意味着响应系统无法再追踪变化。
var obj = {
foo: 'bar'
}
Object.freeze(obj)
new Vue({
el: '#app',
data: obj
})
<div id="app">
<p>{{ foo }}</p>
<!-- 这里的 `foo` 不会更新! -->
<button v-on:click="foo = 'baz'">Change it</button>
</div>
除了数据 property外,Vue 实例还提供了一些有用的实例 property 与方法。它们都有前缀 $,以便与用户定义的 property 区分开来。例如:
var data = { a: 1 }
var vm = new Vue({
el: '#example',
data: data
})
vm.$data === data // => true
vm.$el === document.getElementById('example') // => true
// $watch 是一个实例方法
vm.$watch('a', function (newValue, oldValue) {
// 这个回调将在 `vm.a` 改变后调用
})
5、Vue的生命周期
(1)生命周期钩子
每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。
比如 created 钩子可以用来在一个实例被创建之后执行代码:
new Vue({
data: {
a: 1
},
created: function () {
// `this` 指向 vm 实例
console.log('a is: ' + this.a)
}
})
// => "a is: 1"
(2)生命周期图示
官方图示:
理解图示:
小贴士
不要在选项 property 或回调上使用箭头函数,比如 created: () => console.log(this.a) 或 vm.$watch(‘a’, newValue => this.myMethod())。因为箭头函数并没有 this,this 会作为变量一直向上级词法作用域查找,直至找到为止,经常导致 Uncaught TypeError: Cannot read property of undefined 或 Uncaught TypeError: this.myMethod is not a function 之类的错误。
(3)生命周期开发的业务逻辑
created:进行 ajax 请求异步数据获取、初始化数据
mounted:挂载元素内 dom 节点的获取
nextTick:单一事件更新数据后立即操作 dom
updated:数据更新统一的业务逻辑处理
watch:监听具体数据变化,并做相应处理
下一篇:vue的基础语法
https://blog.csdn.net/victory_CEO/article/details/112427352