首页 > 其他分享 >Vue入门到关门之Vue3项目创建

Vue入门到关门之Vue3项目创建

时间:2024-05-09 21:11:07浏览次数:16  
标签:vue 入门 api Vue3 js Vue vue3 vite

一、vue3介绍

1、为什么要学习vue3?

vue3的变化:

首先vue3完全兼容vue2,但是vue3不建议用vue2的写法;其次,vue3拥抱TypeScript,之前vue2使用的JavaScript,ts完全兼容js

最后之前学的vue2 是配置项api,而vue3是组合式api

optionsAPI(旧) => compositionAPI(新), 效果: 代码组织更方便了, 逻辑复用更方便了 非常利于维护!!

vue3新特性:

  • 数据响应式原理重新实现 (ES6 proxy 替代了 ES5 的 Object.defineProperty)

  • 解决了: 例如数组的更新检测等bug, 大大优化了响应式监听的性能 ---覆写

  • (原来检测对象属性的变化, 需要一个个对属性递归监听) proxy 可以直接对整个对象劫持

  • 虚拟DOM - 新算法 (更快 更小)

  • 提供了composition api, 可以更好的逻辑复用

  • 模板可以有多个根元素

  • 源码用 typescript 重写, 有更好的类型推导 (类型检测更为严格, 更稳定)

  • 废弃了 eventbus 过滤器

官方文档:

小结: vue3 性能更高, 体积更小, 更利于复用, 代码维护更方便

2、配置项api与组合式api快速体验

(1)配置项api

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
    <style></style>
</head>
<body>
<div id="app">

    <p>{{count}}</p>
    <br>
    <button @click="handleAdd">点我加1</button>
</div>
</body>
<script>

    let app=Vue.createApp({

        data(){
            return {
                count:100
            }
        },

        methods:{
            handleAdd(){
                this.count++
            }
        }
    })
    app.mount("#app")
</script>
</html>

(2)组合式api

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
    <style></style>
</head>
<body>
<div id="app">

    <p>{{count}}</p>
    <br>
    <button @click="handleAdd">点我加1</button>
</div>
</body>
<script>

    let app=Vue.createApp({
        setup() {
            let count=Vue.ref(0)
            let handleAdd=()=>{
                count.value++
            }
            return {
                count,
                handleAdd
            }
        },
    })
    app.mount("#app")
</script>
</html>

(3)API风格

  • 选项式API(配置项api),也就是之前vue2中用的用法
Vue.createApp({
	data:function(){},
	methods:{},
	watch:{}
	# 同一个功能的代码,分到不同地方,代码越多,越乱
})
  • 组合式API,之后vue3中的用法
Vue.createApp({
    setup() {
        # 所有代码写在这里面
        # 变量,函数,监听属性,生命周期
        # 同一个功能的代码,会在一起
    }
})
  • 如果当你打算用 Vue 构建完整的单页应用,推荐采用组合式 API + 单文件组件

(4)拥抱TypeScript

  • 之前学习vue2的时候用的都是js代码,在vue3既可以使用js也可以使用ts
  • ts是由微软推出的,但是最终也还是要被编译成js才能运行在浏览器中
  • 如果使用ts写,可以避免很大错误,因为ts是js的超集,ts完全兼容js,也优化了js的一些问题

二、vue3项目创建和启动

1、 vue-cli创建

## 查看@vue/cli版本,确保@vue/cli版本在4.5.0以上
vue --version
## 安装或者升级你的@vue/cli
npm install -g @vue/cli
## 创建
vue create vue3_demo001
## 启动
cd vue3_demo001
npm run serve
  • 如果没有配置cnpm的话,也可以配置直接配置npm的镜像站,效果是一样的
# 配置npm镜像站
npm config set registry https://registry.npmmirror.com
# 查看npm镜像站
npm config get registry

2、使用vite创建(推荐)

这种方式目前是官方推荐使用的,Vite 官方文档:Vite | 下一代的前端工具链

(1)什么是vite?

Vite(法语意为 "快速的",发音 /vit/,发音同 "veet")是一种新型前端构建工具,能够显著提升前端开发体验。它的工作流程与传统方式不同:

  • 传统方式:webpack启动项目 -> webpack进行打包编译->将打包的结果交给浏览器 ->浏览器运行

    • 先抓取并构建你的整个应用,然后才能提供服务。
    • 更新速度会随着应用体积增长而直线下降。
  • vite 方式:vite启动项目 -> 将打包编译的工作交给了浏览器->浏览器直接解析业务

    • Vite 以 原生 ESM 方式提供源码。这实际上是让浏览器接管了打包程序的部分工作。
    • Vite 只需要在浏览器请求源码时进行转换并 按需提供源码。
    • 根据情景动态导入代码,即只在当前屏幕上实际使用时才会被处理。

