Vue.js 入门学习笔记(一)

Vue.js 入门学习笔记(一)

最近做项目,采用的是SpringBoot+ Thymeleaf模板引擎来做。因为开发页面时还是用基本的HTML+CSS+JS,做出来的前端页面不好看,感觉太耗时间,效果又不好,所以在老师的指导下,开始学习Vue.js、Sass和element-ui等知识。

Vue

一、Vue.js 简介

Vue 是一套用于构建用户界面的渐进式 JavaScript 框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。

Vue 的运行环境有两套:

  • 开发环境下,Vue会提供很多警告来帮开发者对付常见的错误与陷阱。
  • 生产环境下,这些警告语句没有用,反而会增加应用的体积。

Vue 具有以下特点:

  1. 易用

    在有 HTML、CSS和 JavaScript 的基础上,可以快速上手;

    Vue.js 的 API 对于其他框架的参考不仅是参考,其中也包含了许多Vue.js的独特功能。

  2. 灵活

    简单小巧的核心,渐进式技术栈,足以应付任何规模的应用。

  3. 性能

    20kb min+gzip 运行大小、超快虚拟 DOM、最省心的优化。

二、Vue.js 安装

Vue.js 安装有三种方式:

  • 本地下载,直接到Vue.js官网上下载,开发时用<script>引入
  • CDN 方法
  • NPM 方法

个人觉得还是本地下载最可靠。因为是刚刚入门学习,本地下载使用就OK了。

三、基本语法

1、Vue.js起步

每个 Vue 应用都需要通过实例化 Vue 来实现,语法格式如下:

var vm = new Vue({
    //选项
})

基本选项有如下:

  • el:用于绑定HTML中某个元素
  • data:用于存放应用中的数据,相当于Java中的属性的集合。存放数据的方式是键值对。
  • methods:用于存放应用中的自定义函数

下面来看一下第一个 Vue 应用的示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>第一个Vue应用</title>
</head>
<body>

<div id="bilibili">
    <h1>site: {{site}}</h1>
    <h1>url: {{url}}</h1>
    <h1>{{say()}}</h1>
</div>

<!-- 加载本地下载好的Vue.js 文件 -->
<script src="./vue.js"></script>
<script>
    var vm = new Vue({
        el: "#bilibili",
        data: {
            site: "哔哩哔哩",
            url: "https://www.bilibili.com/"
        },
        methods: {
            say: function (){
                return this.site + "~~~干杯!!!";
            }
        }
    })
</script>
</body>
</html>

分析一下代码:

  • el选项 使得新建的 Vue 应用绑定了 THML 中 id为 “bilibili” 的 元素。该元素与应用绑定后就可以调用后者中的 datamethods 了。
  • data选项 以键值对的方式存储数据,并且键值对是可以嵌套使用的。元素调用我们Vue 应用中data的数据时 使用{{site}}的方式。
  • methods 里面可以定义很多个函数,元素调用应用中的函数同样用{{say()}}的方式。

代码效果图如下:

image-20220216155150569

2、模板语法

文本插值

数据绑定最常见的形式就是使用{{}}(双大括号)的文本插值:

<div id="bilibili">
    <h1>
        site: {{site}}
    </h1>
</div>

除了可以插入文本,还可以直接插入HTML代码

THML代码插值

使用HTML代码插值时需要用到 v-html 指令

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-html指令</title>
</head>
<body>

<div id="bilibili">
    <div v-html="site"></div>
</div>

<script src="./vue.js"></script>
<script>
    var vm = new Vue({
        el: "#bilibili",
        data: {
            site: '<h1>site: 哔哩哔哩</h1>'
        }
    })
</script>
</body>
</html>

属性

前面讲了HTML元素的内容(innerText 和 innerHTML)与Vue应用的绑定,接下来要了解HTML元素的属性与Vue应用的绑定。

通过使用 v-bind 指令 可以实现 Vue 应用才操控HTML 元素的属性。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-bind指令</title>

    <style>
        .site{
            color: red;
        }
    </style>
</head>
<body>

<div id="bilibili">
    <div v-html="site" v-bind:class="{'site': use}">

    </div>
</div>
<script src="./vue.js"></script>
<script>
    var vm = new Vue({
        el: "#bilibili",
        data: {
            site: '<h1> site: 哔哩哔哩</h1>',
            use: true
        }
    })
</script>
</body>
</html>

以上代码通过 v-bind 指令绑定了 HTML元素 的 class属性,如果use的值的true,则class属性为’site’,即使用".site"的CSS样式,如果为false,则不使用该样式。

image-20220216160101008

表达式

Vue.js 都提供了完全的 JavaScript 表达式支持

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表达式</title>
</head>
<body>
    <div id="hust">
        {{5+5}} <br/>
        {{ok?'YES':'No'}}<br/>
        {{message.split('').reverse().join('')}}
    </div>

