Vue 的第一天

目录

Vue 课程大纲

1.什么是 vue

2.vue 的特点

3.vue 的第一个应用

 4.Vue第一个数据处理应用

5.Vue实例选项

6.vue 的基础语法


Vue 课程大纲

1.什么是 vue

  Vue (读音 /vjuː/,类似于 view) 是一套 用于构建用户界面 的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以 自底向上逐层应用Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动

简单来说:Vue是一套用于快捷开发前端应用框架技术

2.vue 的特点

  Vue是一个用于快捷开发前端应用的框架,它的特点用于构建用户界面的前端渐进式框架,采用自底向上的逐层应用,只关于视图层,技术简单易于上手!

3.vue 的第一个应用

  访问Vue官方网站,下载vue.js文件

  编写自己的第一个Vue应用:

!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>Document</title>
</head>
<body>
    <div id="app">
        <h1> {{ name }} </h1> // 书写格式为 {{ xxx }}
    </div>
    
    <script src="./vue.js"></script> // 需要下载 vue.js
    <script>
        // 创建Vue实例,绑定页面中的一个标签  Vue V 需要大写
        const vm = new Vue({
            el: "#app", // 将实例绑定到一个标签上
            data: {     // 实例中的数据
                name: '作者:尤雨溪'
            }
        })
    </script>
</body>
</html>

 4.Vue第一个数据处理应用

  开发一个简易的密码提取器,完成用户输入数据的同步

<!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>Document</title>
</head>
<body>
    <div id="app">
        输入密码:<input type="text" v-model="passwd"><br /> // v-model 用于标签元素,用于数据双向绑定

        <p> 密码提取:{{ passwd }} </p> 
    </div>
    
    <script src="./vue.js"></script>
    <script>
        const vm = new Vue({
            el: "#app", // 绑定到制定的标签上 
            data: {
                passwd: "待输入密码"
            }
        })
    </script>
</body>
</html>

5.Vue实例选项

  Vue项目中,Vue实例是项目的核心对象,对实例的熟悉程度直接关乎后续的开发效率!

// 创建实例
 const vm = new Vue({ 选项 })

实例选项:实例上添加了功能支持

① elelement缩写,表示实例绑定那个标签,该标签内部的数据由Vue实例管理

② data:数据的意思,用来声明当前Vue实例管理的所有数据

③ methods:函数、方法的意思,用来声明当前实例管理的所有函数

④ filters:过滤器的意思,用来声明按照条件进行数据处理的函数

⑤ created()/mounted()/updated()...生命周期选项

⑥ components:组件的意思,用来声明子组件...

const vm = new Vue({
    el: "#app",
    data: {
        name: "Vue 2.x",
        version: "2.4.0"
    },
    methods: {
        say() {
            console.log("当前版本:2.4.0")
        }
    },

   
    filters: {
        format(args){
            return "拼接字符" + args
        }
    },
    created() {
        console.log("当前页面被创建的时候执行一下,处理一些准备数据")
    },
    components: {
        Headers,	// 添加页面头部组件
        Footers,	// 添加页面底部组件
        // ...
    }
})

6.vue 的基础语法

(1) 插值表达式

插值表达式:是Vue中一种固定的语法:{{ 变量 }},用于渲染输出变量的数据

<body>
    <div id="app">
        <p> {{ info }}</p>
        <p> {{ "插值表达式输出数据:" + info }}</p>
        <p> {{ info.toUpperCase() }}</p>
        <p> {{ reverse(info) }} </p>
        <p> {{ isLogin ? '尊敬的用户,冬奥会欢迎您' : '先做核酸'}}</p>
    </div>
    
    <script src="./vue.js"></script>
    <script>
        const vm = new Vue({
            el: "#app",
            data: {
                info: "hello vue 2.x!",
                isLogin: false
            },
            methods: {
                reverse(str) {
                    return str.split('').reverse().join('');
                }
            }
        })
    </script>
</body>

2) 指令:v-text/v-html

v-text将数据渲染到指定的标签中进行文本展示
v-html将数据渲染到指定的标签中进行解释展示
<body>
    <div id="app">
        <p> {{ info }} </p>
        <p v-text="info"></p>
        <p v-html="info"></p>
    </div>
    
    <script src="./vue.js"></script>
    <script>
        const vm = new Vue({
            el: "#app",
            data: {
                info: "<h2>谷爱凌</h2>"
            }
        })
    </script>
