初始Vue

LeoCoding 2019-07-25 原文

初始Vue

什么是Vue?

Vue是一个渐进式的JavaScript框架,它与Angular.js、React.js并称为前端三大主流框架
Vue是一套用于构建用户界面的框架,它的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合
Vue的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统
Vue遵循MVVM模式

MVVM与MVC

MVC是后端的分层开发模式(Model-View-Conreoller)
MVVM是前端视图层的模式,它分为3个部分:
    M-model 数据模型
    V-view 视图
    VM-ViewModel 视图与模型的调度者

入门案例

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Hello Vue</title>
    </head>
    <body>
        <!-- Vue实例的控制区域,即V(View) -->
        <div id="app">
            <!--v-model指令:双向绑定,同步输入框和span标签内的数据 -->
            <input type="text" v-model="message" />
            <span>{{message}}</span>
        </div>
        <!-- 引入vue.js -->
        <script src="js/vue.js"></script>
        <script>
            // 创建vue实例,这就是一个VM调度者
            new Vue({
                el: "#app", // element,指定vue实例控制的节点区域
                // 控制节点所需要的数据,即M(Model) 
                data: {
                    message: "hello Vue"
                }
            })
        </script>
    </body>
</html>

说明:
1.首先引入vue.js或vue.min.js
2.声明页面中需要被Vue控制的区域
3.创建Vue实例,这其实是一个VM调度者
4.el:指定vue实例控制的节点区域,data:Vue实例中需要的数据并以键值对的形式存放
5.{{}}表达式中填入JavaScript表达式,data中的键作为变量名填入,让对应数据显示在视图中
6.v-model:这是一个Vue的指令,它是唯一一个双向绑定的指令,它用来同步输入框与控制区域内其他位置的数据

常用指令

Vue指令 (Directives) 是带有 v- 前缀的特殊特性。指令引用的值预期是单个 JavaScript 表达式(v-for例外)

v-cloak

在入门案例中,我们看到可以用{{}}表达式灵活地插入数据,但是存在一个问题,当网速较慢时浏览器不会马上将{{}}
表达式渲染成数据而是作为普通文本显示出来。
为解决这一问题,Vue提供了一个v-cloak指令。页面加载时v-cloak指令指定的元素不会显示,页面完全加载完成时才显示。

<style type="text/css">
    [v-cloak]{
        display: none;
    }
</style>
<p v-cloak>{{msg}}</p>

v-text

为解决上一问题,vue还提供了一个指令v-text替代{{}}表达式,不同的一点是v-text会覆盖元素内所有内容。

<div id="app">
    <p>==={{msg}}===</p>
    <p v-text="msg">======</p>
</div>

v-once

一次性地插值指令,在标签中使用了这个指令,若使用了{{}}表达式插入数据,则当{{}}中表达式的数据改变时,页面显示的数据不会更新。

v-html

在上面,我们了解了v-text显示数据,但是如果我们需要显示的数据是一段HTML代码,v-text和{{}}都将无能为力,为此,Vue提供了专门渲染HTML数据的指令

<div id="app">
    <p>{{msg}}</p>
    <p v-html="msg"></p>
</div>

v-bind与v-model

v-bind是单向数据绑定,v-model是双向数据绑定且一方只能是输入框 这一点在入门案例中已经体现得很清楚了。

由于无法将Vue实例中的data的变量直接放进html元素的各属性中,比如

<img src="imgUrl" alt="msg"/>

这样绑定的结果是图片的路径就是”imgUrl”,因此图片找不到路径。

这样的事便由v-bind来解决,它还能绑定元素的各种属性,如src、herf、class、value等。另外v-bind:还有一个简易写法::

<div id="app">
    <img v-bind:src="imgUrl" v-bind:alt="msg"/>
    <img :src="imgUrl" v-bind:alt="msg"/>
</div>
<!-- js代码 -->
<script src="js/vue.js"></script>
<script>
    new Vue({
        el:"#app",
        data:{
            imgUrl:"https://cn.vuejs.org/images/logo.png",
            msg:"Vue logo"
        }
    })
</script>

v-on

它用于监听 DOM 事件,用来绑定触发事件。与v-bind一样,它也有一个简写:@

<div id="app">
    <button v-on:click="test">点击我</button>
    <button @click="test">点击我</button>
</div>
<!-- js代码 -->
<script src="js/vue.js"></script>
<script>
    var vm = new Vue({
        el:"#app",
        methods:{
            test(){
                alert("hello Vue");
            }
        }
    })
</script>

与el、data一样method是Vue实例的配置属性,用来存放事件方法。

如果事件方法需要参数,则在绑定时加上()传入参数。

v-if与v-show

Vue提供两个控制元素的显示与切换的指令v-if和v-show。

区别:v-if是真正意义上的隐藏元素,但是每次需要重新删除和创建元素,具有较高的切换性能消耗;v-show不会重建进行DOM的删除和创建操作,只是修改样式display:none。

另外对于v-if,Vue还提供了v-else-if和v-else搭配,但元素必须紧密连接,否则指令不被识别。