(2)为什么使用vite?

优势

相关文章

  • 高度自适应iframe(Vue3)
    https://juejin.cn/post/7283306395913617427<scriptsetup>import{ref,onBeforeUnmount}from'vue'defineProps({srcdoc:{type:String,default:''}})constiframe=ref()constsetIframeHeight=(......
  • springboot+vue项目
    1MyBatisPlus的分页插件是怎么生效的?体现在哪里?PaginationInnerInterceptor是通过拦截数据库操作来实现分页功能的。 MyBatisPlus的分页插件PaginationInnerInterceptor是通过拦截数据库操作来实现分页功能的。它的工作原理如下:配置分页插件:在你的SpringBoot应用......
  • 01--JS01--入门
    JavaScript01:基础入门JavaScript是一门能够运行在浏览器上的脚本语言,简称JS。首先,Javascript这个名字的由来就很有意思,不少人认为Javascript和Java貌似很像,容易想象成Java的脚本但其实两者之间没有任何关系,纯粹是商业碰瓷。既然JS是可以运行在浏览器上的脚本,并且本质上......
  • Linux从入门到精通——Centos 7.9.2009 配置国内yum源及epel源
    Centos7.9.2009配置国内yum源及epel源一、备份原有的yum源配置文件在进行任何更改之前,建议先备份原有的yum源配置文件,以防止配置过程中出现问题。可以使用以下命令备份CentOS-Base.repo文件:[root@localhost~]#cat/etc/redhat-releaseCentOSLinuxrelease7.9.2009(Cor......
  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-45-鼠标操作-下篇
    1.简介鼠标为我们使用电脑提供了很多方便,我们看到的东西就可以将鼠标移动过去进行点击就可以打开或者访问内容,当页面内容过长时,我们也可以使用鼠标滚轮来实现对整个页面内容的查看,其实playwright也有鼠标操作的方法。上一篇文章中已经讲解过鼠标的部分操作了,今天宏哥在这里将剩下......
  • kettle从入门到精通 第五十七课 ETL之kettle调用存储过程
    1、之前有个同学说他使用kettle执行一坨sql语句时,kettle直接卡死掉了。我给出的建议是使用存储过程,果不其然使用存储过程顺利解决问题。今天我们一起来学习下kettle如何调用存储过程,这里基于mysql进行演示。调用存储过程有两种方法:使用步骤【调用DB存储过程】或者步骤【执行SQL脚......
  • Pacemaker入门之---了解配置故障转移
    案例说明:以下流程介绍了创建运行服务的一个Pacemaker集群,当节点上的服务变为不可用时,将其从一个节点切换到另一个节点上。通过这个步骤,您可以了解如何在双节点集群中创建服务,并可以查看在运行该服务的节点出现问题时会出现什么情况。这个示例步骤配置一个运行ApacheHTTP服......
  • 解决 node-gyp 错误问题|node与python版本不匹配报错|node-gyp|vue
    项目要用到node-gyp(给爷爬)mac上没问题windows有问题看上面的日志,提到了python2.7看来这个模块用的上古时代的python2.7的技术windows的同学可以先安装python2这里下载:https://www.python.org/ftp/python/2.7/python-2.7.amd64.msi不要修改路径!!不要修改路径!!等......
  • 关于vue3中使用echarts设置tooltip的type为axis不显示的问题
    因为vue3中的数据对象是用的proxy监听的,要取值需要用value等方法取出来,解决方法:使用markRaw让echarts从监听对象变成普通对象!在Vue3中,markRaw是一个用于告诉Vue的响应性系统不要对某个对象进行转换或追踪其响应性的函数。当你有一个对象,并且你确定你不需要它成为响应性......
  • 解决Vue3项目警告:xxxis-declared-but-its-value-is-never-read
    刚刚在Vue3项目引入的一个组件Person下有红线,系统给出了警告,这是因为TypeScript会检查代码中未使用的变量,我定义了'Person'的变量,但是后续代码没有使用到它,从而导致Vetur(Vue的语法检查工具)给出了这个警告。解决方法:方法一:你可以删除或者在代码中使用'Person'变量或类型,以......