JavaWeb—vue(基础知识)

目录

1.什么是Vue?

2.Vue快速入门

插值表达式:

 常用指令

 v-bind

v-model

v-on

v-if /v-show

v-for

案例:通过Vue完成表格数据的渲染展示

 生命周期


1.什么是Vue?

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

2.Vue快速入门

新建 HTML 页面,引入 Vue.js 文件
<script src="js/vue.js"></script>
JS 代码区域,创建 Vue 核心对象,定义数据模型
<script>
    new Vue({
        el: "#app",
        data: {
            message: "Hello Vue!"
        }
    })
</script>

在创建vue对象时,有几个常用的属性:

  • el: 用来指定哪儿些标签受 Vue 管理。 该属性取值 #app 中的 app 需要是受管理的标签的id属性值

  • data: 用来定义数据模型

  • methods: 用来定义函数。这个我们在后面就会用到

编写视图
<div id="app">
    <input type="text" v-model="message">
    {
    
    { message }}
</div>

插值表达式:

         用来将vue对象中定义的model展示到页面上

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

                    算术运算

 常用指令

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

 v-bind

为HTML标签绑定属性值,如设置  href , css样式等。当vue对象中的数据模型发生变化时,标签的属性值会随之发生变化。

<a v-bind:href="url">传智教育</a>

v-bind指令是可以省略的,但是:不能省略,所以第二个超链接的代码编写如下:

<a :href="url">传智教育</a>
<script>
  new Vue({
     el: "#app",
     data: {
        url: "https://www.itcast.cn"
     }
  })
</script>

v-model

在表单元素上创建双向数据绑定。双向绑定的作用:可以获取表单的数据的值,然后提交给服务器

        什么是双向?

  • vue对象的data属性中的数据变化,视图展示会一起变化

  • 视图数据发生变化,vue对象的data属性中的数据也会随着变化。

data属性中数据变化,我们知道可以通过赋值来改变,但是视图数据为什么会发生变化呢?只有表单项标签!所以双向绑定一定是使用在表单项标签上的

<input type="text" v-model="url">
通过v-bind或者v-model绑定的变量,必须在数据模型中声明。

v-on

        用来给html标签绑定事件的。需要注意的是如下2点

  • v-on语法给标签的事件绑定的函数,必须是vue对象种声明的函数

  • v-on语法绑定事件时,事件名相比较js中的事件名,没有on

  • <input v-on:click="demo()">
    我们需要在vue对象的methods属性中定义事件绑定时需要的handle()函数,代码如下:
    
     methods: {
            handle: function(){
               alert("你点我了一下...");
            }
    }
    
    然后我们给第一个按钮,通过v-on指令绑定单击事件,代码如下:
    
     <input type="button" value="点我一下" v-on:click="handle()">
    
    同样,v-on也存在简写方式,即v-on: 可以替换成@,所以第二个按钮绑定单击事件的代码如下:
    
    <input type="button" value="点我一下" @click="handle()">
    
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Vue-指令-v-on</title>
        <script src="js/vue.js"></script>
    </head>
    <body>
        <div id="app">
    
            <input type="button" value="点我一下" v-on:click="handle()">
    
            <input type="button" value="点我一下" @click="handle()">
    
        </div>
    </body>
    <script>
        //定义Vue对象
        new Vue({
            el: "#app", //vue接管区域
            data:{
               
            },
            methods: {
                handle: function(){
                    alert("你点我了一下...");
                }
            }
        })
    </script>
    </html>

v-if /v-show

v-if指令,不满足条件的标签代码直接没了,而v-show指令中,不满足条件的代码依然存在,只是添加了css样式来控制标签不去显示。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue-指令-v-if与v-show</title>
    <script src="js/vue.js"></script>
</head>
<body>
    <div id="app">
        
        年龄<input type="text" v-model="age">经判定,为:
        <span v-if="age <= 35">年轻人(35及以下)</span>
        <span v-else-if="age > 35 && age < 60">中年人(35-60)</span>
        <span v-else>老年人(60及以上)</span>

        <br><br>

        年龄<input type="text" v-model="age">经判定,为:
        <span v-show="age <= 35">年轻人(35及以下)</span>
        <span v-show="age > 35 && age < 60">中年人(35-60)</span>
        <span v-show="age >= 60">老年人(60及以上)</span>

    </div>
