Vue3技术1之Vue3简介、创建Vue3工程、分析工程结构、安装开发者工具与初识setup

news2024/11/25 1:21:26

Vue3技术1

  • Vue3简介
    • 发展
    • 提升
  • 创建Vue3工程
    • 使用vue-cli创建
    • 使用vite创建
  • 分析工程结构(由vue-cli创建的)
    • main.js
    • vue.config.js
    • App.vue
  • 安装开发者工具
  • 初识setup
    • setup的两种返回值
      • 返回一个对象
        • App.vue
      • 返回一个函数
        • App.vue
    • Vue2与Vue3混合使用
      • App.vue
    • 总结

Vue3简介

发展

  • 2020年9月18日,Vue.js发布3.0版本,代号:One Piece(海贼王)
  • github上的tags地址:https://github.com/vuejs/vue-next/releases/tag/v3.0.0

提升

性能的提升、源码的升级、更好的支持TypeScript、新的特性

创建Vue3工程

使用vue-cli创建

官方文档

  1. 确保vue/cli版本在4.5.0以上

vue --version

  1. 安装或者升级@vue/cli

npm install -g @vue/cli

  1. 创建

vue create vue-test

在这里插入图片描述
在这里插入图片描述

  1. 启动

cd vue_test
npm run serve

在这里插入图片描述
在这里插入图片描述

使用vite创建

  • 官方文档
  • vite官网
  • 优势如下
    • 开发环境中,无需打包操作,可快速的冷启动。
    • 轻量快速的热重载(HMR)。
    • 真正的按需编译,不再等待整个应用编译完成。
  1. 创建工程

npm init vite-app <project-name>

  1. 进入工程

cd <project-name>

  1. 安装依赖

npm install

  1. 运行

npm run dev

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

分析工程结构(由vue-cli创建的)

文件目录类似Vue2
在这里插入图片描述

main.js

//引入的不再是Vue构造函数了,引入的是一个名为createApp的工厂函数
import { createApp } from 'vue'
import App from './App.vue'

// createApp(App).mount('#app')

//创建应用实例对象-app(类似于vue2中的vm,但app比vm更“轻”)
const app=createApp(App)
console.log("app",app)
//挂载
app.mount('#app')

setTimeout(()=>{
    //卸载
    app.unmount("#app")
},5000)

//对比:vue2中的写法
/*const vm=new Vue({
    render:h=>h(App)
})
vm.$mount("#app")*/

请添加图片描述

vue.config.js

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  lintOnSave: false, //关闭语法检查
})

App.vue

<template>
<!-- Vue3的组件中的模板结构可以没有根标签-->
  <img alt="Vue logo" src="./assets/logo.png">
  <HelloWorld msg="Welcome to Your Vue.js App"/>
</template>

<script>
import HelloWorld from './components/HelloWorld.vue'

