Vue的使用

1 VueJS 概述

1 VueJS介绍

Vue.js是一个构建数据驱动的 web 界面的渐进式框架。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。它不仅易于上手,还便于与第三方库或既有项目整合。

官网: https://cn.vuejs.org/

2 MVVM模式

MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开

MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model)

Vue.js 是一个提供了 MVVM 风格的双向数据绑定的 Javascript 库,专注于View 层。它的核心是 MVVM 中的 VM,也就是 ViewModel。 ViewModel负责连接 View 和 Model,保证视图和数据的一致性,这种轻量级的架构让前端开发更加高效、便捷

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zypxuwKZ-1658926490691)(assets\图片1.png)]

3 VueJS 快速入门

1、 创建vueProject

image-20220618095555918

2 然后修改名字–>Next–>完成;完成后里面是空的

image-20220618095644375

3 在项目下创建js文件夹,将vuejs.js文件放入js文件夹。

image-20220618095914864

4 创建model.html(下面就是,也是快速入门案例)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--
直接下载并用 <script> 标签引入,Vue 会被注册为一个全局变量。
重要提示:在开发时请用开发版本,遇到常见错误它会给出友好的警告
-->
    <script src="../js/vue.js"></script>
</head>
<body>

<div id="app">
    {
  {info}}
</div>
<script>

    new Vue({
     
       el:"#app",               //表示当前Vue对象管理div区域
       data:{
     
           info:"你好,vue!"
       }
    });
</script>
</body>
</html>

4 Vue 渲染

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--
直接下载并用 <script> 标签引入,Vue 会被注册为一个全局变量。
重要提示:在开发时请用开发版本,遇到常见错误它会给出友好的警告
-->
    <script src="../js/vue.js"></script>
</head>
<body>

<div id="app">
    {
  {info}}
</div>
<script>

    new Vue({
     
       el:"#app",               //表示当前Vue对象管理div区域
       data:{
     // 数据
           info:"你好,vue!"
       }
    });
</script>
</body>
</html>
  • 首先通过 new Vue()来创建Vue实例
  • 然后构造函数接收一个对象,对象中有一些属性:
    • el:是element的缩写,通过id选中要渲染的页面元素,本例中是一个div
    • data:数据,数据是一个对象,里面有很多属性,都可以渲染到视图中
  • 页面div中,我们通过{ {info}}的方式,来渲染刚刚定义的info属性。

5、双向绑定

<div id="app">
    <input type="text" v-model="num">
    <h2>
        {
  {info}} ,为你着迷,<br>
        有{
  {num}} 使用它。
    </h2>
</div>
<script src="js/vue.js"></script>
<script type="text/javascript">
    // 生成一个Vue实例
    var app = new Vue({
     
        el:"#app", // el,即element。要渲染的的页面元素
        data:{
      // 数据
            info:"你好,vue!",
            num:1
        }
    })
</script>

6、事件处理

我们在页面添加一个按钮:

<button v-on:click="num++">点我</button>
  • 这里用v-on指令绑定点击事件,而不是普通的onclick,然后直接操作num
  • 普通click是无法直接操作num的。

2 Vue实例

1.创建Vue实例

每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的:

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

在构造函数中传入一个对象,并且在对象中声明各种Vue需要的数据和方法,包括:

  • el
  • data
  • methods

等,接下来我们一 一介绍

2.模板或元素

每个Vue实例都需要关联一段Html模板,Vue会基于此模板进行视图渲染。

我们可以通过el属性来指定。

例如一段html模板:

<div id="app">
    
</div>

然后创建Vue实例,关联这个div

var vm = new Vue({
   
	el:"#app"
})

这样,Vue就可以基于id为app的div元素作为模板进行渲染了。在这个div范围以外的部分是无法使用vue特性的。

3.数据

当Vue实例被创建时,它会尝试获取在data中定义的所有属性,用于视图的渲染,并且监视data中的属性变化,当data发生改变,所有相关的视图都将重新渲染,这就是“响应式“系统。

html:

<div id="app">
    <input type="text" v-model="name"/>
</div>

js:

var vm = new Vue({
   
    el:"#app",
    data:{
   
        name:"张学友"
    }
})
  • name的变化会影响到input的值
  • input中输入的值,也会导致vm中的name发生改变

