Vue教程01-课程导入

1.传统Web开发中的问题

1.1浏览传统Web开发的项目

1、学生作品-电商网站: 点击进入http://www.zjff495.cn:5050/StudentDemo/

王海颖老师提供,20移动2 李宇恒实现,孔肖峰老师美术设计
技术:HTML、CSS、BootStrap、JQuery

2、学子商城:点击进入http://www.zjff495.cn:5050/xz-pc/

达内课程案例项目

以上项目源码在课程钉钉群文件夹下,压缩包文件名Web-CSS-Demo.rar

1.2传统Web开发中的问题

问题: 传统Web开发重复代码量太大!效率太低!
问题分析,传统Web开发分为三部分组成:

  1. HTML:专门编写网页内容的静态语言
  2. CSS:专门编写网页样式的静态语言
  3. JS:专门为网页添加交互行为的程序语言

问题: HTML和CSS都是静态语言,缺少编程语言必须的要素!

  1. 没有变量,内容只能是静态的
  2. 缺少程序结构,没有分支,循环…。太弱了!导致js必须承担所有查找,修改操作,重复代码极多!

1.3传统DOM元素的交互操作方法

涉及DOM元素的交互操作,主要有4步骤。

  1. 查找触发事件的元素
  2. 绑定事件处理函数
  3. 查找要修改的元素
  4. 修改元素

DOM元素交互操作原生js案例的核心代码参见如下。

<body>
    <button id="btnMinus">-</button>
    <span id="count">0</span>
    <button id="btnAdd">+</button>
    <script>
        //DOM4步骤
        //1.查找触发事件的元素。本例中:点击+按钮
        var btnAdd = document.getElementById("btnAdd");
        //2.绑定事件处理函数。
        btnAdd.onclick = function () {
            //3.查找要修改的元素。
            var count = document.getElementById("count");
            //4.修改找到的元素。获取内容,转为整数
            let n = parseInt(count.innerHTML);
            n++;
            count.innerHTML = n; //再把n值放回去
        };
        //以下省略实现的减号按钮的交互操作   
    </script>
</body>

DOM元素交互操作JQuery案例的核心代码参见如下:

<head>  
  <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.0/jquery.min.js"></script>
</head>
<body>
  <button id="btnMinus">-</button>
  <span>0</span>
  <button id="btnAdd">+</button>
  <script>
    //DOM4步骤
    //1.查找触发事件的元素。本例中:先点击+按钮
    $("#btnAdd")
      //2.绑定事件处理函数
      .click(function () {
        //3.查找要修改的元素。本例中:查找当前按钮兄弟中的元素span元素
        let $span = $(this).siblings("span");
        //4.修改找到的元素。获取span的内容,转为整数
        let n = parseInt($span.html());
        n++;
        $span.html(n); //再把n值放回去
      });
    //以下省略实现绑定减号按钮的交互操作
  </script>
</body>

2.什么是Vue

Vue是第三方开发的渐进式的基于MVVM设计模式的纯前端js框架。

关键字:第三方、渐进式、MVVM、纯前端、js框架

进一步理解

  1. 原生的js和第三方:第三方js库(框架)浏览器是需要下载的,如JQuery函数库是基于原生的js 重新封装的一批函数的集合,简化了传统DOM的操作。

  2. 框架:已经具有核心功能的半成品项目代码。开发人员只需要根据具体业务的需求,添加定制自己个性化的那一部分内容即可!

  3. 渐进式: 可逐步在项目中引入Vue的各项功能

  4. MVVM设计模式: 后面会介绍

  5. 纯前端: 没有后端技术,Vue照样执行!

2.1Vue的优点

便于大项目开发,避免重复代码,提高开发效率

2.2Vue应用场景

以数据为主的项目,都可以适用Vue框架开发。

2.3第一个Vue案例

步进器功能的页面用Vue实现,参考代码如下。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <!--0. 先引入vue.js,注意其相对路径位置-->
    <script src="../js/vue.js"></script>
</head>
<body>
    <!-- 1.View层 -->
    <div id="app">
        <button @click="btnMinus">-</button>
        <span>{{n}}</span>
        <button @click="btnAdd">+</button>
    </div>
    <script>
        //2.ViewModel层,创建Vue实例
        var vm = new Vue({
            el: "#app",
            data: {
                n: 0
            },
            methods: {
                btnAdd() {
                    this.n++;
                },
                btnMinus() {
                    this.n--;
                },
            },
        });
    </script>
</body>
</html>

与JQuery实现比较,涉及DOM交互4步:

  1. 查找触发事件的元素 不用程序找了!用肉眼找!
  2. 绑定事件处理函数 不用js绑定了!改为在HTML中手工绑定!<button @click=“add”>
  3. 查找要修改的元素 彻底没有了!因为Vue不直接修改元素!
  4. 修改元素 Vue实现了数据绑定。只要data中变量值变化,Vue会自动将data中的新变量值同步到界面上{{}}指定位置。

官网学习: Vue介绍 https://cn.vuejs.org/v2/guide/

