【vue3学习之路(一)】

文章目录

  • 前言
  • 一、vue3项目创建
    • 1.1环境准备
      • 1.1.1 基于 vue-cli 创建(脚手架创建)
      • 1.1.2 基于 vite 创建(推荐)
  • 二、熟悉流程
  • 总结


前言

参考视频:https://www.bilibili.com/video/BV1Za4y1r7KE?p=10&spm_id_from=pageDriver&vd_source=d4a415289ddc233b050862fba21c8157

一、vue3项目创建

方法一:基于vue-cli创建
方法二:基于vite创建(官网推荐),创建更快
vite官网地址:https://vitejs.cn
在这里插入图片描述
在这里插入图片描述

1.1环境准备

下载好node.js才有npm

1.1.1 基于 vue-cli 创建(脚手架创建)

点击查看官方文档

备注:目前vue-cli已处于维护模式,官方推荐基于 Vite 创建项目。
在powershell
查看@vue/cli版本,确保@vue/cli版本在4.5.0以上
vue --version
安装或者升级你的@vue/cli
npm install -g @vue/cli
执行创建命令
vue create vue_test
随后选择3.x
Choose a version of Vue.js that you want to start the project with (Use arrow keys)
》3.x 直接回车
2.x
在这里插入图片描述
启动
cd vue_test
npm run serve

1.1.2 基于 vite 创建(推荐)

官网地址:https://vitejs.cn
https://cn.vuejs.org/guide/quick-start.html#creating-a-vue-application
注意node版本要在18以上。在需要创建的位置cmd

//	 创建工程
npm init vite@latest
//	输入项目名称
vite-vue3
//	 选择vue和TypeScript
//	进入创建的文件目录
cd vite-vue3
// 安装默认依赖 先查看当前源,切换淘宝镜像然后再安装
npm config get registry
npm config set registry=http://registry.npm.taobao.org/
npm install
// 运行
npm run dev

在这里插入图片描述
并未运行成功
(node:4960) UnhandledPromiseRejectionWarning: SyntaxError: Unexpected token ‘??=’
at Loader.moduleStrategy (internal/modules/esm/translators.js:145:18)
(Use node --trace-warnings ... to show where the warning was created)
(node:4960) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block
, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:4960) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.在这里插入图片描述
若运行出错,检查node版本并切换至高版本
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可采用以下方法更轻松

在这里插入图片描述

在这里插入图片描述

二、熟悉流程

在这里插入图片描述
main.ts
在这里插入图片描述
在src文件下的components新建想要添加的组件Person.vue
数据放在data,事件放在methods(这是vue2写法)

<template><div class="person"><h2>姓名:{{name}}</h2><h2>年龄:{{age}}</h2><button @click="changeName">修改姓名</button><button @click="changeAge">修改年龄</button><button @click="showTel">查看联系方式</button></div>
</template><script lang="ts">
export default {// eslint-disable-next-line vue/multi-word-component-namesname:'Person',data(){return{name:'小小',age:19,tel:'12345566'}},methods:{changeName(){this.name='xiao'},changeAge(){this.age+=1},showTel(){alert(this.tel)}}
}</script><style>
.person{background-color: #f8f8f8;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;
}
button{margin:0 5px ;
}
</style>

vue3的写法如下:

