前端学习四(vue基本语法)

准备工作: 1、官方文档:https://cn.vuejs.org/v2/guide/ 2、node.js安装,之前学习appium有提到:https://w

准备工作:

1、官方文档:https://cn.vuejs.org/v2/guide/

2、node.js安装,之前学习appium有提到:https://www.cnblogs.com/yinwenbin/p/10853586.html

拷贝项目到mac,遇到问题:first_vue_project/node_modules/.bin/vue-cli-service: Permission denied

解决办法:赋权即可   chmod 777 /Users/此处是项目根目录/node_modules/.bin/vue-cli-service

3、vue的调试工具 vue-devtools 的安装和使用:https://www.cnblogs.com/chenhuichao/p/11039427.html

npm install遇到问题,发现上面教程有坑,在clone代码下来后,必须切换到tag v5.1.1  而不是什么master、dev什么的(为什么是这个版本,因为之后稳定的版本都没有shells目录)

其他:必需要在有使用vue的html上才会在调试的时候显示vue插件

git  checkout  v.5.1.1

2023-03-02发现可以直接在谷歌应用商店安装  https://chrome.google.com/webstore/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd

4、设置国内的镜像

npm config set registry https://registry.npm.taobao.org

一、文本填充 和 元素的属性绑定 

1、引用源

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

