博客列表 >Vue.js开发基础入--2018-9-30

Vue.js开发基础入--2018-9-30

晓明的博客
晓明的博客原创
2018年09月30日 16:40:35646浏览

一:vue基本概念概述

Vue.js 入门
1. 细说MVC和MVVM设计模型
    (1).MVC:
        [1]. 背景:Web项目需求日益复杂,为了使项目简化,采用了MVC架构,实现了前端UI展示,
             与后端业务逻辑处理的完全分离,利于前后端开发人员分工协作,提升效率
        [2]. MVC:是Model-View-Controller的缩写;
        [3]. M:Model,模型,主要处理与数据库相关的业务逻辑;
             V:View,视图,主要负责数据在***端/浏览器上的展示;
             C:Controller:控制器,视图与模型之间传递消息,例如接受请求,选择模型,渲染视图等;
        [4]. MVC基本的运行流程是:
             1. 视图发起请求-->控制器接收请求-->转发给对应模型处理-->模型将结果返回到控制器-->控制器返回到视图;
             2. 简单描述: View-->Controller-->Model-->Controller-->View, 即 V-C-M-C-V;
             3. 整个过程是封闭的,单向的,视图与模型之间不允许直接直接通讯,必须通过控制器进行;
        [5]. MVC开发的基本原则:
             1. 需要服务器端配合,模型Model与控制器Controller都在服务器端完成;
             2. 服务器处理过的数据,必须通过JavaScript在前端进行渲染;
             2. '厚模型,薄控制器',业务逻辑尽可能写到模型中,控制器仅调用模型提供的接口即可;

    (2).MVVM:
        [1].随着前端页面开发越来越复杂,用户与数据的交互也越来越频繁,而很多交互都是临时性的,没有必要每一次都要
            和服务器中的模型对象进行交互,但是传统的jQuery等函数库又力不从心,这时MVVM模型就应运而生啦。
        [2].MVVM: 是Model-View-ViewModel的缩写;
            M:Model层, V:View层, VM: ViewModel层;
        [3].Model:JavaScript对象/模型, View:HTML代码/模板,各司其职,完全分离
        [4].VM层:负责Model与View之间的交互,完全使用JavaScript进行编写;
        [5].基本流程: VM层根据Model数据来更新View,或者根据View来更新Model,这个过程是双向的,即双向数据绑定;
        [6].服务器端只负责更新Model即可,而Model就是一个JavaScript对象,所以服务器只需要返回可被Model解析的
            数据即可,例如:json,html等,这样就完全实现了面向接口/API编程。
        [7].Vue.js就是一个完全采用了MVVM机制的前端开发框架,采用从底层向上的渐进式开发思想,易学易用!

----------------------------------------------------------------------------------------------

2. Vue.js 是什么? 如何导入到项目中?
    [1].Vue.js作者也是中国人:尤雨溪
        1.中国上海复旦附中毕业后,去了美国上大学,学的是艺术,并获得艺术硕士学位,
        2.之前在谷歌工作,2014年开发出了Vue.js前端库,这是一个用来快速构造Web界面的javascri库,通过简洁的API提供高效
        的数据双向绑定和灵活的组件式开发系统。
        3.2016年9月,以技术顾问身份***阿里巴巴Weex团队;
    [1].打开Vue.js官网(中文版): cn.vuejs.org,点击头部导航区的"学习",选择"教程",再点击"安装";
    [2].Vue不再支持IE8及以下版本,例如IE6,IE7这类老古董,大家开发时不必再考虑,除非***指定必须兼容;
    [3].官方提供了三种安装方式:
        1.<script>标签导入: 有二个版本可以选择
            (1). 完整开发版本:包括警告与调试模式,推荐学习与开发阶段使用;
            (2). 压缩精简版本:删除警告等多余内容,非常短小,适合线上***环境使用;
        2.命令行方式:
            (1). npm: 需要Node.js支持,配合前端资源打包器Webpack使用;
            (2). cli: 官方提供的脚手架工具,进一步简化了vue项目创建的难度,更加智能和自动化;
        我们的课程采用传统的<script>标签引入方式,将源码下载的本地,当然也可以使用cdn引入:
        <script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
    [4].测试是否引入成功

----------------------------------------------------------------------------------------------

3. 基本术语:
    1. 实例: Vue.js本身就是一个构造函数,可以用来创建对象,使用Vue第一步,就是要创建一个Vue实例:new Vue();
    2. 实例参数: Vue()接受一个js字面量对象做为参数,所有的功能,都以对象属性的方式进行设置;
    3. 挂载点: Vue实例的作用域,本质上就是通过css选择器获取到的页面元素;
    4. 模板: 带有html标签的字符串;
    5. 值/变量: 挂载点中的文本内容;
    6. 属性: 描述模板或html标签;
    7. 事件: 模板或元素上发生的系统或用户事件,例如点击,移动等;

二.vue导入

  

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>双向数据绑定</title>
</head>
<body>
<div id="box">

</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
<script>
     console.log(new Vue());
</script>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