export default {
  name: 'App',
  components: {
    HelloWorld
  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

安装开发者工具

在这里插入图片描述

初识setup

setup的两种返回值

返回一个对象

App.vue

<template>
  <h1>一个人的信息</h1>
  <h2>姓名:{{name}}</h2>
  <h2>年龄:{{age}}</h2>
  <button @click="sayHello">说话</button>
</template>

<script>
import {h} from 'vue'
export default {
  name: 'App',
  //此处只是测试一下setup,暂不考虑响应式的问题
  setup(){
    //数据
    let name="张三"
    let age=18

    //方法
    function sayHello(){
      alert(`我叫${name},今年${age}岁了~`)
    }
    //返回一个对象(常用)
    return{
      name,
      age,
      sayHello
    }
    //返回一个函数(渲染函数)
    // return ()=>h('h1','个人信息')
  }
}
</script>



在这里插入图片描述

返回一个函数

App.vue

<template>
  <h1>一个人的信息</h1>
  <h2>姓名:{{name}}</h2>
  <h2>年龄:{{age}}</h2>
  <button @click="sayHello">说话</button>
</template>

<script>
import {h} from 'vue'
export default {
  name: 'App',
  //此处只是测试一下setup,暂不考虑响应式的问题
  setup(){
    //数据
    let name="张三"
    let age=18

    //方法
    function sayHello(){
      alert(`我叫${name},今年${age}岁了~`)
    }
    //返回一个对象(常用)
    /*return{
      name,
      age,
      sayHello
    }*/
    //返回一个函数(渲染函数)   
    return ()=>h('h1','个人信息')
  }
}
</script>

在这里插入图片描述

Vue2与Vue3混合使用

App.vue

<template>
  <h1>一个人的信息</h1>
  <h2>姓名:{{name}}</h2>
  <h2>年龄:{{age}}</h2>
  <h2>性别:{{sex}}</h2>
  <h2>a:{{a}}</h2>
  <button @click="sayHello">说话</button>
  <br>
  <br>
  <button @click="sayWelcome">说话</button>
  <br>
  <br>
  <button @click="test1">测试一下在Vue2的配置中去读取Vue3中的数据、方法</button>
  <br>
  <br>
  <button @click="test2">测试一下在Vue3中的setup配置中去读取Vue2的数据、方法</button>
</template>

<script>
import {h} from 'vue'
export default {
  name: 'App',
  data(){
    return{
      sex:"男",
      a:100
    }
  },
  methods:{
    sayWelcome(){
      alert("你好"+this.sex+"士,欢迎光临")
    },
    test1(){
      console.log("name",this.name)
      console.log("age",this.age)
      console.log("sex",this.sex)
      console.log("sayHello",this.sayHello)
      console.log("sayWelcome",this.sayWelcome)
    },

  },


  //此处只是测试一下setup,暂不考虑响应式的问题
  setup(){
    //数据
    let name="张三"
    let age=18
    let a=200

    //方法
    function sayHello(){
      alert(`我叫${name},今年${age}岁了~`)
    }
    function test2(){
      console.log('------------------------')
      console.log('name',name);
      console.log('age',age)
      console.log('sex',this.sex)
      console.log('sayWelcome',this.sayWelcome)
    }
    //返回一个对象(常用)
    return{
      name,
      age,
      sayHello,
      test2,
      a
    }
    //返回一个函数(渲染函数)
    // return ()=>h('h1','个人信息')
  }
}
</script>



请添加图片描述

总结

  1. 理解:Vue3.0中一个新的配置项,值为一个函数
  2. setup是所有Composition API(组合API)“表演的舞台”
  3. 组件中所用到的:数据、方法等等,均要配置在setup中
  4. setup函数的两种返回值:
    (1)若返回一个对象,则对象中的属性、方法,在模板中均可以直接使用(重点关注!)
    (2)若返回一个渲染函数,则可以自定义渲染内容(了解)
  5. 注意点:
    (1)尽量不要与Vue2.x配置混用
  • Vue2.x配置(data、methods、computed…)中可以访问到setup中的属性、方法
  • 但在setup中不能访问到Vue2.x配置(data、methods、computed…)
  • 如果有重名,setup优先
    (2)setup不能是一个async函数,因为返回值不再是return的对象,而是promise,模板看不到return对象中的属性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/425147.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【致敬未来的攻城狮计划】— 连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下(文字上的初理解)

系列文章目录 系列文章目录 前言 一、瑞萨MCU&#xff08;CPK_RA2E1是瑞萨RA系列开发板&#xff09;是什么&#xff1f; 首先引入是什么&#xff1f; 他的优势在哪&#xff1f; 瑞萨CPK_RA2E1 对标stm32 相似之处和不同之处&#xff1f; 瑞萨CPK_RA2E1如何开发&#xff…

集成定时器事件

一&#xff0c;定时器事件 1、概述 libevent提供了高性能定时器的功能&#xff0c;方便执行延迟回调逻辑。在添加事件监听的时候&#xff0c;可以不指定fd和监听的事件&#xff0c;指定超时的时间&#xff0c;实现定时器功能。定时器的实现主要依赖下面的数据结构&#xff0c;…

java 多线程基础 万字详解(通俗易懂)

目录 一、前言 二、定义 1.进程 : 2.线程 : 3.单线程与多线程 : 4.并发与并行 : 三、线程的创建 1.创建线程的两种基本方式 : 1 继承Thread类&#xff0c;并重写run方法 1.5 多线程的执行机制(重要) 2 实现Runnable接口&#xff0c;并重写run方法 2. 两种创建线程方式…

【C++】继承---下(子类默认成员函数、虚继承对象模型的详解等)

前言&#xff1a; 上篇文章我们一起初步了解了继承的概念和使用&#xff0c;本章我们回家新一步深入探讨继承更深层次的内容。 前文回顾——>继承---上 目录 &#xff08;一&#xff09;派生类的默认成员函数 &#xff08;1&#xff09;6个默认成员函数 &#xff08;…

Pytorch全连接神经网络实现手写数字识别

问题Mnist手写数字识别数据集作为一个常见数据集&#xff0c;包含10个类别&#xff0c;在此次深度学习的过程中&#xff0c;我们通过pytorch提供的库函数&#xff0c;运用全连接神经网络实现手写数字的识别方法设置参数input_size 784hidden_size 500output_size 10num_epoc…

JavaScript对象类型之function

目录 一、Function 定义函数 调用函数 默认参数 匿名函数 箭头函数 二、函数是对象 三、函数作用域 四、闭包 五、let、var与作用域 一、Function 定义函数 function 函数名(参数) {// 函数体return 结果; } 例如&#xff1a; function add(a, b) {return a b; …

应届生通过Java培训班转行IT有前途吗?

借用邓小平同志曾说过的一句话&#xff1a;科学技术是第一生产力。IT行业作为科技行业中的一员&#xff0c;不管是在自身的发展&#xff0c;还是支持其他行业的发展中都扮演了不可或缺的角色&#xff0c;“互联网”是社会发展的趋势&#xff0c;前途是无限的。而计算机语言是目…

dolphinscheduler之hivecli 任务

hivecli 任务 Hivecli任务说明 dolphinscheduler的hivecli任务是专门执行hivesql的任务类型。其中子类型分为FROM_SCRIPT和FROM_FILE。 FROM_SCRIPT 执行的脚本可以直接在文本框中编写 执行的底层采用-e参数执行 hive -e "show databases;show tables"FROM_FILE…

建造者模式解读

目录 话题引进 传统方式解决盖房需求 传统方式的问题分析 建造者模式基本介绍 基本介绍 四个角色 原理类图 ​编辑 应用实例 改进代码 建造者模式在 JDK 的应用和源码分析 建造者模式的注意事项和细节 抽象工厂模式 VS 建造者模式 话题引进 1) 需要建房子&#xff1a;…

剑指 Offer (第 2 版)

&#xff08;简单&#xff09;剑指 Offer 03. 数组中重复的数字 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0&#xff5e;n-1 的范围内。数组中某些数字是重复的&#xff0c;但不知道有几个数字重复了&#xff0c;也不知道每个数字重复了几次。请…

Python实现采集某二手房源数据并做数据可视化展示

目录环境介绍&#xff1a;模块使用:实现爬虫思路&#xff1a;代码环境介绍&#xff1a; Python 3.8Pycharm 模块使用: requests >>> pip install requests 数据请求模块 parsel >>> pip install parsel 数据解析模块 csv 内置模块 实现爬虫思路&#x…

如何搭建自己的V Rising自建服务器,以及常见的V Rising服务器问题解决方案

V rising官方服务器经常无法连接&#xff0c;无法和小伙伴玩耍&#xff1b;如何搭建自己的V rising服务器呢&#xff1f;还可以修改掉落倍率&#xff0c;加快游戏进度&#xff0c;搭建自己的私人服务器。 前言 最近V rising这个游戏很火呀&#xff0c;迫不及待地和小伙伴一起…

基于粒子群优化算法的面向综合能源园区的三方市场主体非合作交易方法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【JSP学习笔记】4.JSP 隐式对象及客户端请求

前言 本章介绍JSP的隐式对象及客户端请求。 JSP 隐式对象 JSP隐式对象是JSP容器为每个页面提供的Java对象&#xff0c;开发者可以直接使用它们而不用显式声明。JSP隐式对象也被称为预定义变量。 JSP所支持的九大隐式对象&#xff1a; 对象描述requestHttpServletRequest 接…

一文吃透Arthas常用命令!

Arthas 常用命令 简介 Arthas 是Alibaba开源的Java诊断工具&#xff0c;动态跟踪Java代码&#xff1b;实时监控JVM状态&#xff0c;可以在不中断程序执行的情况下轻松完成JVM相关问题排查工作 。支持JDK 6&#xff0c;支持Linux/Mac/Windows。这个工具真的很好用&#xff0c;…

【C++】模板进阶--非类型模板参数模板特化及分离编译

文章目录一、非类型模板参数二、模板的特化1.模板特化的概念2.函数模板的特化3.类模板的特化3.1 全特化3.2 偏特化4.类模板特化应用示例三、模板的分离编译四、模板总结一、非类型模板参数 模板参数分为类型形参与非类型形参&#xff0c;其中&#xff0c;类型形参即出现在模板…

MBD-PMSM闭环控制模型(FOC算法)

目录 前面 Speed_and_Position_Estimator 获取HALL信号 HALL状态更新 计算转速 位置判断 ADC相电流/总线电流电压 获取AD值 计算实际值 低速高速切换 SlowLoopControl FastLoopControl 最后 前面 前面分析了BLDC的开环与闭环&#xff0c;接下来分析PMSM或者说FOC…

MySQL 异步复制、半同步复制、增强半同步复制(史上最全)

背景&#xff1a;来自于小伙伴问题 小伙伴的难题&#xff1a; mysql主从同步的时候&#xff0c;半同步和增强半同步是怎样的一个概念&#xff0c;我看网上说的有点不明不白的&#xff0c;也没找到合适的解释。 这里尼恩给大家做一下系统化、体系化的梳理。也一并把这个题目以…

【每天学习一点点】RocketMQ的架构、写数据、高效的数据查询索引、负载均衡

Rocket一、学习目标二、RocketMQ的架构运行图2.1、NameServer2.1.1 为什么需要NameServer2.1.1.1 不可以没有nameserver吗&#xff1f;2.1.2 NameServer需要单独部署吗2.1.3 Nameserver可以动态注册和注销Broker、Topic和Consume 是什么意思2.1.4 可以使用nacos的配置中心替代N…

成本与体验的“非零和博弈”

随着移动互联网和智能终端的普及&#xff0c;越来越多的海内外互联网企业开始发力短视频业务。在短视频用户全球化&#xff0c;短视频产品及内容消费井喷式增长的今天&#xff0c;用户开始逐渐对体验有了越来越高的要求。为了更清晰更流畅地播放&#xff0c;用户播放成本也随着…