2、创建vue对象

 var vue = new Vue({
                el: "挂载对象",
                data: {
                    desc: "用来保存数据"
                },
                methods: {
                    count: function() {
                        console.log("页面操作要使用的函数")
                    }
                }

3、文本填充
  a、插值表达式:{{值}}

<li>姓名:{{info.name}}</li>

  b、v-text 指令

<li v-text="info.age"></li>

  c、v-html 指令

<p v-html="<a href='https://www.baidu.com'>百度</a>"></p>

  d、v-pre 指令,显示原始的数据格式,不会被vue渲染

<li v-pre>性别:{{info.sex}}</li>

4、元素属性绑定
  a、v-bind ,可以简写成冒号 :

<a v-bind:href="a">百度一下,你就知道</a>
<a :href="a">简写v-bind</a>

  b、事件绑定 v-on 可以简写@

<button type="button" v-on:click="count()">计算</button>
<button type="button" @click="count()">计算</button>

  c、数据双向绑定 v-model(绑定的是表单元素 value),默认用户输入的数据当成字符串处理 Vue表单修饰符:lazy,number,trim
    将用户的输入数据转换为数值 v-model.number
    将用户的输入数据去除前后空格 v-model.trim
    数据输入完后才会数据同步 v-model.lazy

<input type="text" name="a" v-model.number.lazy="aa" />

示例

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta charset="utf-8">
        <!-- 使用vue,必须引用这个 -->
        <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
    </head>

    <body>
        <div id="app">
            <ul>
                <li id="li1">姓名:</li>
                <li id="li2">年龄:</li>
                <li id="li3">性别:</li>
            </ul>

            <ul>
                <li>姓名:{{info.name}}</li>
                <li v-text="info.age">年龄:</li>
                <li v-pre>性别:{{info.sex}}</li>
            </ul>
            <h4>{{desc}}</h4>
            <p v-html="p"></p>
            
            <!-- 元素属性绑定 v-bind -->
            <a v-bind:href="a">百度一下,你就知道</a>
            <p></p>
            <a :href="a">简写v-bind</a>
            <p></p>

            <!-- 数据单向绑定 -->
            <!--             数值A:<input type="text" name="a" :value="aa" />
            <br>
            数值B:<input type="text" name="b" :value="bb" />
            <br> -->
            <!-- 数据双向绑定 -->
            数值A:<input type="text" name="a" v-model.number.lazy="aa" />
            <br>
            数值B:<input type="text" name="b" v-model.number="bb" />
            <!-- 事件绑定v-on -->
            <!-- <button type="button" v-on:click="count()">计算</button> -->
            <button type="button" @click="count()">计算</button>

            <h5>结果:{{cc}}</h5>
        </div>

        <script>
            // 原始方法js 往页面填充数据
            data = {
                name: "张三",
                age: 18,
                sex: ""
            }
            document.getElementById("li1").innerText = document.getElementById("li1").innerText + data.name
            document.getElementById("li2").innerHTML = document.getElementById("li2").innerHTML + data.age
            document.getElementById("li3").innerHTML = document.getElementById("li3").innerHTML + data.sex
            /*
            一、文本填充
            1、插值表达式{{值}}
            2、v-text 指令
            3、v-html 指令
            4、v-pre  指令,显示原始的数据格式,不会被vue渲染

            二、元素的属性绑定
            1、v-bind ,可以简写 : 
            2、事件绑定    v-on    可以简写@
            3、数据双向绑定    v-model(绑定的是表单元素 value),默认用户输入的数据当成字符串处理
               将用户的输入数据转换为数值    v-model.number
               将用户的输入数据去除前后空格    v-model.trim
               数据输入完后才会数据同步        v-model.lazy
            */
            // 初始化一个vue对象
            var vue = new Vue({
                // el 用来指定挂载对象
                el: "#app",
                // data 用来保存数据
                data: {
                    info: {
                        name: "张三",
                        age: 19,
                        sex: ""
                    },
                    desc: "这是一个标题",
                    p: "<a href='https://www.baidu.com'>百度</a>",
                    a: 'https://www.baidu.com',
                    aa: 11,
                    bb: 22,
                    cc: null
                },
                // 页面操作要使用的函数
                methods: {
                    count: function() {
                        this.cc = this.aa + this.bb
                    }
                }
            })
        </script>
    </body>
</html>

二、条件判断和遍历

1、v-if、v-else-if、v-else
符合条件就被渲染出来,v-else是这组判断的结束标志,按pyhton中理解就行。
2、v-for
遍历数组元素:v-for='item in cases'
遍历数组元素和下标:v-for="(item,index) in cases"
遍历对象值:v-for="item in obj"
遍历对象key、value(第一个参数是value,第二个参数是key):v-for="(value,key) in obj"

示例

<!DOCTYPE html>
<html>

<head>
    <title></title>
    <meta charset="utf-8">
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head>

<body>
    <div id="app">
        <!-- 符合条件就被渲染出来,按pyhton中理解就行 -->
        <div v-if="case_.result=='success'" style="color: green;" id="">{{case_}}</div>
        <div v-else style="color: #FF0000;" id="">{{case_}}</div>

        <div v-show="case_.show" id="">显示出来 </div>

        <table border="" cellspacing="" cellpadding="">
            <tr>
                <th>ID</th>
                <th>用例名</th>
                <th>结果</th>
            </tr>

            <!-- 遍历数组 v-for -->
            <tr v-for='item in cases'>
                <td>{{item.case_id}}</td>
                <td>{{item.title}}</td>
                <td v-if="item.result=='success'" style="color: green;">{{item.result}}</td>
                <td v-else style="color: red;">{{item.result}}</td>
            </tr>
            <!-- 遍历数组 -->
            <div v-for="(item,index) in cases">{{item}}=={{index}}</div>
            <!-- 遍历对象 -->
            <div v-for="item in obj">{{item}}</div>
            <div v-for="(value,key) in obj">{{key}}=={{value}}</div>
        </table>
    </div>

    <script>
        /**
         * v-if
         * v-else-if
         * v-else
         * 
         * v-show ,控制元素的display属性,true、false
         */

        var vm = new Vue({
            el: "#app",
            data: {
                case_: {
                    case_id: 1,
                    title: "用例001",
                    result: "success1",
                    show: false
                },
                cases: [{
                    case_id: 1,
                    title: "用例001",
                    result: "success",
                }, {
                    case_id: 2,
                    title: "用例002",
                    result: "error",
                }, {
                    case_id: 3,
                    title: "用例003",
                    result: "fail",
                }],
                obj: {
                    case_id: 4,
                    title: "用例004",
                    result: "fail",
                }
            }
        })
    </script>
</body>

</html>

 

标签: node.js 文档 绑定