3.什么是MVVM?

3.1MVVM是什么?

MVVM(Model-View-ViewModel) 是一个软件架构设计模式,源自于经典的 Model-View-Controller(MVC)模式。
MVVM 的出现促进了前端开发与后端业务逻辑的分离,极大地提高了前端开发效率。
MVVM 的核心是 ViewModel 层,向上与视图层进行双向数据绑定,向下与 Model 层通过接口请求进行数据交互,起呈上启下作用,如下图所示:
在这里插入图片描述

MVVM 已经相当成熟了,当下流行的 MVVM 前端框架框架有 Vue,Angular 等。

3.2MVVM的组成部分

简单画了一张图来说明 MVVM 的各个组成部分:
在这里插入图片描述

分层设计一直是软件架构的主流设计思想之一。

1. View层

View 是视图层,也就是用户界面。增强了HTML和CSS的功能,比如提供了变量,程序控制(分支、循环)、事件绑定等这些程序必备功能。大大减轻了JS的负担!

2. Model层

Model 是指数据模型,泛指后端进行的各种业务逻辑处理和数据操控。不管后端业务处理如何复杂,只要对外提供接口就行了,前端请求api,后端返回数据。

用一个data对象(数据模型),统一保存这个界面所需的所有变量。数据集中保存,便于维护!

问题:数据模型中的变量值,不会自动跑到页面上指定位置的!

3. ViewModel层

ViewModel 是由前端开发人员组织生成和维护的视图数据层。

在这一层,前端开发者对从后端获取的 Model 数据进行转换处理,做二次封装,以生成符合 View 层使用预期的视图数据模型。

ViewModel 所封装出来的数据包括视图状态和视图行为两部分,使得它可以完整地去描述 View 层。

页面中这一块展示什么,那一块展示什么这些都属于视图状态(展示),而页面加载进来时发生什么,点击这一块发生什么,这一块滚动时发生什么这些都属于视图行为(交互)。

由于实现了双向绑定,ViewModel 的内容会实时展现在 View 层,开发者只需要处理和维护 ViewModel,更新数据视图就会自动得到相应更新,真正实现数据驱动开发。

由 ViewModel 负责与 Model 层交互,这就完全解耦了 View 层和 Model 层,这个解耦是至关重要的,它是前后端分离方案实施的重要一环。

4.Vue是如何实现MVVM的

​4.1加载data对象

  • 将data对象打散,data内部的属性直接隶属于new Vue()对象。

  • 为data中的每个属性设置一对get/set方法。

  • 今后只要试图修改data中的属性值,都会自动调用set(),也会自动调用set中植入的notify()函数发出通知。

4.2加载虚拟DOM树

  • 通过el属性值的选择器找到要监控区域的元素

  • 扫描这个要监控的区域,创建虚拟DOM树

  • 每发现一个{{变量}}的元素,就将该元素的信息,记录进虚拟DOM树,同时首次用data中的同名变量值替换页面中{{变量}}的位置。每发现一个@事件名="函数名"的元素,就自动变为:On事件名=“new Vue().函数名” …

4.3加载methods对象

  • methods对象中所有方法,都会被打散,直接隶属于new Vue(),和data中被打散的属性平级,所以在methods中的方法,想操作data中的属性,都可以写为"this.属性名"即可。

总结:MVVM的原理/Vue的绑定原理

访问器属性 + 观察者模式 + 虚拟DOM树

思考
1、虚拟DOM树有哪些优点?

  • 小,仅包含可能变化的元素和可能变化的属性,遍历快;
  • 效率高,仅修改个别可能受影响的元素和可能受影响的属性。多数无关的元素和属性,不受影响;
  • 自动,虚拟DOM树已经封装了增删改查的操作;

2、虚拟DOM树是如何形成的?

首次new Vue()时,传入了el:"#app"参数;找到#app这个元素,扫描其内部的子元素;边扫描,边创建虚拟DOM树,仅保存可能变化的元素和可能变化的属性;同时将data中的变量,替换DOM树中的{{}}语法;

3、当Vue中data属性的变量变化时,如何更改View中显示的值?

首先触发这个变量的访问器set方法,发出通知,通知虚拟DOM树,哪个变量发生变化;然后遍历虚拟DOM树,找到可能发生变化的元素和属性;最后,利用已经封装好的虚拟DOM树的增删改查方法,找到发生变化的元素和属性,更新显示的值。

5.如何使用Vue?

5.1通过引入vue.js文件

下载的独立vue.js文件,用

<script src="./js/vue.js">

注意vue.js的相对路径,vue.js文件可以在课程钉钉群文件中下载

在Vue的基础部分,为了方便学习,我们先通过这种方式引入vue.js文件来使用Vue。
具体使用参见下一章节Vue基础部分介绍。

5.2通过Vue脚手架

使用Vue一般是通过Vue脚手架方式使用的,后续课程会为大家介绍Vue脚手架使用的,具体参见官网。

官网学习
点击进入Vue安装 https://cn.vuejs.org/v2/guide/installation.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值