3 Vue生命周期和钩子函数

1.生命周期

每个 Vue 实例在被创建时都要经过一系列的初始化过程 :创建实例,装载模板,渲染模板等等。Vue为生命周期中的每个状态都设置了钩子函数(监听函数)。每当Vue实例处于不同的生命周期时,对应的函数就会被触发调用。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s6kVHUze-1658926490692)(assets\生命周期.png)]

vue在生命周期中有这些状态:

  • beforeCreate:创建VUE对象之前执行,此时data中的数据还未初始化,el还未关联到对应的id
  • created:创建VUE对象之后执行,此时data中的数据已经初始化,但el还未关联到对应的id
  • beforeMount:对象挂载之前执行,此时el已经关联到对应对象,但{ {}}表达式还未加载
  • mounted:对象挂载之后执行,此时{ {}}表达已经加载,执行完mounted之后开始正常执行js代码
  • beforeUpdate:data数据更新前执行,此时data中的数据已经更新,但是{ {}}表达式中引用的还没有更新
  • updated:数据更新后执行,{ {}}表达式中引用也更新
  • beforeDestory:vue对象销毁前执行
  • destroyed:vue对象销毁后执行

Vue在实例化的过程中,会调用这些生命周期的钩子,给我们提供了执行自定义逻辑的机会。

2、钩子函数

我们可以在Vue中定义一个created函数,代表这个时期的构造函数:

html:

<div id="app">
    {
  {hello}}
</div>

js:

var vm = new Vue({
   
    el:"#app",
    data:{
   
        hello: '' // hello初始化为空
    },
    created(){
   
        this.hello = "hello, world! 我出生了!";
    }
})

结果

image-20220618102734536

4VueJS 常用系统指令

什么是指令?

指令 (Directives) 是带有 v- 前缀的特殊特性。指令特性的预期值是: JavaScript 表达式。指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。

例如我们在入门案例中的v-on,代表绑定事件。

1 v-on指令

在没有使用vue之前,页面标签可以通过设置onXXX响应事件;在vue中可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码

v-on简写方式

<!-- 完整语法 -->
<a v-on:click="doSomething()">...</a>
<!-- 缩写 -->
<a @click="doSomething()">...</a>

v-on:click

案例1:(单击事件)

<body>
<div id="app">
    <input type="button"  v-on:click="dianji()" value="点我"/>
</div>

<script>
    new Vue({
     
        el: "#app",
        data: {
     

        },
        methods:{
     
            dianji:function () {
     
                alert("弹框了");
            }
        }
    });
</script>
</body>

案例2:

<body>
// 点击div时,div中的值会发生改变
<div id="app" v-on:click="fun1('vue的点击事件触发啦!')" 
    style="width: 200px;height: 200px;border:1px solid red;">
   {
  {info}}
</div>

<script>
   new Vue({
     
       el: "#app",
       data: {
     
           info:"我是div"
       },
       methods:{
     
           fun1:function (msg) {
     
               this.info=msg;
           }
       }
   });
</script>

</body>

v-on:keydown

案例1:

<div id="app">
    <input type="text" v-on:keydown="fun2()">
</div>
<script>
    new Vue({
     
        el: '#app',
        methods: {
     
            fun2: function (a) {
     
               alert("键盘按下了");
            }
        }
    });
</script>

案例2:

<body>
<div id="app">
   <input type="text" v-on:keydown="fun2($event)">
</div>
<script>
   new Vue({
     
       el: '#app',
       methods: {
     
           fun2: function (e) {
     
               //只能输入数字
               if(!(e.keyCode>=48 && e.keyCode<=57)){
     
                   e.preventDefault();         //阻止事件默认行为
               }
           }
       }
   });
</script>
</body>
</html>

$event-事件对象

1)使用不带圆括号的形式,event 对象将被自动当做实参传入:v-on:keydown=“fun2”

2)使用带圆括号的形式,我们需要使用 $event 变量显式传入 event 对象:v-on:keydown=“fun2($event)”

3)preventDefault()-阻止默认事件

v-on:mouseover

<body>
<div id="app">
   <div v-on:mouseover="fun1" id="div" style="background:red
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值