案例:

<div id="app">
    <span v-if="num<=100&&num>=85">优秀{{num}}</span>
    <span v-else-if="num>=70&&num<85">良好{{num}}</span>
    <span v-else-if="num>=60&&num<70">及格{{num}}</span>
    <span v-else-if="num>=0&&num<=60">不及格{{num}}</span>
    <span v-else>不在范围内</span>
    <p v-show="isShow">v-show控制的元素</p>
</div>
<script src="../js/vue.js"></script>
<script>
    var vm = new Vue({
        el: "#app",
        data: {
            num: 95,
            isShow: true
        }
    })
</script>

v-for

Vue为渲染集合、数组提供了v-for指令,用法:v-for=”item in/of items”,其中items是源数据数组,而item则是被迭代的数组元素的别名。

遍历数组列表时,还可以获取到被迭代的数组元素下标。

<ul>
    <!--index为迭代元素的下标-->
    <li v-for="(item,index) in items">
        {{index}}-{{item.msg}}
    </li>
</ul>
data:{
    items:[
        {msg:"a"},
        {msg:"b"},
        {msg:"c"}
    ],
}

v-for还可以遍历对象内的属性

<div id="app">
    <ul>
        <!--遍历对象属性同样可以获取元素下标甚至可以获取到属性名-->
        <li v-for="(value,key,index) in object">
            {{index}}-{{key}}-{{value}}
        </li>
    </ul>
</div>
<script src="../js/vue.js"></script>
<script>
    new Vue({
        el:"#app",
        data:{
            object:{
                name:"张三",
                age:"18"
            }
        }
    })
</script>


 

如果文章有错的地方欢迎指正,大家互相交流。感谢关注公众号JsjCoding

 

发表于 2019-07-25 14:20 User_340 阅读() 评论() 编辑 收藏

 

版权声明:本文为LeoCoding原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/LeoCoding/p/11243989.html

初始Vue的更多相关文章

  1. TinyMCE插件:RESPONSIVE filemanager 9 安装与配置

    RESPONSIVE filemanager 功能: 文件上传 文件下载 重命名文件 删除文件 新建文件夹 为 […]...

  2. 数据结构之Set | 让我们一块来学习数据结构

    数组(列表)、栈、队列和链表这些顺序数据结构对你来说应该不陌生了。现在我们要学习集合,这是一种不允许值重复的顺 […]...

  3. 使用锚点定位不改变url同时平滑的滑动到锚点位置,不会生硬的直接到锚点位置

    使用锚点定位不改变url同时平滑的滑动到锚点位置,不会生硬的直接到锚点位置   对前端来说锚点是一个很好用的技 […]...

  4. 前端JS面试题汇总 Part 2 (null与undefined/闭包/foreach与map/匿名函数/代码组织)

    原文:https://github.com/yangshun/front-end-interview-hand […]...

  5. 前端 整理的待学习技术点

    整理一份个人的 Todo List   前端技术点扩散出来实在太多太多,有些看起来已经不仅是前端了,路漫漫 以 […]...

  6. checkbox 全选或取消

    checkbox 全选或取消 Html: 点击label 也能 check                   […]...

  7. base64转二进制

    html <input change=”uploadUsedImg()”  id […]...

  8. 修改Typora的代码以支持文件夹和文件混合排序

    修改Typora的代码以支持文件夹和文件混合排序 用Markdown文件写笔记,用文件夹做分类,整个笔记文档项 […]...

随机推荐

  1. 三种权威知名的数据中心认证

    三种权威知名的数据中心认证 数据中心等级认证介绍 本文将简单介绍目前国内数据中心行业主流的三种数据中心等级认证 […]...

  2. Markdown进阶(1)

    对于工科生来说,在书写Markdown文本时,免不了要和上下标打交道,网上的博客大多良莠不齐,不太友好,本文想 […]...

  3. 知网句子检索使用小技巧

    句子检索是知网独有的一种文献检索方法。在句子检索中,主要功能是匹配到文献同一句话或者同一段话中出现的两段文字。 […]...

  4. Python函数

    2019-05-28 函数总结:   在一个完整的项目中,某些功能会反复使用。那么会将功能封装成函数,当我们要 […]...

  5. Java快速开发平台

    WebBuilder是一款跨平台、数据库和浏览器的可视化Web应用开发平台。WebBuilder使用了多项最新 […]...

  6. 平庸软件工程师的9个特点

    不是因为编程很困难,而是因为你没有足够的经验。真正擅长软件开发的程序员有良好的职业习惯,而不是code、框架等 […]...

  7. 为Android开发人员定制的搜索引擎

    我在谷歌上定制了一个专门针对Android开发人员的搜索引擎。载入慢的童鞋考虑FanQiang吧,作为技术人员 […]...

  8. C#多线程

    一、基本概念 1、进程 首先打开任务管理器,查看当前运行的进程: 从任务管理器里面可以看到当前所有正在运行的进 […]...

展开目录

目录导航