zoukankan      html  css  js  c++  java
  • 01慕课网《vue.js2.5入门》——基础知识

      前端框架

    Vue.js2.5  2018-05-12

    Vue官网:https://cn.vuejs.org/

     基础语法+案例实践+TodoList+Vue-cli构建工具+TodoList

    Vue基础语法

    创建Vue实例

    下载后直接在<head>中<script >引入

    <head>
        <meta charset="UTF-8">
        <title>Vue 入门</title>
        <script src="./vue.js"></script>
    </head>

    引用CDN:

    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>

     挂载点、模板与实例

    挂载点:指页面标签,挂载Vue

    模板:挂载点下的内容

    实例:JavaScript中new Vue()实例对象

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Vue 入门</title>
        <script src="./vue.js"></script>
    </head>
    <body>
    <!--挂载点、模板、实例之间的关系
    div为挂载点,通过ID绑定
    模板可以写到挂载点内部和实例中-->
    <div id="root">{{msg}}
        <!--挂载点内部的内容为模板-->
        <p>这里是挂载点内部的模板{{temMsg}}</p>
    </div>
    <script>
        // vue实例
        new Vue({
            //指定实例的挂载点,Vue去接管哪个元素内容,绑定DOM节点
            el: "#root",
            // 模板也可以写到实例中,但是这样挂载点中的内容就不会被显示
            template:'<i>这里是实例中的模板{{temMsg}}</i>',
            // 数据内容
            data: {
                msg: "hello world",
                temMsg:"template"
            }
        });
    </script>
    </body>
    </html>

         

    Vue实例中的数据

    数据对象: data

     页面引用实例中的数据:

    {{}}、v-text、v-html
    <body>
    <div id="root">
        <!--{{}}为插值表达式语法
        v-text:Vue中的指令,只能输出文本,会转义
        v-html:Vue中的指令,可以输出标签,不会转义
        -->
        <ul>
            <li>{{msg}}</li>
            <li v-text="vText"></li>
            <li v-html="vHtml"></li>
            <li v-text="content"></li>
            <li v-html="content"></li>
        </ul>
    </div>
    <script>
        // vue实例
        new Vue({
            el: "#root",
            data: {
                msg: "{{}}双括号插值表达式",
                vText: "v-text是Vue指令",
                vHtml:"v-html是Vue指令",
                content:"<i>测试v-text和v-html之间的不同</i>"
            }
        });
    </script>
    </body> 

        

    Vue中的事件和方法

    给元素绑定事件 v-on:也可以简写为@

    函数对象:methods

     Vue的特点:面向数据编程,不需要操作DOM,数据改变,页面改变

    <body>
    <div id="root">
        <!--
        v-on:Vue绑定事件,
        改变挂载点中的内容不要操作DOM,应该修改实例中的数据
        -->
        <ul>
            <li v-on:click="()=>{alert('绑定了点击事件 v-on:click')}">{{msg}}:箭头函数有问题</li>
            <li v-on:click="handleClick">{{msg}}:引用实例中methods对象下的方法</li>
            <li @click="changeData">{{changeMsg}}</li>
        </ul>
    </div>
    <script>
        // vue实例
        new Vue({
            el: "#root",
            data: {
                msg: "v-on:click   点击事件",
                changeMsg: "点击改变内容"
            },
            methods: {
                handleClick: function () {
                    alert("绑定了点击事件 v-on:click")
                },
                changeData: function () {
                    // this指向data 修改数据
                    this.changeMsg="内容被改变";
                }
            }
        })
        ;
    </script>
    </body>

       

     属性绑定

    属性绑定 v-bind:title='变量名',可以写成 :title='变量名',模板指令
    变量名是Vue数据data对象的一个属性,
    =号后面是一个js表达式,可以='输入汉字+title'

    <div id="root">
        <ul>
            <li title="title 的名字">鼠标移动过来显示</li>
            <li v-bind:title="title">属性绑定</li>
            <!--  =号后边为js表达式  title 是变量-->
            <li :title="'这是一个'+ title">属性绑定</li>
        </ul>
    </div>
    <script>
        // vue实例
        new Vue({
            el: "#root",
            data: {
                title: "实例中的数据"
            }
        })
    </script>

         

    双向数据绑定

    单向绑定:数据决定页面的显示,页面无法决定数据中的内容

    双向绑定:模板指令v-model,页面和数据内容任何一个改变,另一个也改变

    <div id="root">
        <ul>
            <li><input :value="content"/></li>
            <li><input v-model="content"/></li>
            <li>{{content}}</li>
        </ul>
    </div>
    <script>
        // vue实例
        new Vue({
            el: "#root",
            data: {
                content: "this is content!"
            }
        })
    </script>

          

    计算属性与侦听器

    computed对象中的属性由其它属性计算而来,

    其它依赖属性没有变化会使用缓存值,不重新计算

    watch:侦听器对象;监听数据变化,数据被改变则触发

    <div id="root">
        <ul>
            <li>姓:<input v-model="firstName"/></li>
            <li>名:<input v-model="lastName"/></li>
            <li>{{firstName}}{{lastName}}</li>
            <li>fullName 属性计算:{{fullName}}</li>
            <li>侦听姓名修改次数:{{count}}</li>
            <li>侦听fullName数据变化:{{fullCount}}</li>
        </ul>
    </div>
    <script>
        // vue实例
        new Vue({
            el: "#root",
            data: {
                firstName: "",
                lastName: "",
                count: 0,
                fullCount: 0
            },
            // 计算属性:由其它属性计算而来
            computed: {
                fullName: function () {
                    return this.firstName + ' ' + this.lastName;
                }
            },
            // 侦听器:监听数据变化
            watch: {
                // 侦听数据属性
                firstName: function () {
                    this.count++;
                },
                lastName: function () {
                    this.count++;
                },
                // 侦听计算属性
                fullName: function () {
                    return this.fullCount++;
                }
            }
        })
    </script>

      

     v-if、v-show、v-for指令

    v-if:控制DOM的存在与否,false直接删除DOM

    v-show:控制DOM的显示与否,隐藏标签DOM

    v-for:遍历数据,循环展示数据,增加 :key=‘item’ 提升效率,但是key值不能相同

    <div id="root">
        <ul>
            <li><p v-if="show">hello world</p></li>
            <li><p v-show="show">hello world</p></li>
            <li>
                <button @click="handleClick">toggle</button>
            </li>
        </ul>
        <ul>
            <li v-for="item of list">{{item}}</li>
        </ul>
        <ul>
            <li v-for="(item,index) of list" :key="index">{{item}}</li>
        </ul>
    </div>
    <script>
        // vue实例
        new Vue({
            el: "#root",
            data: {
                show: true,
                list: [1, 2, 3]
            },
            methods: {
                handleClick: function () {
                    this.show = !this.show;
                }
            }
        })
    </script>

        


    参考菜鸟驿站《Vue.js 入门教程》:http://www.runoob.com/w3cnote/vue-js-quickstart.html

  • 相关阅读:
    全面理解javascript的caller,callee,call,apply概念(修改版)
    动态显示更多信息(toggle_visible函数的运用)
    再论call和apply
    RSS News Module的应用
    准备制作一套全新的DNN皮肤(包括个人定制或企业级定制)
    ControlPanel研究系列二:简单Ajax模式的ControlPanel(SimplAjax)
    New_Skin发布了....
    如何定制dnn的FckEditor
    Blog已迁移到dnnsun.com(最新DotNetNuke咨询平台)
    新DNN皮肤的经验及成果分享
  • 原文地址:https://www.cnblogs.com/-beauTiFul/p/9030206.html
Copyright © 2011-2022 走看看