自顶向下Web开发-1 前端部分-3 Vue
  • 注:此套教程内学习的是Vue2,自2023年Vue2以停止维护、后续有需要再学习Vue3。

1 Vue概述

  • Vue是一套前端框架,免除原生JS中的DOM操作,简化书写。
  • 基于MVVM(Model-View-ViewModel)思想,实现数据的双向绑定,将编程的关注点放在数据上。

1.1快速入门:

  • 引入:

外部链接引入或本地文件引入

外部链接:

<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
  • 编写视图:
<div id="app">
        <input type="text" v-model="message"> <br>
        {{message}}
</div>
  • 在JS中创建Vue对象,定义数据模型:
<script>
    new Vue({
        el:"#app",
        data:{
            message:"Hello Vue!"
        }
    })
</script>

在这个例子中,当改变text内的内容时,由于双向绑定,{{message}}中的内容也会实时改变。

  • 插值表达式
    • 形式:{{表达式}}
    • 内容可以是:
      • 变量
      • 三元运算符
      • 函数调用
      • 算术运算

2 Vue常用指令:

指令:

指令:HTML标签上带有 v- 前缀的特殊属性,不同指令具有不同含义。

常用指令:

示例1:v-bind 与 v-model

<!-- v-model -->
        <input type="text" v-model="url">
<!-- v-bind -->
        <a v-bind:href="url" target="_blank">与数据模型url绑定的超链接</a>

此处 v-bind:xxx 可以简写为 :xxx.

示例2:v-on

  • v-on:event事件(click、blur\focus…)也可以简写为如下第二种
        <!-- v-on:click -->
        <input type="button" value="按钮1" v-on:click="handle()">
        <input type="button" value="按钮2" @click="handle">

示例1、2全部:

<body>
    <!-- 编写视图 -->
    <div id="app">
        <!-- v-model -->
        <input type="text" v-model="url"> <br>
        <!-- v-bind -->
        <a v-bind:href="url" target="_blank">与数据模型url绑定的超链接</a><br>

        <!-- v-on:click -->
        <input type="button" value="按钮1" v-on:click="handle()">
        <input type="button" value="按钮2" @click="handle">

    </div>
    

    
</body>

<!-- 在JS中创建Vue对象,定义数据模型 -->
<script>
    new Vue({
        el:"#app",
        data:{
            url:"http://www.cmd137blog.top"
        },
        methods: {
            handle:function()
            {
                alert("Hello!")
            }   
        }
    })
</script>

示例3: v-if;v-else-if;v-else;与v-show

  • v-if;v-else-if;v-else:
        <span v-if="age <= 35">年轻人</span>
        <span v-else-if="age>35 && age < 65">中年人</span>
        <span v-else="age>=65">老年人</span>
  • v-show:
        <span v-show="age <= 35">年轻人</span>
        <span v-show="age>35 && age < 65">中年人</span>
        <span v-show="age>=65">老年人</span>
  • 区别:v-show不满足条件渲染但不显示(通过CSS 的dispaly),而上面三个不满足条件不渲染。

全部:

<body>
    <!-- 编写视图 -->
    <div id="app">
        <!-- v-if;v-else-if;v-else -->
        <input type="text" v-model="age">经判定,为

        <span v-if="age <= 35">年轻人</span>
        <span v-else-if="age>35 && age < 65">中年人</span>
        <span v-else="age>=65">老年人</span>

        <br><br>
        <!-- v-show -->
        <input type="text" v-model="age">经判定,为

        <span v-show="age <= 35">年轻人</span>
        <span v-show="age>35 && age < 65">中年人</span>
        <span v-show="age>=65">老年人</span>

    </div>
</body>

<!-- 在JS中创建Vue对象,定义数据模型 -->
<script>
    new Vue({
        el:"#app",
        data:{
            age:0
        },
        methods: {
            
        }
    })
</script>

示例4 v-for

  • v-for=”(item, index) in items”

示例:

<body>
    <!-- 编写视图 -->
    <div id="app">
        <div v-for="(address, index) in addresses">{{index+1}} : {{address}}</div>
    </div>
</body>

<!-- 在JS中创建Vue对象,定义数据模型 -->
<script>
    new Vue({
        el:"#app",
        data:{
            addresses:["北京","上海","深圳","广州","香港"]
        }
    })
</script>

案例:通过Vue完成表格数据的渲染展示(推荐学习)

答案:

值得反复参考,顺便复习一波CSS

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <!-- 外部链接引入vue -->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>

    <style>
        .scoretable {
            width: 50%;
            margin: 0 auto; /* 居中显示 */
            border: 1px solid black; /* 实线边框 */
            border-collapse: collapse; /* 合并边框 */
        }
    
        .scoretable td {
            border: 1px solid black; /* 对表格单元格添加实线边框 */
            text-align: center; /* 内容居中 */
        }
        .scoretable th {
            border: 1px solid black; /* 对表格单元格添加实线边框 */
            text-align: center; /* 内容居中 */
        }
    </style>
</head>
<body>
    <!-- 编写视图 -->
    <div id="app">
        <table class="scoretable">
            <tr>
                <th>编号</th><th>姓名</th><th>年龄</th><th>性别</th><th>分数</th><th>等级</th>
            </tr>
            <tr v-for="(user,index) in users">
                <td>{{index+1}}</td><td>{{user.name}}</td><td>{{user.age}}</td><td v-if="user.gender==1">男</td><td v-else-if="user.gender==2">女</td><td>{{user.score}}</td>
                <td v-show="user.score>=85">优秀</td><td v-show="user.score>=60&&user.score<85">合格</td><td v-show="user.score<60"><span style="color: red;">不合格</span></td>
            </tr>
        </table>
    </div>
</body>

<!-- 在JS中创建Vue对象,定义数据模型 -->
<script>
    new Vue({
        el:"#app",
        data:{
            users:[
                {
                    name:"Tom",
                    age:20,
                    gender:1,
                    score:78
                },
                {
                    name:"Jason",
                    age:20,
                    gender:1,
                    score:100
                },
                {
                    name:"Rose",
                    age:19,
                    gender:2,
                    score:85
                },
                {
                    name:"Hans",
                    age:21,
                    gender:1,
                    score:55
                }
            ]
        }
    })
</script>

</html>

3 生命周期

  • 生命周期:指一个对象从创建到销毁的整个过程。
  • Vue对象生命周期有八个阶段,每触发一个生命周期事件,会自动执行一个生命周期方法(钩子)。

主要掌握 mounted:

  • mounted:挂载完成,Vue初始化成功,HTML页面渲染成功。主要用于发送请求到服务端,加载数据。
  • 挂载阶段所做的主要工作是创建 Vue 实例并用其替换 el 选项对应的 DOM 元素,同时还要开启对模板中数据(状态)的监控,当数据(状态)发生变化时通知其依赖进行视图更新。
  • 与 methods 同级
    new Vue({
        el:"#app",
        data:{

        },
        methods: {
            
        },
        mounted() {
            
        }
    })
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