Skip to content
Xiaoyu's Blog
Go back

重学Vue-Day01

💡
想快速上线一个demo产品,前端也自己一把嗦,但是好久不用vue已经有些忘了,找了个视频重新学习一下。以防以后再重走此路,在此记录。

一、快速开始

1、官网

2、下载vue.js文件或者使用cdn

3、编写一个html上手网页

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script type="text/javascript" src="../js/vue.js"></script>
    <title>Title</title>
</head>

<body>
    <div id="app">
        <h1>Vue.js</h1>
        <p>{{message}}</p>
    </div>
    <script type="text/javascript">
        Vue.config.productionTip = false;
       const x = new Vue({
            el: '#app',
            data: {
                message: 'Hello Vue!'
            }
        });
    </script>
</body>
</html>

二、学习示例

示例1:双向绑定

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script type="text/javascript" src="../js/vue.js"></script>
    <title>Title</title>
</head>

<body>
    <div id="app">
        <h1>双向绑定示例</h1>
        <input v-model="message" type="text">
        <p>{{message}}</p>
    </div>
    <script type="text/javascript">
        Vue.config.productionTip = false;
       const x = new Vue({
            el: '#app',
            data: {
                message: ''
            }
        });
    </script>
</body>
</html>

示例2:条件渲染

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script type="text/javascript" src="../js/vue.js"></script>
    <title>Title</title>
</head>

<body>
    <div id="app">
        <h1>条件渲染示例</h1>
        <p v-if="showMessage">{{message}}</p>
        <button @click="toggleMessage">Toggle Message</button>
    </div>
    <script type="text/javascript">
        Vue.config.productionTip = false;
       const x = new Vue({
            el: '#app',
            data: {
                message: 'Hello Vue!',
                showMessage: true
            },
            methods: {
                toggleMessage() {
                    this.showMessage = !this.showMessage;
                }
            }
        });
    </script>
</body>
</html>

示例3:列表渲染

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script type="text/javascript" src="../js/vue.js"></script>
    <title>Title</title>
</head>

<body>
    <div id="app">
        <h1>列表渲染示例</h1>
        <ul>
            <li v-for="item in items">{{item}}</li>
        </ul>
    </div>
    <script type="text/javascript">
        Vue.config.productionTip = false;
       const x = new Vue({
            el: '#app',
            data: {
                items: ['Apple', 'Banana', 'Orange']
            }
        });
    </script>
</body>
</html>

三、模板语法

Vue的模板语法允许我们将数据绑定到HTML模板中,实现动态渲染和交互。以下是一些常用的Vue模板语法:

使用双大括号{{ }}语法可以在HTML模板中插入Vue实例的数据:

<div id="app">
    <p>{{ message }}</p>
</div>

Vue提供了很多内置指令,用于实现常见的DOM操作和数据绑定。例如,v-if指令用于根据条件渲染元素:

<div id="app">
    <p v-if="showMessage">{{ message }}</p>
</div>

可以使用v-on指令实现事件绑定,让用户与应用程序进行交互:

<div id="app">
    <button v-on:click="toggleMessage">Toggle Message</button>
</div>

使用v-for指令可以遍历数组或对象,渲染列表:

<div id="app">
    <ul>
        <li v-for="item in items">{{ item }}</li>
    </ul>
</div>

Vue提供了v-bind指令,用于动态绑定HTML元素的属性。通过v-bind指令,我们可以将Vue实例的数据绑定到HTML元素的属性上。

例如,我们可以使用v-bind指令将Vue实例的title属性绑定到<h1>标签的title属性上:

<div id="app">
    <h1 v-bind:title="title">{{ message }}</h1>
</div>

在上述示例中,title属性的值将会随着Vue实例中的title属性的变化而更新。

标签体中使用差值表达式,属性里使用v-bind指令语法

四、点击事件

<!DOCTYPE html>

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>

<div id="app">
    <p>请点击按钮</p>
    <button @click="showMessage">点击</button>
    <button @click="showMessage2($event,1)">点击(传参)</button>
    <button @click="showMessage3($event,$data.message)">点击(data里的传参)</button>
</div>
<script type="text/javascript">

    new Vue({
        el: '#app',
        data: {
            message: 'Hello Vue!'
        },
        methods: {
            showMessage: function () {
                alert(this.message);
            },
            showMessage2: function (event,n) {
                console.log(this)
                console.log(event,n)
                alert(this.message +'' + n);
            },showMessage3: function (event,msg) {
                console.log(this)
                console.log(event,msg)
                alert(this.message +'' + msg);
            }
        }
    });
    </script>

    </html>

Vue事件修饰符

Vue提供了一些事件修饰符,用于在处理事件时进行更精确的控制。以下是一些常用的Vue事件修饰符:

这些事件修饰符可以单独使用,也可以组合使用,以实现更精确的事件控制。

五、键盘事件

在Vue中,有一些常用的按键别名可以用于处理键盘事件。以下是一些常用的Vue按键别名:

可以将这些按键别名与v-on指令一起使用,以便在事件处理程序中对相应的按键进行响应。

例如,以下示例演示了如何在按下回车键时触发事件处理程序:

<div id="app">
    <input type="text" @keydown.enter="handleEnterKey">
</div>
<script type="text/javascript">
    new Vue({
        el: '#app',
        methods: {
            handleEnterKey: function () {
                alert('Enter key pressed!');
            }
        }
    });
</script>

在上述示例中,当按下回车键时,将触发handleEnterKey方法,并显示一个弹窗。

这些按键别名可帮助简化键盘事件的处理,使代码更加清晰和易于维护。

六、计算属性

<!DOCTYPE html>

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>

<div id="app">
    <input type="text" v-model="firstName"/><br>
    <input type="text" v-model="lastName"/><br>
    <h1>{{fullName}}</h1>
    <!-- 简写版本 -->
    <h1>{{simpleFullName}}</h1>
    <!-- 无缓存 -->
    <h1>{{getFullName()}}</h1>
    <h1>{{getFullName()}}</h1>
    <h1>{{getFullName()}}</h1>
</div>
<script type="text/javascript">

    new Vue({
        el: '#app',
        data: {
            firstName:'张',
            lastName:'三'
        },
        computed:{
            fullName:{
                get(){
                    console.log("get 被调用了")
                    return this.firstName +'-' + this.lastName;
                },
            },
            simpleFullName:function(){
                console.log("simpleFullName 被调用了")
                return this.firstName +'-' + this.lastName;
            }
        },
        methods: {
           getFullName(){
            console.log("getFullName 被调用了")
            return this.firstName +'-' + this.lastName;
           }
        }
    });
    </script>

    </html>


Share this post:

Previous Post
深入理解分布式系统(前两章)
Next Post
重学Vue-day02