三.挂载点与变量显示

 

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>挂载点和属性的引用</title>
</head>
<body>
<!--创建一个挂载点-->
<div id="box">
    <!--以插值的方式显示内容-->
    {{message1}}

    <!--使用模板指令v-text显示一个变量-->
    <p v-text="message1"></p>

    <!--如果变量中有html标签-->
    <!--v-text指定是将变量内容原样输出,不会解析文本中的html标签-->
    <p v-text="message2"></p>

    <!--如果想显示一个带有html标签的字符串,需要用v-html指令:类似js中的innerHTML-->
    <p v-html="message2"></p>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
<script>
    // 创建Vue实例:用一个对象字面量做为参数
    new Vue({
        //绑定挂载点
        el: '#box',
        //data属性: 创建数据模型:对应MVVM设计模式中的Model层
        data: {
            //显示一个变量
            message1: 'Vue.js开发基础',
            //如果变量的内容是一个有html标签的文本
            message2: '<h3 style="color:red">php中文网</h3>'
        }
    });
</script>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例


五.模板,属性与事件

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>模板,属性与事件</title>
</head>
<body>
<!--创建一个挂载点-->
<div id="box">
    <!--创建一个挂载点-->
        <!--1.模板绑定-->
        <!--<h3>《JavaScript权威指南》</h3>-->
        <h3>{{message}}</h3>
        <!--模板除了可以写在挂载点内,还可以写到Vue实例的属性中-->
        <!--下面我们将h3中的内容写到Vue实例中-->

        <!--2.属性绑定-->
        <!--可以给模板标签绑定属性: v-bind -->
        <!--之前是直接用标签写列的-->
        <h3 style="color:red;">{{message}}</h3>
        <!--vue实例也可以接管模板的属性,并实现绑定,使用v-bind指令-->
        <!--<h3 v-bind:style="style">{{message}}</h3>-->
        <!--属性绑定是常用操作,Vue提供了简写指定: 冒号-->
        <h3 :style="style">{{message}}</h3>
        <!--此时,:style的值"style"已经不是一个普通字符串了,而是一个表达式,可以进行运算,例如字符串拼装-->
        <h3 :style="style + 'font-size:2rem;'">{{message}}</h3>

        <!--3.事件绑定-->
        <!--还可以给模板绑定事件: v-on:事件名称="事件方法"-->
        <!--事件对应的方法必须写到Vue实例中的methods属性中,该属性也是一个对象-->
        <h3 v-on:click="showDesc">{{message}}</h3>
        <!--由于给模板添加事件是常用操作,所以Vue提供了一个简写语法:@-->
        <h3 @click="changeText">{{message}}</h3>

</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
<script>
    // 创建Vue实例:用一个对象字面量做为参数
    new Vue({
        //绑定挂载点
        el: '#box',
        //data属性: 创建数据模型:对应MVVM设计模式中的Model层
        data: {
            //显示一个变量
            message: 'Vue.js开发基础',
            //如果变量的内容是一个有html标签的文本
            message2: '<h3 style="color:red">php中文网</h3>'
        }
    });
</script>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

六.双向数据绑定

   

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>双向数据绑定</title>
</head>
<body>
<!--创建一个挂载点-->
<div id="box">
    <!--input标签的特点:即可显示内容,也可以输入内容/即更新内容-->
    <!--<input type="text">-->
    <!--给input绑定一个属性,与数据模型中的info也进行绑定: v-bind:value="info"-->
    <!--<input type="text" :value="info">-->
    <!--现在我的需求是: 当input中的内容发生变化时,对应的数据模型中的数据也会同步发生变化 -->
    <!--显然:v-bind指令无法完成,vue又提供一个v-model指令,可以实现模型中的数据随页面数据变化而变化-->
    <input type="text" v-model="info">
    <!--单向绑定: 页面中的数据内容由数据模型决定-->
    <!--双向绑定: 模型中的数据内容由页面中的数据决定-->
    <h3>{{info}}</h3>

</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
<script>
    // 创建Vue实例:用一个对象字面量做为参数
    new Vue({
        //绑定挂载点
        el: '#box',
        //data属性: 创建数据模型:对应MVVM设计模式中的Model层
        data: {
            //数据模型
            info:'html'
        }
    });
</script>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

七.监听器的使用

  

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>侦听器</title>
</head>
<body>
<!--创建一个挂载点-->
<div id="box">
    用户名:<input type="text" v-model="username"> <br>
    <h3>{{length}}</h3>
    <h3 v-show="isShow" :style="warning">{{message}}</h3>

</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
<script>
    // 创建Vue实例:用一个对象字面量做为参数
    new Vue({
        //绑定挂载点
        el: '#box',
        //data属性: 创建数据模型:对应MVVM设计模式中的Model层
        data: {
            //数据模型
            username:'',
            length:0,
            message:'用户名太短',
            isShow:false,
            warning:'color:red'
        },
        watch:{
            username:function () {
                this.length++;
                if(this.length<6){
                    this.isShow=true;
                }else{
                    this.isShow=false;
                }

            }
        }
    });
</script>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议