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

一、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官方文档:Vue.js - The Progressive JavaScript Framework | Vue.js
  • vue3中文文档:Vue.js

小结: 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创建

  • 这种创建方式已经被官方不推荐使用了
  • 官方文档:https://cli.vuejs.org/zh/guide/creating-a-project.html#vue-create
## 查看@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?

优势

  • 💡 极速的服务启动,使用原生 ESM 文件,无需打包
  • ⚡️ 轻量快速的热重载,始终极快的模块热重载(HMR)
  • 🛠️丰富的功能,对 TypeScript、JSX、CSS 等支持开箱即用
  • 📦传统构建 与 vite构建对比图

在这里插入图片描述

(3)使用vite需要注意的地方

**兼容性注意:**Vite 需要 Node.js 版本 18+,20+。然而,有些模板需要依赖更高的 Node 版本才能正常运行,当你的包管理器发出警告时,请注意升级你的 Node 版本。

(4)vite创建vue3

① 指定名字创建
  • 使用cnpm create vite vue3_demo001创建完的项目是没有安装依赖的,也没有安装插件

在这里插入图片描述

  • 打开项目,安装依赖cnpm install

在这里插入图片描述

  • 运行项目npm run dev或者pycharm配置运行项目

在这里插入图片描述

② 不指定名字创建
  • 使用cnpm create vue@latest创建可以自选插件的vue3项目,但还是不带依赖

在这里插入图片描述

(5)使用vite和vue3创建项目的文件简单解释

  • main.js
import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
createApp(App).mount('#app') # 没有使用第三方插件
  • HelloWorld.vue 组合式api写法,跟之前不一样了
<script setup>import { ref } from 'vue'defineProps({msg: String,})const count = ref(0)
</script>
<template>
<h1>{{ msg }}</h1>
<div class="card"><button type="button" @click="count++">count is {{ count }}</button></div>
</template>
  • 后期我们可以自己引入 vuex,pinia,vue-router,代码需要自己写
  • 以后在vue3上,建议使用pinia 做状态管理,pinia更适合组合式api的写法,而pinia和vuex是一个功能

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

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

相关文章

(数据分析方法)长期趋势分析

目录 一、定义 二、目的 三、方法 1、移动平均法 (1)、简单移动平均法 (2)、加权移动平均法 (3)、指数平滑法 2、最小二乘法 3、线性回归 1、数据预处理 2、观察数据分布建立假设模型 3、定义损失函数 4、批量梯度下降 5、优化 4、LSTM 时序分析 5、特征工程 一…

OCC笔记:图形可视化的实现方式

注&#xff1a;文中参看的occ的源码版本为7.4.0 1、实现思路概览 整体架构 主要有3大块&#xff1a;AIS&#xff08;Application Interactive Services &#xff0c;直译为&#xff1a;应用程序交互服务&#xff09;、Graphics&#xff08;图形&#xff09;、Geometry & T…

Spring Security + JWT 实现登录认证和权限控制

Spring Security JWT 实现登录认证和权限控制 准备步骤 准备好一些常用的工具类&#xff0c;比如jwtUtil&#xff0c;redisUtil等。引入数据库&#xff0c;mybatis等&#xff0c;配置好controller&#xff0c;service&#xff0c;mapper&#xff0c;保证能够正常的数据请求。…

书籍推荐|经典书籍ic书籍REUSE METHODOLOGY MANUALFOR等和verilog网站推荐(附下载)

大家好&#xff0c;今天是51过后的第一个工作日&#xff0c;想必大家都还没有完全从节假日的吃喝玩乐模式转变为勤勤恳恳的打工人模式&#xff0c;当然也包括我&#xff0c;因此这次更新主要是分享几篇书籍和verilog相关的学习网站~ 首先是一本数字电路相关的基础书籍&#xf…

如何让你的排单更快?

一般我们都喜欢做打板借用快速通道&#xff01;但是目前快速通道也是共享通道&#xff0c;独立单元格基本不开发。 想要排单更快&#xff0c;想要隔夜打板&#xff0c;我们到底应该怎么做呢&#xff1f; 想要排单更快&#xff0c;说白了就是要提高你的交易速度&#xff01;一&a…

性能超越!新模型Dragoman打造高质量英译乌翻译系统,打败现有SOTA模型

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享&#xff0c;与你一起了解前沿深度学习信息&#xff01; 引言&#xff1a;探索乌克兰语的机器翻译挑战 在当今全球化迅速发展的背景下&#xff0c;机器翻译技术已成为沟通世界各地文化和语言的重要桥梁。尽管如此&…

PMO全面指南:一文读懂PMO的功能、职责、类型、构建

多年来&#xff0c;PMO 的概念在多个行业和类型的组织中越来越受欢迎。一开始&#xff0c;只有大型跨国公司才熟悉它&#xff0c;但后来&#xff0c;许多中小型公司开始采用 PMO 来进行高效的项目管理并实现其战略目标。 根据Statista的数据&#xff0c;目前有80%的组织设有至…