<template><div class="person">
<!--     <h2>姓名:{{a}}</h2>-->
<!--    <h2>年龄:{{b}}</h2>--><h2>姓名:{{name}}</h2><h2>年龄:{{age}}</h2><button @click="changeName">修改姓名</button><button @click="changeAge">修改年龄</button><button @click="showTel">查看联系方式</button></div>
</template><script lang="ts">
export default {// eslint-disable-next-line vue/multi-word-component-namesname:'Person',setup(){// console.log('@@',this)  // setup函数中的this是undefined,vue3弱化this//数据,原来写在data中的let name = '小夏'   //不是响应式的let age = 19      //注意此时的age不是响应式的let tel = '1232332423'// 方法function changeName(){console.log(1)name='sun'     // 注意:这样写name,页面是不会变化的console.log(name)  // 测试是否修改}function changeAge(){age += 1}function showTel(){alert(tel)}// 将数据、方法交出去,模版中才可以使用// return {a:name,b:age}return {name,age,changeAge,changeName,showTel}// setup的返回值也可以是一个渲染函数// return function (){//   return '哈哈哈哈'// }// return ()=>'哈哈哈哈哈'  // 箭头函数}}</script><style>
.person{background-color: #f8f8f8;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;
}
button{margin:0 5px ;
}
</style>

App.vue
在template里写html内容,script里写js或ts,注册相应组件,并在template里引用该组件

<template><div class="app"><h1>你好啊</h1><Person/></div>
</template><script lang="ts">
import Person from "@/components/Person.vue";
export default {name:'App',  //组件名components:{Person}  //注册组件
}</script><style>
.app{background-color: #2c3e50;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;
}
</style>

总结

1.Vue3的setup和vue2传统的配置项(data,methods)可不可以同时写?若冲突,以谁为主?
答:vue2的选项式语法可以和vue3的setup共存。data,methods可以和setup同时存在。data可以读取setup里的数据,setup不能读取data里数据

<template><div class="person">
<!--     <h2>姓名:{{a}}</h2>-->
<!--    <h2>年龄:{{b}}</h2>--><h2>姓名:{{name}}</h2><h2>年龄:{{age}}</h2><button @click="changeName">修改姓名</button><button @click="changeAge">修改年龄</button><button @click="showTel">查看联系方式</button><hr><h2>测试1:{{a}}</h2><h2>测试2:{{c}}</h2><h2>测试3:{{d}}</h2><button @click="b">测试</button></div>
</template><script lang="ts">
export default {// eslint-disable-next-line vue/multi-word-component-namesname:'Person',data(){return{a:100,c:this.name,d:200}},methods:{b(){console.log('b')}},setup(){// console.log('@@',this)  // setup函数中的this是undefined,vue3弱化this//数据,原来写在data中的let name = '小夏'   //不是响应式的let age = 19      //注意此时的age不是响应式的let tel = '1232332423'// 方法function changeName(){console.log(1)name='sun'     // 注意:这样写name,页面是不会变化的console.log(name)  // 测试是否修改}function changeAge(){age += 1}function showTel(){alert(tel)}// 将数据、方法交出去,模版中才可以使用// return {a:name,b:age}return {name,age,changeAge,changeName,showTel}// setup的返回值也可以是一个渲染函数// return function (){//   return '哈哈哈哈'// }// return ()=>'哈哈哈哈哈'  // 箭头函数}}</script><style>
.person{background-color: #f8f8f8;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;
}
button{margin:0 5px ;
}
</style>

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

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

相关文章

Switch搜不到5g wifi

Switch偶尔可以连上5GHz的SSID&#xff0c;但有时却又搜不到&#xff0c;其实只是频道在作祟。 频道是为了减少干扰 Switch仅有特定频道才能连接 刚刚提到&#xff0c;不论2.4GHz或是5GHz频段都有不同的频道可以选择&#xff0c;即便都是2.4GHz频段选择不同频道才能避免之间的…

代码随想录算法训练营第五十七天|647 回文子串 516.最长回文子序列

647. 回文子串 https://leetcode.com/problems/palindromic-substrings/ 思路&#xff1a; 当我们看到两个下标 i&#xff0c; j 上 s[i] ! s[j], 那么 s[i: j1] 一定不是回文子串。 如果s[i] s[j], 那么我们可以在检查 s[i1: j] 是不是回文串。如果暴力搜索的话是 O(n^3) 的…

【设计模式】单例模式详解

单例模式&#xff1a; 定义&#xff1a;确保一个类在任何情况下都绝对只有一个实例&#xff0c;并提供一个全局访问点。为了防止出现重复的创建。 单例模式是JAVA中最简单的设计模式之一。属于创建型设计模式&#xff0c;它提供了一种创建对象的最佳方式。 这种模式涉及到一个…

辅助功能IOU(交并比)_3.2

实现两个目标框的交并比候选框在多目标跟踪中的表达方式及相应转换方法 IOU(Intersection over Union)&#xff0c;“交并比”&#xff0c;是计算机视觉和图像处理中常用的一个评价指标&#xff0c;尤其在目标检测任务中用来衡量模型预测的目标框与真实目标框的重合程度。 具体…

(附源码)基于Spring Boot + Vue的招聘平台设计与实现

前言 &#x1f497;博主介绍&#xff1a;✌专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f447;&#x1f3fb; 2024年Java精品实战案例《100套》 &#x1f345;文末获取源码联系&#x1f345; &#x1f31…

服务消费微服务

文章目录 1.示意图2.环境搭建1.创建会员消费微服务模块2.删除不必要的两个文件3.检查父子模块的pom.xml文件1.子模块2.父模块 4.pom.xml 添加依赖&#xff08;刷新&#xff09;5.application.yml 配置监听端口和服务名6.com/sun/springcloud/MemberConsumerApplication.java 创…

【windows】安装 Tomcat 及配置环境变量

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

【学习】Python库addict,使用Dict 的类

from addict import Dict 这行代码导入了 Dict 类&#xff0c;它来自于 addict 模块。在这个上下文中&#xff0c;addict 是一个 Python 库&#xff0c;它提供了一个名为 Dict 的类&#xff0c;用于创建可通过属性访问的字典对象。 使用 addict 中的 Dict 类可以方便地创建字典…

【大模型】VS Code(Visual Studio Code)上安装的扩展插件用不了,设置VS Code工作区信任

文章目录 一、找到【管理工作区信任】二、页面显示处于限制模式&#xff0c;改为【信任】三、测试四、总结 【运行环境】win 11 相关文章&#xff1a; 【大模型】直接在VS Code(Visual Studio Code)上安装CodeGeeX插件的过程 【问题】之前在 VS Code上安装 CodeGeeX 插件后&…

Qt创建窗口选择的三个父类介绍 ----- QWidget、QMainWindow、QDialog

QWidget类 简介 QWidget是Qt中所有用户界面元素的基类。它提供了窗口的基本功能&#xff0c;并允许用户自定义窗口的外观和行为。QWidget可以包含其他QWidget子类的子窗口&#xff0c;从而实现复杂的用户界面。 特性 提供了窗口的基本功能&#xff0c;包括绘制、事件处理、…

Linux命令学习入门

文章目录 登录注销关机重启Vim编辑器快捷键文件目录类打包、解包、压缩和解压指令输出重定向>和追加>>指令时间日期类搜索查找类用户管理文件所有者所在组权限管理变更权限crond任务时间调度crond相关指令&#xff1a;特殊符号说明&#xff1a; at定时任务磁盘分区磁盘…

作用域闭包

一、闭包的概念 当函数可以记住并访问所在的词法作用域时&#xff0c;就产生了闭包&#xff0c;即使函数时在当前词法作用域之外执行。 下面用一些代码来解释这个定义。 function foo(){var a 2;function bar() {console.log(a);}bar(); }foo();这段代码看起来和嵌套作用域…

记录三菱:Works2-FB块

创建一个FB块&#xff0c;启保停&#xff0c;定义输入输出引脚&#xff0c;注意这里的数据类型是Bit 打开主程序&#xff0c;将FB块拖出来 启保停&#xff1a;加入时间设定&#xff0c;时间显示倒着

nginx集群部署访问不了怎么解决

如果你的Nginx集群部署无法访问&#xff0c;可能有多种原因导致&#xff0c;以下是一些常见的解决方法&#xff1a; 检查网络连接&#xff1a;确保服务器之间的网络连接是正常的&#xff0c;可以通过ping命令或telnet命令检查服务器之间的网络连通性。 检查防火墙设置&#xff…

docker基础(四)之docker run(第一弹)

目录 概述语法命令选项用法速查OPTIONS说明&#xff1a;-a stdinSTDIN/STDOUT/STDERR指的是什么&#xff1f;举例将容器的标准输入、标准输出、标准错误重定向到本地文件将容器的标准流重定向到设备将容器的标准流重定向到网络 -d示例应用场景返回的容器ID作用怎么通过容器ID查…

基于C/C++的easyx实现贪吃蛇游戏

文章目录&#xff1a; 一&#xff1a;运行效果 1.演示 2.思路和功能 二&#xff1a;代码 文件架构 Demo 必备知识&#xff1a;基于C/C的easyx图形库教程 一&#xff1a;运行效果 1.演示 效果图◕‿◕✌✌✌ 基于C/C的easyx实现贪吃蛇游戏运行演示 参考&#xff1a;【C语…

5.5.5、【AI技术新纪元:Spring AI解码】使用PGvector设置向量存储及进行相似性搜索

使用PGvector设置向量存储及进行相似性搜索 本节指导您如何设置PGvector VectorStore来存储文档嵌入并执行相似性搜索。 PGvector是一个开源的PostgreSQL扩展,能够支持存储和搜索机器学习生成的嵌入向量,提供查找精确和近似最近邻的功能。它设计得与PostgreSQL的其他特性无…

Oracle:ORA-01830错误-更改数据库时间格式

1,先把报错SQL语句拿出来执行&#xff0c;看看是不是报的这个错 ORA-01830: 日期格式图片在转换整个输入字符串之前结束 2&#xff0c;然后查看默认日期格式是不是“YYYY-MM-DD HH24:MI:SS”&#xff08;正确格式&#xff09;。&#xff1b; 执行&#xff1a; SELECT * FRO…

citus的快速开始

准备 dockercitus最新版本&#xff08;docker pull citusdata/citus&#xff09; docker网络 docker network create --subnet172.72.9.0/24 citus-test docker network ls启动citus服务 启动协调节点 docker run -dit --name citus-cod -p 5433:5432 -e POSTGRES_PASSWOR…

Transformer的前世今生 day06(Self-Attention和RNN、LSTM的区别)

Self-Attention和RNN、LSTM的区别 RNN的缺点&#xff1a;无法做长序列&#xff0c;当输入很长时&#xff0c;最后面的输出很难参考前面的输入&#xff0c;即长序列会缺失上文信息&#xff0c;如下&#xff1a; 可能一段话超过50个字&#xff0c;输出效果就会很差了 LSTM通过忘…