Vue初始

一 、安装   https://cn.vuejs.org/ 官方网站

二 、简单实用示例

Vue.js 使用了基于 HTML 的模板语法,最简单的使用vue的方式是渲染数据,渲染数据最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值。

首先创建一个vue实例,并在创建实例的过程中传入一个对象。

该对象的第一个属性名为el,它的值是我们需要渲染的目标标签,我们通过属性查找定位这个标签。

该对象的第二个属性名为data,里面就是我们要渲染给浏览器标签的数据,

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>标题</title>
    <script src="static/vue.min.js"></script>      <!--引用vue-->

</head>
<body>

<div id="d1">
    <h1>{{greeting}}</h1>
    <h3>{{app}}</h3>
</div>
<script>
    // 普通插入文本方法
    // let d1 = document.getElementById("d1");  //获取元素
    // d1.innerText = "hello word"  // 文本添加上 hello word 文字

    //数据模板引擎
    // Vue插入文本方法
    new Vue(
        {
            el: "#d1",  // 获取元素
            data: {
                greeting: "hello word",   //在元素内添加使用对应的key 之后就应用上value数据
                app: "hello Vue"   //  在元素内使用 相互对应
            }
        }
    )

</script>
</body>
</html>

简单示例

三 、常用指令

1.v-text

类似双大括号语法渲染数据的另一种方式是使用v-text。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>标题</title>
    <script src="static/vue.min.js"></script>      <!--引用vue-->
</head>
<body>
<div id="d1" v-text="greeting"></div>
<!--使用指令 插入文本-->
<script>
    // 数据模板引擎
    // v-开头的指令是帮助我们渲染数据用的

    new Vue({
        el: "#d1",  // 获取元素
        data: {
            greeting: "Hello Vue",
        }
    })
</script>

</body>
</html>

v-text

2. v-html

双大括号语法无法渲染HTML标签,我们需要使用v-html。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>标题</title>
    <script src="static/vue.min.js"></script>      <!--引用vue-->
</head>
<body>
<div id="d1" v-html="greeting"></div>
<!--使用指令 插入文本-->
<script>
    // 数据模板引擎
    // v-开头的指令是帮助我们渲染数据用的

    new Vue({
        el: "#d1",  // 获取元素
        data: {
            greeting: "<h1>Hello Vue</h1>",
        }
    })
</script>

</body>
</html>

v-html

3.v-for

接下来,我们看看数组和对象使用for的渲染方式。

<div id="d1">
    <ul>
        <li v-for="i in ary">{{ i }}</li>
    </ul>
    <ul>
        <li v-for="student in students">姓名:{{student.name }},年龄:{{ student.age }},爱好:{{ student.hobby }}</li>
    </ul>
</div>
<!--使用指令 插入文本-->
<script>
    // 数据模板引擎
    // v-开头的指令是帮助我们渲染数据用的

    new Vue({
        el: "#d1",  // 获取元素
        data: {
            ary: [‘我是1‘, ‘我是2‘, ‘我是3‘, ‘我是4‘],
            students: [
                {
                    name: "学生1",
                    age: 22,
                    hobby: ‘排球‘
                },
                {
                    name: "学生2",
                    age: 11,
                    hobby: ‘蓝球‘
                },
                {
                    name: "学生3",
                    age: 32,
                    hobby: ‘双色球‘
                },
            ],
        }
    })
</script>

v-for

4. v-if ,v-else-if ,v-else

渲染数据的时候,同样也可以使用条件判断,我们来看看。

<div id="d1">
    <div v-if="role == ‘mei_nv‘"><h1>欢迎光临</h1></div>
    <div v-else-if="role == ‘big_mei_nv‘"><h1>欢迎再次光临</h1></div>
    <div v-else><h1>再见</h1></div>

</div>
<!--使用指令 插入文本-->
<script>

    let vm = new Vue({
        el: "#d1",  // 获取元素
        data: {
            // role: "mei_nv",  // 第一次 展示 欢迎光临
            // role: "big_mei_nv",  // 第二次 展示 欢迎再次光临
            // role: "no",   // 第三次 展示 再见
        }
    })
</script>

v-if

通过上面的代码我们可以看出,v-if的作用是控制标签的显示,它通过判断添加标签,底层采用的是appendChild来实现的,下面我们来看一个同样也是控制标签显示的另一个指令v-show。

5. v-show

<div id="d1" v-show="greeting">看见我了没?</div>
<!--使用指令 插入文本-->
<script>
    // 数据模板引擎
    // v-开头的指令是帮助我们渲染数据用的

    let vm = new Vue({
        el: "#d1",  // 获取元素
        data: {
            // greeting: true,  // 在页面展示出来了
            // greeting: false  // 在页面展示不出来
            // greeting: 1, // 在页面展示不出来
            greeting: 0  // 在页面展示不出来
        }
    })
</script>

v-show

与v-if不同的是,v-show通过样式的display控制标签的显示。

6.v-if 和v-show对比

v-if和v-show的性能比较
我们简单比较一下二者的区别:

实现方式:v-if底层采用的是appendChild来实现的,v-show通过样式的display控制标签的显示,正因为实现方式上面有差异,导致了他们的加载速度方面产生了差异;

加载性能:v-if加载速度更快,v-show加载速度慢

切换开销:v-if切换开销大,v-show切换开销小

v-if是惰性的,它是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建,v-show 也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。

v-show 就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。

一般来说,v-if有更高的切换开销,而v-show有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用v-show较好,如果在运行时条件很少改变,则使用v-if较好。

对比

7. v-bind

绑定属性,不多说了,注意冒号后面跟标签的属性,属性后面的等号指向数据,它可以简写为 :class, :href。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>标题</title>
    <script src="static/vue.min.js"></script>      <!--引用vue-->

    <style>
        .active {
            width: 500px;
            height: 500px;
            background-color: blue;
        }
    </style>

</head>
<body>
<div id="d1">

    <a v-bind:href="baidu">跳转百度</a>    <!--绑定一个连接给按标签的连接-->

    <div v-bind:class="[isActive]"></div>
    <!--给添加一个类  类名就是对应的数据  -->
</div>

<script>
    // 数据模板引擎
    // v-开头的指令是帮助我们渲染数据用的

    let vm = new Vue({
        el: "#d1",  // 获取元素
        data: {
            baidu: "https://www.baidu.com/",
            isActive: "active"
        }
    })
</script>

</body>
</html>

v-bind

8. v-on

另一个非常重要的指令是v-on,使用v-on我们可以在标签上面绑定事件,注意我们新建的vue实例app01中多了一个属性,methods,在methods中,是我们具体事件的实现方式。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>标题</title>
    <script src="static/vue.min.js"></script>      <!--引用vue-->

    <style>
        .active {
            color: green;
        }
    </style>

</head>
<body>
<div id="d1">
    <h1 v-bind:class="{active:isActive}">点击下边这个按钮查看颜色</h1>
    <button v-on:click="changeColor">点击切换颜色</button>
    <!--点击执行changeColor对应的函数-->
</div>

<script>
    // 数据模板引擎
    // v-开头的指令是帮助我们渲染数据用的

    let vm = new Vue({
        el: "#d1",  // 获取元素
        data: {
            isActive: false  // true 就变绿色字体  false就是黑色

            },
        methods:{
                changeColor: function () {
                    this.isActive = !this.isActive  // 点击让他变成非真或者非假
                }
        }
    })
</script>

</body>
</html>

v-on

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-on</title>
    <style>
    </style>
    <script src="./vue.js"></script>
</head>
<body>
    <div id="app01">
        <!--方式一-->
        <a v-bind:href=‘link‘
           v-bind:class="{active: isActive}"
           v-on:click="myClick"
           v-on:mouseenter="mouseEnter"
           @mouseleave="mouseLeave">去百度</a>
        <!--方式二-->
        <button v-on="{click: myClick,
                       mouseenter: mouseEnter,
                       mouseleave: mouseLeave}">
            点我今晚吃鸡~~~
        </button>
    </div>

    <script>
        // 绑定属性,简写冒号:
        let app01 = new Vue({
            el: "#app01",
            data: {
                // urls: {
                //     url: "https://www.baidu.com",
                //     name: "百度"
                // },
                link: "https://www.baidu.com",
                isActive: false
            },
            methods: {
                myClick: function () {
                    // this.isActive = true;
                    console.log("大吉大利,今晚吃鸡~~~")
                },
                mouseEnter: function () {
                    console.log("鼠标来了~~~");
                },
                mouseLeave: function () {
                    console.log("鼠标走了~~~");
                }
            }
        })
    </script>

</body>
</html>

v-on test

9.v-model

上面演示的是通过vue实例将数据渲染进模板,并且在控制台,我们修改数据之后,修改后的数据能够及时(官方称之为响应式)的渲染到模板层,那么,如果有这样的需求,比如有一个input标签,当用户修改渲染的原始数据后,打印修改后的数据,简单说,我们需要vue实例可以帮我们渲染数据并响应式的监听数据修改,同时我们还需要监听用户行为,如果用户在标签上面修改了数据(之前的修改,指的是通过vue实例app01进行的数据修改),我们需要获取到数据,针对这个需求,我们可以使用v-mode指令。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>标题</title>
    <script src="static/vue.min.js"></script>      <!--引用vue-->

</head>
<body>
<div id="d1">

    <!--都用上指令v-model(响应式渲染)-->
    <input type="text" v-model="name">

    <input type="checkbox" value="男" v-model="sex">
    <input type="checkbox" value="女" v-model="sex">

    <select v-model="num">
        <option>1选择1</option>
        <option>2选择2</option>
        <option>3选择3</option>
    </select>

    <hr>
    <!--把数据空值写到页面上-->
    {{name}}
    {{sex}}
    {{num}}
    <!--通过填写上边的数据 ,实施展示出来-->

</div>

<script>
    // 数据模板引擎
    // v-开头的指令是帮助我们渲染数据用的

    let vm = new Vue({
        el: "#d1",  // 获取元素
        data: {
           name:"",
           sex:[],
           num:[],

        }
    })