OpenHarmony实战开发-管理位置权限

Web组件提供位置权限管理能力。开发者可以通过onGeolocationShow()接口对某个网站进行位置权限管理。Web组件根据接口响应结果&#xff0c;决定是否赋予前端页面权限。获取设备位置&#xff0c;需要开发者配置ohos.permission.LOCATION&#xff0c;ohos.permission.APPROXIMATE…

基于Springboot的家具网站

基于SpringbootVue的家具网站设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页 商家 家具信息 家居资讯 后台管理 后台首页 用户管理 商家管理 家具类型管理 家具…

fabric部署调用合约示例

一 打包智能合约 ①进入fabric-samples文件夹下的chaincode/fabcar/go目录下执行 GO111MODULEon go mod vendor下载依赖&#xff08;文件夹下已经有go.mod&#xff0c;不需要使用go mod init生成该module文件&#xff09;②进入到test-network文件下使用以下命令将二进制文件…

微信小程序个人中心、我的界面(示例四)

微信小程序个人中心、我的界面&#xff0c;九宫格简单布局&#xff08;示例四&#xff09; 微信小程序个人中心、我的界面&#xff0c;超简洁的九宫格界面布局&#xff0c;代码粘贴即用。更多微信小程序界面示例&#xff0c;请进入我的主页哦&#xff01; 1、js代码 Page({…

泛微E9开发 限制整型、日期型、附件型字段的取值范围

1、功能背景 在用户进行输入时&#xff0c;通过控制输入数据的范围来实现实际效果&#xff0c;如上级管理者对下级员工进行年度评分时&#xff0c;只能输入1~100分&#xff0c;现在表单中新增三种类型不同的字段&#xff0c;具体如下所示&#xff1a; 2、展示效果 限制整数的…

StreamingT2V

下面首先是参考的一些博客 https://blog.csdn.net/qq_44681809/article/details/137081515 qustion SDEdit:就是给图片加一点噪声然后再用模型去噪&#xff0c;来获得一个更好的帧&#xff0c;比如去掉伪影和污点 这里的分割为m个24帧的块&#xff0c;块与块之间已经有8帧重叠…

JavaScript注释规范

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃 &#xff0c;大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端基础路线”&#xff0c;可获…

8个细节决定你的活动策划推广成败-华媒舍

活动策划和推广对于一个成功的活动来说至关重要。许多因素会影响活动的成功与否&#xff0c;以下我将介绍8个关键细节&#xff0c;这些细节能够决定活动的策划与推广的成败。 1. 目标定位 活动策划必须明确目标。你需要确定你的活动是为了推广何种产品或服务&#xff0c;吸引什…

245 基于matlab的MEEMD信号分解及重构算法

基于matlab的MEEMD信号分解及重构算法。MEEMD方法的主要步骤包括&#xff1a;1. 定义多元信号集合&#xff0c;将多个信号进行集合&#xff1b;2. 对多元信号集合进行EEMD分解&#xff0c;得到一组IMFs&#xff1b;3. 将相同IMF进行平均&#xff0c;得到改进的IMFs&#xff1b;…

抖音小店如何快速出单?内行人闭口不提的诀窍,一篇全曝光!

哈喽~我是电商月月 新手做抖店不成功&#xff0c;最大的问题就是不懂技巧&#xff0c;不懂规则&#xff0c;不懂玩法&#xff0c;你基础事项&#xff0c;思维方向都没选好&#xff0c;再怎么努力也别想出单 看下去&#xff0c;新手在开店后不要着急选品&#xff0c;先把这些问…

AI热潮开始退去,财务压力迫使多家硅谷明星初创公司选择退出

曾风光无限的Stability AI已重组并削减业务规模&#xff0c;Inflection AI更是关闭业务并基本并入微软。 5月4日消息&#xff0c;国外媒体日前撰文指出&#xff0c;人工智能的热潮已开始逐渐褪去。初创公司想要同微软、谷歌等科技巨头在人工智能领域一决高下&#xff0c;门槛已…

供应链|经典论文解读:(s,S) 策略在动态库存下的最优性

文章考虑了具有订购成本&#xff08;由单位成本加上重新订购成本组成&#xff09;的动态库存问题。具体而言&#xff0c;对于每个时期&#xff0c;系统在中期开始是做出一系列采购决策——这些采购有助于库存的积累&#xff0c;并在随后的周期被需求所消耗。每时期系统会产生各…

04-18 周四 为LLM_inference项目配置GitHub CI过程记录

04-18 周四 为LLM_inference项目配置GitHub CI过程记录 时间版本修改人描述2024年4月18日10:30:13V0.1宋全恒新建文档 简介和相关文档 04-15 周一 GitHub仓库CI服务器配置过程文档actions-runner 是托管与GitHub上的仓库&#xff0c;下载最新的客户端程序即可。self hosted r…