Vue3+pinia 第一章 邂逅Vue.js开发

一. 邂逅Vue.js开发

1.1. Vue介绍

  • Vue的介绍

image-20230815142231672

谁是最好的前端框架?

image-20230815142435225

  • Vue在前端的地位

    目前前端最流行的是三大框架:Vue、React、Angular。

    image-20230815142343515

    • react
    • angular
  • 直接学习Vue3

image-20230815143458692

如何来使用vue呢?

image-20230815143811267

1.2. Vue下载和使用

  • CDN引入
<script src="https://unpkg.com/vue@next"></script>
  • 下载引入
  • 初体验一下Vue开发
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app"></div>
<script src="https://unpkg.com/vue@next"></script>
<script>
  //使用vue
  const app = Vue.createApp({
      template:`<h2>Hello World</h2>`
  });
  //挂载
  app.mount("#app")
</script>
</body>
</html>

1.3. Vue的三个案例

1.3.1. 动态数据展示
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app"></div>
<script src="https://unpkg.com/vue@next"></script>
<script>
  //使用vue
  const app = Vue.createApp({
      template:`<h2>{{title}},{{messgae}}</h2>`,
      data: function (){
          return{
              title:"Hello World",
              messgae:"你好,Vue3"
          }
      }
  });
  //挂载
  app.mount("#app")
</script>
</body>
</html>
1.3.2. 动态展示列表
  • v-for
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app"></div>


<script src="https://unpkg.com/vue@next"></script>
<script>
    const app = Vue.createApp({
        template : `
        <h2>电影列表</h2>
        <ul>
        <li v-for="item in movies">{{item}}</li>
        </ul>
        `,
        data: function(){
            return{
                message:"你好",
                movies:["大话西游","星际穿越","盗梦空间","少年派"]
            }
        }
    });
    app.mount("#app")
</script>
</body>
</html>
1.3.3. 计数器案例
  • counter
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<div id="app"></div>
<script src="https://unpkg.com/vue@next"></script>
<script>
    const app = Vue.createApp({
        template: `<h2>当前计数: {{counter}}</h2>
        <button @click="increment">+1</button>
        <button @click="decrement">-1</button>
        `,
        data: function(){
            return {
                counter: 0
            }

        },
        methods : {
            increment: function (){
                console.log("+1被点击了")
                this.counter++;
            },
            decrement : function (){
                console.log("-1被点击了")
                this.counter--;
            }
        }
    });
    app.mount("#app")
</script>
</body>
</html>
  • increment 递增
  • decrement 递减

1.4. 命令式和声明式编程的区别

  • 原生实现计时器

image-20230815151027547

image-20230815154900130

1.5. MVC和MVVM的模型区别

image-20230815160255047

1.6. options api的data详解

  • data必须是一个函数, 函数会返回一个对象
  • data返回的对象, 会被Vue进行劫持(放到响应式系统中), 所以data的数据发生改变时, 界面会重新渲染

1.7. options api的methods详解

  • 对象 -> 很多函数

  • 里面函数不能是箭头函数:

    • this

image-20230815161236998

问题一:不能使用箭头函数

image-20230815161337026

this到底指向什么

事实上Vue的源码当中就是对methods中的所有函数进行了遍历,并且通过bind绑定了this:

image-20230815161359265

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值