一、Vue简介

        Vue是一套前段框架,可以简化JS中的DOM操作,是基于MVVM(Model-View-ViewModel)思想,实现数据的双向绑定(模型和视图的双向绑定),View中数据的变化将自动反映到ViewModel上;反之,Model中数据的变化也将会自动展示在页面上。而把Model和View关联起来的就是ViewModel,即ViewModel负责把Model的数据同步到View显示出来,也负责把View的修改同步回Model。

二、Vue的使用

1.导入vue.js文件

  • 法一:在HTML页面中导入vue.js文件:
    <script src="js/vue.js"></script>
  • 法二:在终端使用npm安装vue(需要 nodejs 环境):
    npm install vue

2.创建核心对象

        在JS代码区域创建Vue核心对象(实例),进行数据绑定,关联页面的模板:
<script>
    //创建一个vue实例
  new Vue({
    el:"#app",  // #是id选择器,el将vue实例与元素进行绑定
    data(){     //封装数据
      name:"张三",
            num:1
    },
        methods:{   //封装方法
            cancle(){
                this.num--;
            }
        }
  })
</script>

3.编写视图

        使用v-model属性绑定对应的模型:
<div id="app">
  <input v-model="username">
    <!--插值表达式-->
  {{username}}
</div>

【tips】{{表达式}}:可以直接获取vue实例中定义的数据或函数,要求该表达式必须有返回值。使用{{}}在网速慢时会出现插值闪烁的问题,即数据未加载完成时页面会显示原始的{{表达式}}

三、Vue的常用指令

1.指令

        vue指令是HTML标签上带有v-前缀的特殊属性。

2.常用指令

指令 作用
v-bind
HTML标签绑定属性值,如动态设置href、CSS样式等。
【tips】v-bind可以省略,只留:即可。
v-model 创建双向绑定数据
v-on
HTML标签绑定事件
【tips】v-on:可以用@代替。
v-if 条件性地渲染某元素,类似于Java中的if判断,判定为true时渲染,否则不渲染。
v-else
v-else-if
v-show
如果条件满足,就展示数据
【tips】v-show与v-if的区别在于v-show切换的是display属性的值。
v-for 用来循环遍历容器的元素或对象的属性

3.事件修饰符

        Vue.js 为 v-on 提供了事件修饰符。修饰符是.开头的指令后缀来表示的:
  • .stop:阻止事件冒泡到父元素
  • .prevent:阻止默认事件发生
  • .capture:使用事件捕获模式
  • .self:只有元素自身触发事件才执行。(冒泡或捕获的都不执行)
  • .once:只执行一次

4.按键修饰符

        
        在监听键盘事件时,经常需要检查常见的键值。Vue 允许为 v-on 在监听键盘事件时添加按键修饰符:
  • .enter
  • .tab
  • .delete (捕获“删除”和“退格”键)
  • .esc
  • .space
  • .up
  • .down
  • .left
  • .right

5.计算属性computed和侦听器watch

(1)computed
        某些结果是基于之前的数据实时计算出来的,可以利用计算属性computed来完成。
        
(2)watch
        watch 可以监控一个值的变化,从而做出相应的反应
        

6.过滤器filters

        过滤器不改变真正的data,而只是改变渲染的结果,并返回过滤后的版本。过滤器常用来处理文本格式化的操作。过滤器可以用在两个地方:双花括号插值和 v-bind 表达式
  • 案例:展示用户列表性别显示男女
  • 法一:通过三元运算来实现:
  • 法二:通过filters来实现:

    【tips】①局部过滤器:写在当前 vue 实例中,只有当前实例能用,如上面这个就是局部过滤器。
                 ②全局过滤器:在创建 Vue 实例之前全局定义过滤器,任何 vue 实例都可以使用。
                

7.组件化基础

        在大型应用开发的时候,页面可以划分成很多部分。往往不同的页面,也会有相同的部分,例如可能会有相同的头部导航。我们会把页面的不同部分拆分成独立的组件,然后在不同页面就可以共享这些组件,避免重复开发。 
        在 vue 里,所有的 vue 实例都是组件
(1)全局组件
        通过 Vue 的 component 方法来定义一个全局组件。
        
  • 组件也是一个 Vue 实例,因此在定义时也会接收:data、methods、生命周期函数等
  • 不同的是组件不会与页面的元素绑定,否则就无法复用了,因此没有 el 属性
  • 组件渲染需要 html 模板,所以增加了 template 属性,值就是 HTML 模板
  • 全局组件定义完毕,任何 vue 实例都可以直接在 HTML 中通过组件名称来使用组件了
  • data 必须是一个函数,不再是一个对象
(2)局部组件
        
  • components 就是当前 vue 对象子组件集合
    • 其 key 就是子组件名称 
    • 其值就是组件对象名
  • 效果与刚才的全局注册是类似的,不同的是,这个 counter 组件只能在当前的 Vue 实例 中使用

(3)单文件组件

四、Vue的生命周期

        每个 Vue 实例在被创建时都要经过一系列的初始化过程 :创建实例,装载模板,渲染模板等等。Vue 为生命周期中的每个状态都设置了钩子函数(监听函数)。每当 Vue 实例处于不同的生命周期时,对应的钩子函数就会被触发调用。

1.Vue生命周期的八个阶段

beforeCreate
创建
created
创建后
beforeMount
加载
mounted
加载完成
beforeUpdate
更新
updated
更新后
beforeDestroy
销毁
destroyed
销毁后
【tips】每触发一个生命周期事件,会自动执行一个生命周期方法(钩子函数)。

2.mounted(★)

        加载完成,Vue初始化成功,HTML页面渲染成功。
        

五、vue 模块化开发

1.入门

  • 初次使用时,先全局安装webpack和vue脚手架
    在cmd中输入:
    npm install webpack -g
    
    npm install -g @vue/cli-init
  • 初始化vue项目
    vue脚手架使用webpack模板初始化一个appname项目
  • 启动vue项目
    在终端使用npm run dev命令启动项目
  • 在VS Code中进行开发
    • 打开项目:文件→打开文件夹→vue-demo→选择文件夹
    • 项目结构:开发时在src下写代码

2.Vue整合ElementUI快速开发

        快速上手官方地址:https://element.eleme.cn/#/zh-CN/component/quickstart
  • npm安装ElementUI
    npm i element-ui@2.12.0 -S
  • 在主程序文件main.js中导入ElementUI及其css样式
    import ElementUI from 'element-ui';
    import 'element-ui/lib/theme-chalk/index.css';
  • 至此,一个基于 Vue 和 Element 的开发环境已经搭建完毕,现在就可以编写代码了。各个组件的使用方法可以参阅各自的文档。