</body>

(3) v-showv-if 

v-show根据判断条件是否为true,设置包含内容的 显示/隐藏
v-if根据判断条件是否为true,设置包含内容的 加载渲染/不加载渲染
 <div id="app">
        <h2 v-if="isLogin">尊敬的管理员,欢迎访问本系统</h2>
        <h2 v-show="isLogin">XX会员您好,欢迎访问本系统</h2>
    </div>
    
    <script src="./vue.js"></script>
    <script>
        const vm = new Vue({
            el: "#app",
            data: {
                isLogin: false
            }
        })
    </script>
</body>

总结:关于v-showv-if

v-showv-if在页面上都能达到相同的效果,可以通过条件变量判断是否显示某些内容

  • v-show:通过display样式控制显示/隐藏
  • v-if:通过DOM操作加载/不加载控制显示/隐藏

(4) v-bind

v-bind动态操作标签属性的指令,让标签属性可以接受变量数据
 <div id="app">
        <!--
            v-bind:title="..."
            表示属性值是一个变量或者表达式
        -->
        <div v-bind:title="info">苏翊鸣</div>
        <div :title="info">苏翊鸣</div>
    </div>
    
    <script src="./vue.js"></script>
    <script>
        const vm = new Vue({
            el: "#app",
            data: {
                info: "单板滑雪 男子大跳台 金牌得主"
            }
        })
    </script>
</body>

(5) v-on

v-on用于给标签添加事件处理的指令
<div id="app">
        <button v-on:click="mySay">点击我试试</button>
        <button @click="mySay">点击我试试</button>
        <input type="text" v-on:keyup="record">
    </div>
    <script src="./vue.js"></script>
    <script>
        const vm = new Vue({
            el: "#app",
            data: {},
            methods: {
                mySay() {
                    alert("用户点击了按钮")
                },
                record(e) {
                    console.log("用户输入了数据", e.target.value)
                }
            }
        })
    </script>

(6)v-for

v-for列表渲染指令,循环遍历集合数据,如数组中的多项数据
<body>
    <div id="app">
        <ul>
            <li v-for="(job, index) in jobs" :key="index">
                <input type="checkbox" name="" id="">
                {{index+1}} - {{ job }}
            </li>
        </ul>
    </div>
    
    <script src="./vue.js"></script>
    <script>
        const vm = new Vue({
            el: "#app",
            data: {
                jobs: [
                    "前端工程师",
                    "UI工程师",
                    "后端工程师",
                    "运维工程师",
                    "测试工程师"
                ]
            }
        })
    </script>

7.案例

选项卡案例:

<body>
    <div id="app">
        <div id="tab-container">
            <div id="title">
                <div @mouseover="index=1" :class="index===1?'active':''">001</div>
                <div @mouseover="index=2" :class="index===2?'active':''">002</div>
                <div @mouseover="index=3" :class="index===3?'active':''">003</div>
            </div>
            <div id="content">
                <div v-show="index===1">内容内容001</div>
                <div v-show="index===2">内容内容002</div>
                <div v-show="index===3">内容内容003</div>
            </div>
        </div>
    </div>
    
    <script src="./vue.js"></script>
    <script>
        const vm = new Vue({
            el: "#app",
            data: {
                index: 1
            }
        })
    </script>
</body>

关于状态保持,添加工作案例

<body>
    <div id="app">
        <input type="text" v-model="jobname"> 
        <button @click="addJob">添加工作</button>
        <ul>
            <li v-for="(job, index) in jobs" :key="job.id">
                <input type="checkbox" name="" id="">
                {{job.id}} - {{ job.name }}
                <button @click="delJob(index)">删除</button>
            </li>
        </ul>
    </div>
    
    <script src="./vue.js"></script>
    <script>
        const vm = new Vue({
            el: "#app",
            data: {
                jobname: '',
                jobs: [
                    {id: 1, name: "前端工程师"},
                    {id: 2, name: "UI工程师"},
                    {id: 3, name: "后端工程师"}
                ]
            },
            methods: {
                addJob() {
                    // 数组的开头添加一个数据
                    this.jobs.unshift(this.jobname)
                    this.jobname = ''
                },
                delJob(index){
                    this.jobs.splice(index, 1)
                }
            }
        })
    </script>
</body>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值