Vue3教程 - 3 HelloWorld

news2024/11/26 16:33:16

更好的阅读体验:点这里 ( www.foooor.com

3 HelloWorld

下面来正式进入 Vue3 的学习。先写一个 HelloWorld。

3.1 关于Vite

Vite 是一个新型前端构建工具。

在 Vue2 中,我们主要使用 vue-cli 来构建我们的前端项目,在 Vue3 中,我们将使用 Vite 来构建项目,它由Vue.js的作者尤雨溪开发。在开发 Vue 项目的时候,Vite 可以帮助我们创建项目,并对项目进行编译,提供开发服务器的支持,在本地启动前端服务,使用浏览器进行访问;同时提供高效的模块热替换(HMR)机制,使得在开发过程中,代码的改动可以立即反映在浏览器中,而无需手动刷新页面,提高开发效率和体验。

Vite 内置支持现代 JavaScript 特性,如 ES6/ES7+ 语法、TypeScript 等,使得开发者可以使用最新的语言特性而无需担心浏览器兼容性问题。

在将项目打包部署到生产环境中,Vite 使用 Rollup 进行打包和优化,生成高效的静态资源,减少打包体积,并支持代码分割,按需加载模块,提高加载速度。

所以后面将使用 Vite 来构建项目。

3.2 创建Vue项目

下面来创建 Vue3 项目。

首先在命令行进入到一个目录,这个目录作为项目所在的目录,待会在这个目录下创建项目。

然后使用如下命令创建基于 Vite 的构建设置:

# 使用npm创建
npm create vue@latest

# 或者使用yarn创建
yarn create vue@latest

执行后,会出现提示信息,填写和设置项目的相关配置,可以通过 tab 键或 左右键 切换 No / Yes

# 填写项目名称
✔ Project name: hello-vue
# 是否使用TypeScript,Vue3拥抱TS了,所以选择Yes
✔ Add TypeScript? … No / Yes
# 添加JSX,不用,选择No
✔ Add JSX Support? … No / Yes
# 添加路由,现在没必要,后面再学习,选择No
✔ Add Vue Router for Single Page Application development? … No / Yes
# 添加Pinia状态管理,后面再学习,选择No
✔ Add Pinia for state management? … No / Yes
# 添加单元测试,选择No
✔ Add Vitest for Unit Testing? … No / Yes
# 添加端到端测试,选择No
✔ Add an End-to-End Testing Solution? › No
# 添加语法检查,我们是学习,语法检查有很多限制,选择No,实际开发选择Yes
✔ Add ESLint for code quality? … No / Yes
# 添加开发者工具扩展,选择No,也可以选择Yes
✔ Add Vue DevTools 7 extension for debugging? (experimental) … No / Yes

上面这些选择都是可配置的,可以随时在项目的开发过程中更改它们。

3.3 运行项目

项目创建好了,可以使用 VSCode 打开项目。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ctrl + 1左边的键 可以打开 VSCode 的命令行,首先运行如下命令安装项目依赖:

npm install

然后运行如下命令启动项目:

npm run dev

上面的命令是在项目的 package.json 中的 scripts下配置的:

{
  // ...其他
  "scripts": {
    "dev": "vite",   // npm run dev 开发环境,启动项目
    "build": "run-p type-check \"build-only {@}\" --",
    "preview": "vite preview",
    "build-only": "vite build",
    "type-check": "vue-tsc --build --force"
  },
  // ...其他
}

运行后,显示如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

就可以在浏览器访问 http://localhost:5173/ 访问项目了。

访问项目显示如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

好像还不算 HelloWorld,只是跑起来项目,不急,慢慢推进。

下面来介绍一下 Vue3 的项目结构,以及项目为什么能显示上面的内容。

3.4 项目结构

下面介绍一下 Vue3 项目的结构:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

刚才显示的首页就是 index.html 的内容:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <link rel="icon" href="/favicon.ico">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vite App</title>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/main.ts"></script>
  </body>
</html>

也没看到刚才首页显示的一堆内容啊,其实 <div id="app"></div> 这个空的div元素,在Vue应用中被用作Vue实例的挂载点。Vue 会在这个div内部动态渲染出组件的模板。而这些工作就是通过 /src/main.ts 文件来完成的,它负责创建Vue实例并挂载到#app元素上。

查看 main.ts ,可以看到创建应用,并挂载到 id="app" 的 div 上:

import './assets/main.css'  // 引入css样式

import { createApp } from 'vue'    // 从vue引入引入一个创建app的方法
import App from './App.vue'    // 引入App组件

createApp(App).mount('#app')   // 以App组件为根组件,创建一个应用,挂载到id为app的元素上

所以刚才项目启动的时候,显示的内容都在 App 组件中,只不过在 App 组件中又引入了其他的组件,这些内容都在 src 目录下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在 Vue 中,页面显示的内容都是由组件构成,组件都是以 *.vue 结尾的文件,在 *.vue 文件中,可以编写页面结构、样式、脚本。

3.5 HelloWorld

为了从0开始编写一个 HelloWorld,我们将 src 目录下的内容删除,只保留 main.ts 内容如下:

import { createApp } from 'vue'
import App from './App.vue'

createApp(App).mount('#app')		// 创建应用并挂载

然后将 App.vue 中的内容全部删除,重新编写,内容如下:

<!-- 结构 -->
<template>
  <div class="my-app">
    {{ msg }}
  </div>
</template>

<!-- 脚本 -->
<script lang="ts">
  export default {
    name: "App",
    setup() {
      let msg = "Hello world";

      return {"msg": msg}
      // return {msg}  // 对象可以简写
    }
  }
</script>

<!-- 样式,scoped表示样式只对当前组件生效-->
<style scoped>
  .my-app {
    color: red;
    font-size: 18px;
  }
</style>

在 Vue 中,*.vue 组件文件的内容主要分为三部分:<template><script><style> ,分别对应组件的模板结构、脚本和样式。

下面来说说上面的三个部分:

  1. <template>

<template> 用来定义 HTML 模板结构,当然会有一些 Vue 相关的指令。在 Vue2 中 <template> 中只能有一个根元素,在 Vue3 中没有这个要求了。在上面的代码中,使用插值表达式 {{ msg }} 读取 msg 的值,这 msg 的值哪来的?是下面脚本代码返回的。

  1. <script>

<script> 用来定义组件的脚本,如JavaScript。这些脚本可以在网页加载时执行,也可以在用户与页面交互时执行。

在上面脚本中使用 export default 导出组件,在组件中定义了名称setup 选项, setup 是一个函数,在函数中返回的是一个对象,上面 HTML 中使用差值表达式读取的就是这里返回的对象的值,通过属性 "msg" 读取。

  1. <style>

<style> 用来定义组件样式,没什么可说的,编写 CSS 样式就可以,scoped 表示样式只对当前组件生效。

当然 Vue 还支持 CSS 预处理器,如 Sass、Less 等,不过需要安装对应的 loader 和依赖包。


重新使用 npm run dev 运行项目,然后访问 http://localhost:5173 显示如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

运行后,也就是将 App.vue 组件中的内容渲染到 index.html 中的 <div id="app"></div> 中。


此时项目结构:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.6 安装浏览器插件

在进一步学习之前,先介绍一下 Vue 浏览器的插件。

在开发 Vue 的时候,我们可以安装一个 Vue 的浏览器插件 Vue.js devtools,这样可以看到 Vue 相关的组件和数据信息,可以更方便的支持我们开发。

1 在线安装

如果使用的是 Chrome,这种安装方式你需要科学上网才能安装插件,在浏览器的 chrome应用商店 搜索 vue,然后安装即可:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果使用 Fixfox 浏览器就不用科学上网了,直接在扩展中搜索 vue 或者 Vue.js devtools,都可以搜索到 Vue.js devtools,直接安装就可以。

2 离线安装

如果想使用 Chrome,又没有科学上网的条件,百度搜索 极简插件 ,网址:https://chrome.zzzmh.cn/ ,在其中搜索 vue

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

将插件下载下来,是一个 zip 压缩包,解压压缩包,里面有一个 .crx 文件。

然后打开浏览器的扩展程序页面,将开发者模式打开:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后将 .crx 文件拖入到 扩展程序页面进行安装,提示拖放已安装,然后确认就可以了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3 使用

打开浏览器的开发者工具,就可以看到 Vue 插件了(如果没有,可能是被隐藏在箭头中了)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通过插件可以看到 Vue 中组件的数据和函数,在后面的开发中,可以帮助我们更好的查看 Vue 相关的信息。

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

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

相关文章

进程的优先级详解(1)(在Linux中观察进程优先级,优先级的概念,优先级范围,进程的切换和切换的过程和理解)

文章目录 进程的优先级什么是进程的优先级&#xff1f;进程的优先级的划分1. 优先级的级别划分2. 动态与静态优先级 那么为什么要有优先级呢&#xff1f;区分 那么是怎么确定优先级的呢&#xff1f; Linux中的优先级Linux中的进程优先级补充 Linux优先级的范围进程的切换切换过…

四款pdf转图片在线转换免费工具推荐:

大家好&#xff01;今天我来给大家推荐几款PDF转图片的在线转换工具&#xff0c;让你轻松将PDF文件转换成图片&#xff0c;无论是工作还是学习&#xff0c;都能派上大用场。下面&#xff0c;让我们来看看这几款工具吧&#xff01; 一、福昕转换器 直通车&#xff08;粘贴到浏览…

多线程(二):创建线程关键属性终止线程

目录 1、run & start 2、Thread类常见的属性和方法 2.1 构造方法 2.2 属性 3、后台进程 & 前台进程 4、后台线程的判断和设定——isDaemon & setDaemon 5、线程是否存活——isAlive 6、终止一个线程 6.1 lambda变量捕获 6.2 currentThread & isInterr…

atomic physics

​​​​​​​ https://www.youtube.com/watch?v6F8Wjblb0vE&listPLX2gX-ftPVXVqAS_q3OfJDmPn8-EQld_r&index18

Python 工具库每日推荐 【logging】

文章目录 引言Python日志记录的重要性今日推荐:logging模块主要功能:使用场景:快速上手基本使用代码解释实际应用案例案例:文件日志记录器案例分析高级特性日志过滤器上下文管理器扩展阅读与资源优缺点分析优点:缺点:总结【 已更新完 TypeScript 设计模式 专栏,感兴趣可…

钢管X射线 焊缝缺陷检测数据集,3408张x射线焊缝缺陷图像,也有更多的图像数据集,可以进行扩充 目标检测任务。可制作上位机软件。

钢管X射线 焊缝缺陷检测数据集&#xff0c;3408张x射线焊缝缺陷图像&#xff0c;也有更多的图像数据集&#xff0c;可以进行扩充 目标检测任务。可制作上位机软件。 B lowhole Undercut Broken arc Crack Overlap Slag inclusion L ack of fusion Hollow bead 钢管X射线焊缝缺陷…

正则表达式 | Python、Julia 和 Shell 语法详解

正则表达式在网页爬虫、脚本编写等众多任务中都有重要的应用。为了系统梳理其语法&#xff0c;以及 Python、Julia 和 Shell 中与正则表达式相关的工具&#xff0c;本篇将进行详细介绍。 相关学习资源&#xff1a;编程胶囊。 基础语法 通用语法 在大多数支持正则表达式的语…

Github 2024-10-11 Java开源项目日报 Top9

根据Github Trendings的统计,今日(2024-10-11统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目9TypeScript项目1Vue项目1C++项目1JeecgBoot 企业级低代码开发平台 创建周期:2062 天开发语言:Java, Vue协议类型:Apache License 2.…

除了Devops、DevSecOps和TestOps ,您还了解ITOps吗?

大家可能听说过Devops、DevSecOps、TestOps &#xff0c;但是对于ITOps这个词儿可能会感到陌生&#xff0c;今天就带大家来了解一下什么事ITOps ITOps 信息技术运营 — 通常称为 IT 运营&#xff0c;或是 ITOps &#xff0c;是实施、管理、 交付和支持 IT 服务的过程&#x…

Odoo:免费开源的装备制造行业信息化解决方案

概述 满足装备制造行业MTO、ETO、MTS等多种业务模式&#xff0c;从个性化的订单选配、多层级计划管理模式、复杂的物料齐套规划、频繁的设计变更管理、精细化制造执行和用料管控、精准的售后服务等行业特性&#xff0c;提供一站式整体解决方案。 行业趋势洞察 个性化定制 洞察…

FPGA中的亚稳态

一、建立时间和保持时间 对于数字系统而言&#xff0c;建立时间&#xff08;setup time&#xff0c;Tsu&#xff09;和保持时间&#xff08;hold time&#xff0c;Th&#xff09;是数字电路时序的基础。数字电路系统的稳定性&#xff0c;基本取决于时序是否满足建立时间和保持时…

详细版的Jsoncpp的使用,包括在VS环境下配置

目录 准备环境VS 环境下配置编译使用 基础概述Json 数组Json 对象 Jsoncpp 的使用ValueFastWriterReader示例 如果想要 Json 部署在 Linux 上 参考: https://blog.csdn.net/2303_76953932/article/details/142703683?spm1001.2014.3001.5502 C中原生不支持 Json&#xff0c;所…

ClickHouse 数据保护指南:从备份到迁移的全流程攻略

一、背景 运行3年的clickhouse需要迁移机房&#xff0c;迁移单库单表的140亿条的数据。采用clickhouse-backup 的方式进行备份迁移&#xff0c;打包备份&#xff0c;再加上数据拷贝&#xff0c;数据恢复 一共花费30分钟。数据在一定量级&#xff0c;避免使用SQL 导入导出的方式…

配置 Visual studio 2022 Connector C++ 8.0环境 连接MySQL

Connector C 8.0 环境配置 1. 配置 Connector C 头文件地址 &#xff08;1&#xff09; 在Mysql的安装路径中找到 MySQL\Connector C 8.0\include\jdbc 例如 &#xff1a; C:\Program Files\MySQL\Connector C 8.0\include\jdbc &#xff08;2&#xff09; 打开VS2022&…

如何用好 CloudFlare 的速率限制防御攻击

最近也不知道咋回事儿,群里好多站长都反映被CC 攻击了。有人说依旧是 PCDN 干的,但明月感觉不像,因为有几个站长被 CC 攻击都是各种动态请求(这里的动态请求指的是.php 文件的请求)。经常被攻击的站长们都知道,WordPress /Typecho 这类动态博客系统最怕的就是这种动态请求…

塔吊识别数据集 yolo格式 共5076张图片 已划分好训练验证 txt格式 yolo可直接使用

塔吊识别数据集 yolo格式 共5076张图片 已划分好训练验证 txt格式 yolo可直接使用。 类别&#xff1a;塔吊(Tower-crane) 一种 训练数据已划分&#xff0c;配置文件稍做路径改动即可训练。 训练集&#xff1a; 4724 &#xff08;正面3224 负面1500&#xff09; 验证集&#xf…

【父子线程传值TransmittableThreadLocal使用踩坑-及相关知识拓展】

文章目录 一.业务背景二.TransmittableThreadLocal是什么&#xff1f;三.问题复现1.定义注解DigitalAngel2.定义切面3.TransmittableThreadLocal相关4.线程池配置信息5.Controller6.Service7.测试结果8.问题分析9 解决办法及代码改造10.最终测试&#xff1a; 四.与 ThreadLocal…

【大模型实战篇】创建有效的大模型提示词Prompt(提示词工程)

1. 背景介绍 随着chatgpt、llama、chatglm、claude AI等一系列生成式 AI 工具的普及&#xff0c;很明显能感受到&#xff0c;个人的生产力得到了大幅地提升。这些生成式算法模型能够帮助我们开发新想法、轻松获取信息&#xff0c;并简化各种个人和职业任务。个人在日常生活、工…

问卷调查毕设计算机毕业设计投票系统SpringBootSSM框架

目录 一、引言‌ ‌二、需求分析‌ 用户角色‌&#xff1a; ‌功能需求‌&#xff1a; ‌非功能需求‌&#xff1a; ‌三、系统设计‌ ‌技术选型‌&#xff1a; ‌数据库设计‌&#xff1a; ‌界面设计‌&#xff1a; ‌四、实现步骤‌ ‌后端实现‌&#xff1a; …

Python快速编程小案例——猜数字

提示&#xff1a;&#xff08;个人学习&#xff09;&#xff0c;案例来自工业和信息化“十三五”人才培养规划教材&#xff0c;《Python快速编程入门》第2版&#xff0c;黑马程序员◎编著 猜数游戏是一种经典的密码破译类益智游戏&#xff0c;通常由两个人参与。一个人在心中设…