<script src="./vue.js"></script>
<script>
    var vm = new Vue({
        el: "#hust",
        data: {
            ok: true,
            message: 'HUST'
        }
    })
</script>
</body>
</html>

指令

指令是指带有 v- 前缀的特殊属性。

指令用于在表达式的值改变时,将某些行为应用于 DOM 上。

参数

参数在指令后以冒号指明。前面的v-bind:class

用户输入

用 input 输入框中我们可以使用 v-model 指令来实现双向数据绑定:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-model双向数据绑定</title>
</head>
<body>

<div id="login">
    <span>用户名: </span>
    <input v-model="username">
    <p>{{username}}</p>
</div>
<script src="./vue.js"></script>
<script>
    var vm = new Vue({
        el: "#login",
        data: {
            username: "root"
        }
    })
</script>
</body>
</html>

v-model 指令用来在 input、select、textarea、checkbox、radio 等表单控件元素上创建双向数据绑定,根据表单上的值,自动更新绑定的元素的值。

按钮监听事件

按钮的事件我们可以使用 v-on 监听事件,并对用户的输入进行响应。

以下实例在用户点击后对字符串进行反转操作:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>按钮事件监听</title>
</head>
<body>
<div id="hust">
    <p>{{message}}</p>
    <button v-on:click="reverseMessage">点我反转字符串</button>
</div>
<script src="./vue.js"></script>
<script>
    var vm = new Vue({
        el: "#hust",
        data: {
            message: 'HUST'
        },
        methods: {
            reverseMessage: function (){
                this.message = this.message.split('').reverse().join('')
            }
        }
    })
</script>
</body>
</html>

关于指令缩写

Vue.js为两个最常用的指令提供了特别的缩写:

<!-- 完整 -->
<a v-bind:href="url"></a>
<!-- 缩写 -->
<a :href="url"></a>

<!-- 完整 -->
<a v-on:click="doSomething"></a>
<!-- 缩写 -->
<a @cilck="doSomething"></a>

3、条件语句

条件语句用到三个指令:

  • v-if
  • v-else-if
  • v-else
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>条件语句</title>
</head>
<body>
    <div id="score">
        <div v-if="score>=90">
            恭喜你,你微积分考得很好!!!
        </div>
        <div v-else-if="score>=60">
            恭喜,你微积分及格了!!!
        </div>
        <div v-else>
            不好意思,你微积分不合格,请及时办理退学手续!!!
        </div>
    </div>

<script src="./vue.js"></script>
<script>
    var vm = new Vue({
        el: "#score",
        data: {
            score: 55
        }
    })
</script>
</body>
</html>

4、for循环语句

Vue 的 循环语句使用 v-for 指令。

v-for 指令需要以 **site in sites **形式的特殊语法。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-for循环语句</title>
</head>
<body>
<div id="lessons">
    <ul>
        <li v-for="lesson in lessons">
            {{lesson.name}}
        </li>
    </ul>
</div>

<script src="./vue.js"></script>
<script>
    var vm = new Vue({
        el: "#lessons",
        data:{
            lessons: [
                {name: 'Java'},
                {name: 'Python'},
                {name: 'C++'}
            ]
        }
    })
</script>
</body>
</html>

5、计算属性

计算属性关键字 computed

计算属性在处理一些复杂逻辑时是很有用的。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>计算属性</title>
</head>
<body>
<div id="hust">
    <p>原始字符串:{{message}}</p>
    <p>计算后反转字符串:{{reverseMessage}}</p>
</div>
<script src="./vue.js"></script>
<script>
    var vm = new Vue({
        el: "#hust",
        data: {
            message: 'HUST'
        },
        computed: {
            // 计算属性的 getter
            reverseMessage: function (){
                return this.message.split('').reverse().join('');
            }
        }
    })
</script>
</body>
</html>

在效果上,其实computed 和 methods 是一样的。不过 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。而methods,在刷新页面重新渲染的时候,函数总会重新调用执行。

6、监听属性

我们可以通过 Vue.js 监听属性 watch 来响应数据的变化。

以下示例进行 千米和 米 之间的换算

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>监听事件</title>
</head>
<body>
    <div id="compute">
        千米:<input type="text" v-model = "kilometers">
        米:<input type="text" v-model = "meters">
    </div>
<p id="info"></p>
<script src="./vue.js"></script>
<script>
    var vm = new Vue({
        el: "#compute",
        data: {
            kilometers: 0,
            meters: 0
        },
        methods: {

        },
        computed: {

        },
        watch: {
            kilometers: function (val) {
                this.kilometers = val;
                this.meters = this.kilometers * 1000;
            },
            meters: function (val){
                this.meters = val;
                this.kilometers = val/1000;
            }
        }
    });
    
</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值