</script>

</body>
</html>

v-model

原文地址:https://www.cnblogs.com/clbao/p/9926441.html

时间: 2024-10-20 17:37:23

Vue初始的相关文章

vue 初始复习

vue 初始复习 data 中的数据最终都是挂载到 vm 实例中 template 属性会整个代替 app 的内容 el 的优先级高于.$mount 指令 v-text:相当于小胡子{{}} -->v-text='name' v-html:可以渲染字符串中的标签 -->v-html='name' v-once:该标签只渲染一次 -->后面不加内容 v-cloak:解决网速慢时显示小胡子的问题 -->后面不加内容 v-pre:有这个属性的元素,vue 不会对该元素及所有子元素进行 D

1.Vue初始及相关Vue核心组件

1.Vue官方文档 官网文档:https://cn.vuejs.org/v2/guide/ 2.Vue-cli官方文档(脚手架) 官网文档:https://cli.vuejs.org/zh/guide/#%E8%AF%A5%E7%B3%BB%E7%BB%9F%E7%9A%84%E7%BB%84%E4%BB%B6 3.Vue Loader 官网文档:https://vue-loader.vuejs.org/zh/#vue-loader-%E6%98%AF%E4%BB%80%E4%B9%88%EF%

Vue的安装及使用快速入门

vue是一个JavaMVVM库,是一套用于构建用户界面的渐进式框架,是初创项目的首选前端框架.它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设计.它是轻量级的,它有很多独立的功能或库,我们会根据我们的项目来选用vue的一些功能.它提供了更加简洁.更易于理解的API,使得我们能够快速地上手并使用Vue.js. 一.安装vue 1.安装node.js,安装完node.js之后,npm也会自动安装 查询是否安装成功的命令: node -v npm -v 2.全局安装脚手架工具vue-cli

Vue初识

一.  Vue的简单介绍 前端.django的重点简单描述: """ 1.BBS:前后台不分离的web项目 前台页面主要是通过后台逻辑完成渲染 2.Django:Python Web 框架 HttpResponse | ORM | 模板语言 | Forms | Auth 3.前端:HTML5 CSS3 JavaScript jQuery Bootstrap HTML5:页面架构 CSS3:选择器 样式 布局 JS:ES DOM BOM => 选择器拿到标签,操作标签,标

vue + typespript + webpack

vue + typespript + webpack 介绍 本项目主要是基于 vue + typespript + webpack 搭建. 起步 1. 安装 npm install -g @vue/cli # or yarn global add @vue/cli 2. 创建项目 安装的时候要自定义配置,选择typescript相关 传送门 3. 集成开发环境 强烈建议使用 VSCode,不要问为什么,用就对了! 依赖 以下是主要依赖,完整依赖请查看[package.json]: vue 2.6

vue2饿了吗之路第二篇:登录

项目地址:https://github.com/wanghao12345/elm 上一章节已经把该项目的基础环境搭好了,这一章节开始饿了吗登录页面的开发,如今几乎所有的网站都必不可少有登录.注册.找回密码.首页等等,所以开发登录界面还是非常有必要的. 准备 新建login分支,并且将该项目切换到login分支 将App.vue中的引入logo图片的img删除 去除原项目中的HelloWord.vue:将原项目src下的components文件夹删除,在src/router/index.js中与H

0603 Vue 最新 下关于 vue-cli的初始配置和基本使用

Vue.cli 是什么? 为单页面应用快速搭建 (SPA) 繁杂的脚手架. 它为现代前端工作流提供了 batteries-included 的构建设置.只需要几分钟的时间就可以运行起来并带有热重载.保存时 lint 校验,以及生产环境可用的构建版本. (说明:使用cli的前置知识条件是对node.js的构建有一定掌握,对Vue有一定认识和掌握,!!!1) Vue cli 的初始配置步骤: 1. 安装node.js到当前系统.(node官网提供各系统与各位数的版本下载) 2.在node的命令行环境

Vue 恢复初始值的快速方法

vue 中经常定义很多data ,在用户进行一些操作后,需要讲data中的某个对象定义为初始值 例如 1 form: { 2 title: '', 3 describe: '', 4 inspectionCategoryIdList: [], 5 enterpriseId: '', 6 selectInc: { 7 name: '' 8 } 9 } 10 } 这样一个复杂的对象,我们需要讲他们全部定义为初始值 也许我我们可以这么写 1 this.form = { 2 title: '', 3 d

Vue中用props给data赋初始值遇到的问题解决

Vue中用props给data赋初始值遇到的问题解决 更新时间:2018年11月27日 10:09:14   作者:yuyongyu    我要评论 这篇文章主要介绍了Vue中用props给data赋初始值遇到的问题解决,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 前言 前段时间做一个运营活动的项目,上线后产品反馈页面埋点不对,在排查过程中发现,问题竟然是由于Vue中的data初始值导致,而data的初始值来自于props.为方便描述,现将问题抽象如下: 一.现象