</body>
<script>
    //定义Vue对象
    new Vue({
        el: "#app", //vue接管区域
        data:{
           age: 20
        },
        methods: {
            
        }
    })
</script>
</html>

v-for

从名字我们就能看出,这个指令是用来遍历的

v-for: 从名字我们就能看出,这个指令是用来遍历的。其语法格式如下:

<标签 v-for="变量名 in 集合模型数据">
    {
    
    {变量名}}
</标签>

需要注意的是:需要循环那个标签,v-for 指令就写在那个标签上。

有时我们遍历时需要使用索引,那么v-for指令遍历的语法格式如下:

<标签 v-for="(变量名,索引变量) in 集合模型数据">
    <!--索引变量是从0开始,所以要表示序号的话,需要手动的加1-->
   {
    
    {索引变量 + 1}} {
    
    {变量名}}
</标签>

接下来,准备如下代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue-指令-v-for</title>
    <script src="js/vue.js"></script>
</head>
<body>
    <div id="app">

    </div>
</body>
<script>
    //定义Vue对象
    new Vue({
        el: "#app", //vue接管区域
        data:{
           addrs:["北京", "上海", "西安", "成都", "深圳"]
        },
        methods: {
            
        }
    })
</script>
</html>

然后分别编写2种遍历语法,来遍历数组,展示数据,代码如下:

 <div id="app">
     <div v-for="addr in addrs">{
    
    {addr}}</div>
     <hr>
     <div v-for="(addr,index) in addrs">{
    
    {index + 1}} : {
    
    {addr}}</div>
</div>

案例:通过Vue完成表格数据的渲染展示

如上图所示,我们提供好了数据模型,users是数组集合,提供了多个用户信息。然后我们需要将数据以表格的形式,展示到页面上,其中,性别需要转换成中文男女,等级需要将分数数值转换成对应的等级。

  • 分析:

    首先我们肯定需要遍历数组的,所以需要使用v-for标签;然后我们每一条数据对应一行,所以v-for需要添加在tr标签上;其次我们需要将编号,所以需要使用索引的遍历语法;然后我们要将数据展示到表格的单元格中,所以我们需要使用{ {}}插值表达式;最后,我们需要转换内容,所以我们需要使用v-if指令,进行条件判断和内容的转换

  • 步骤:

    • 使用v-for的带索引方式添加到表格的<tr>标签上

    • 使用{ {}}插值表达式展示内容到单元格

    • 使用索引+1来作为编号

    • 使用v-if来判断,改变性别和等级这2列的值

  • 代码实现:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue-指令-案例</title>
    <script src="js/vue.js"></script>
</head>
<body>
    
    <div id="app">
        
        <table border="1" cellspacing="0" width="60%">
            <tr>
                <th>编号</th>
                <th>姓名</th>
                <th>年龄</th>
                <th>性别</th>
                <th>成绩</th>
                <th>等级</th>
            </tr>

            <tr align="center" v-for="(user,index) in users">
                <td>{
    
    {index + 1}}</td>
                <td>{
    
    {user.name}}</td>
                <td>{
    
    {user.age}}</td>
                <td>
                    <span v-if="user.gender == 1">男</span>
                    <span v-if="user.gender == 2">女</span>
                </td>
                <td>{
    
    {user.score}}</td>
                <td>
                    <span v-if="user.score >= 85">优秀</span>
                    <span v-else-if="user.score >= 60">及格</span>
                    <span style="color: red;" v-else>不及格</span>
                </td>
            </tr>
        </table>

    </div>

</body>

<script>
    new Vue({
        el: "#app",
        data: {
            users: [{
                name: "Tom",
                age: 20,
                gender: 1,
                score: 78
            },{
                name: "Rose",
                age: 18,
                gender: 2,
                score: 86
            },{
                name: "Jerry",
                age: 26,
                gender: 1,
                score: 90
            },{
                name: "Tony",
                age: 30,
                gender: 1,
                score: 52
            }]
        },
        methods: {
            
        },
    })
</script>
</html>

 生命周期

vue的生命周期:指的是vue对象从创建到销毁的过程。vue的生命周期包含8个阶段:每触发一个生命周期事件,会自动执行一个生命周期方法,这些生命周期方法也被称为钩子方法。其完整的生命周期如下图所示:

猜你喜欢

转载自blog.csdn.net/qq_62799214/article/details/129912441