Vue 项目脚手架结构介绍

昨天,撰写了一篇文章,介绍如何 0 基础入门 Vue,算是讲清楚了学习 Vue 的路线图,今天,继续来介绍一些具体的东西。

一、开发工具

开发 Vue 的项目,我推荐使用 VS Code,有非常多的插件支持基于 Vue 的开发,感觉社区很庞大,提供的完美的支持。

如果你仔细观察,你会发现在生成的脚手架项目里,会有一个 .vscode 的文件夹,里面有个文件叫 extensions.json 里面包含了项目脚手架推荐开发者安装的插件:

{"recommendations": ["Vue.volar","Vue.vscode-typescript-vue-plugin","dbaeumer.vscode-eslint","esbenp.prettier-vscode"]
}

除了上面的,我还有一些推荐的插件,可以帮助你快速打造一个良好的开发环境:

  • Auto Close Tag 插入一个组件的 tag,就会自动插入关闭的 tag;
  • Auto Rename Tag 修改一个 tag 的名字,就会自动修改配对的那个 tag;
  • DotENV 项目使用的环境配置文件,提供了配置文件的语法高亮;
  • ESLint 将 eslint 的结果集成到编辑器,可以随时划红线的那种;
  • GitHub Copilot Chat 无敌,当你不会写的时候,直接问,能得到答案,收费 10美元,但是值得,或者像我一样成为开源作者。HexoPress,请 star 谢谢。
  • Iconify IntelliSense 将用到的 Icon 在代码里画出来;
  • Material Icon Theme 给 VS Code 的目录树显示文件图标,很好看;
  • Prettier,保存的时候代码自动格式化,润物细无声;
  • Stylelint,CSS 代码的专业 Lint;
  • TypeScript Vue Plugin (Volar),对 TypeScript 的支持;
  • Vue Language Features (Volar),对 Vue 扩展名的文件,提供良好的支持;
  • VSCode Neovim,如果你喜欢用 vim 的话,不能错过这个插件,是我用过最像 vim 的环境了,需要一个真正的 neovim 才能正常工作;
  • GitLens,主要是对 Git 的功能的一些支持。

上面列举的单子,也包括了配置文件里的几个。

二、版本控制

开启一个项目,第一件事情需要使用版本控制,git。将自己的每个修改都记录下来。在 IDE 里还能展示删除和变更的代码。

项目脚手架已经自动创建了 .gitignore 文件,自动忽略一些临时文件以及缓存文件。

三、Vue 脚手架

在这里插入图片描述

上面的图,就是使用 npm create vue@latest 命令生成的脚手架,我们来看看这个脚手架的目录结构:

charles@TCMBPM1➜  my-first-vue-app tree --gitignore .
.
├── README.md
├── env.d.ts
├── index.html
├── package.json
├── public
│   └── favicon.ico
├── src
│   ├── App.vue
│   ├── assets
│   ├── components
│   │   ├── HelloWorld.vue
│   │   ├── TheWelcome.vue
│   │   ├── WelcomeItem.vue
│   │   ├── __tests__
│   │   └── icons
│   ├── main.ts
│   ├── router
│   │   └── index.ts
│   ├── stores
│   │   └── counter.ts
│   └── views
│       ├── AboutView.vue
│       └── HomeView.vue
├── tsconfig.app.json
├── tsconfig.json
├── tsconfig.node.json
├── tsconfig.vitest.json
├── vite.config.ts
├── vitest.config.ts
└── yarn.lock10 directories, 30 files

我们可以看到主要的代码在 /src 目录里面。入口文件是 index.html 文件,里面会载入 main.ts 文件,一个 Vue 的 App 就是从主页,加载脚本后开始运行的。根据我们脚手架的各种选择,这个项目已经安装了 Vue Router,Pinia 状态管理,并示范性的提供了一个状态,就是 counter.ts

从截图里,我们可以看到 main.ts 的代码,主要就是创建一个 App 组件的实例,然后加载到 #app 这个 Dom 节点上,整个程序就算是 run 起来了。

<script setup lang="ts">
import { RouterLink, RouterView } from 'vue-router'
import HelloWorld from './components/HelloWorld.vue'
</script><template><header><img alt="Vue logo" class="logo" src="@/assets/logo.svg" width="125" height="125" /><div class="wrapper"><HelloWorld msg="You did it!" /><nav><RouterLink to="/">Home</RouterLink><RouterLink to="/about">About</RouterLink></nav></div></header><RouterView />
</template>

这个是 App.vue 的内容,我省去了 style 部分。这是一个 Vue 里的经典 SFC,单文件组件。这里用到了 Vue Router 的两个组件,也即 RouterLinkRouterView,通过点选两个 Link,可将 RouterView 的内容,切换成 Home 组件,或者是 About 组件。这也就是 Vue Router 的原理了。

然后,再逐个去看 Home 和 About 的内容,这两个是两个特殊的组件,称为视图,提供了页面的布局。里面的部分内容又被封装成了更小的独立组件,比如 TheWelcome,HellowWorld。这里展示了 Vue App 的组织形式。也就是鼓励开发者,将自己的功能,按照功能,或者按照页面区域,拆解成小的组件,然后组合成一个大的界面称为 View,供 Router 系统去调用和切换。

小的可以复用的独立功能组件,叫做 Component,大的覆盖整个屏幕的界面组件叫 View。多个组件共享状态,使用 Pinia 组件,在项目里命名为 Store。通过脚手架的学习,可以将在《深度指南》中学习的知识都串起来,组织成一个项目。

总结

本文介绍了开发 Vue 项目的开发环境设置,以及使用 Vue 脚手架构建的项目框架的结构和各个部分的原理。

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

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

相关文章

【前端素材】推荐优质后台管理系统Uena平台模板(附源码)

一、需求分析 后台管理系统&#xff08;或称作管理后台、管理系统、后台管理平台&#xff09;是一种专门用于管理网站、应用程序或系统后台运营的软件系统。它通常由一系列功能模块组成&#xff0c;为管理员提供了管理、监控和控制网站或应用程序的各个方面的工具和界面。以下…

从零开始手写mmo游戏从框架到爆炸(二十三)— 装备系统一

导航&#xff1a;从零开始手写mmo游戏从框架到爆炸&#xff08;零&#xff09;—— 导航-CSDN博客 目录 装备模板 装备模型 装备模板配置 加载装备模板 下一步&#xff0c;就是要考虑经验、金币、和装备掉落的问题。经验金币都好说&#xff0c;装备系统是目前需要考虑的问…

LeetCode_Java_动态规划系列(1)(题目+思路+代码)

目录 斐波那契类型 746.使用最小花费爬楼梯 矩阵 120. 三角形最小路径和 斐波那契类型 746.使用最小花费爬楼梯 给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。…

Pyglet控件的批处理参数batch和分组参数group简析

先来复习一下之前写的两个例程&#xff1a; 1. 绘制网格线 import pygletwindow pyglet.window.Window(800, 600) color (255, 255, 255, 255) # 白色 lines []for y in range(0, window.height, 40):lines.append(pyglet.shapes.Line(0, y, window.width, y, colorcolo…

【AIGC大模型】跑通wonder3D (windows)

这两天看了AI大神李某舟被封杀&#xff0c;课程被下架的新闻&#xff0c;TU商 认为&#xff1a;现在这种玩概念、徒具高大上外表却无实质内容的东西太多了&#xff0c;已经形成一种趋势和风潮&#xff0c;各行各业各圈层都在做大做强这种势&#xff0c;对了&#xff0c;这种行为…

C++ 之LeetCode刷题记录(三十四)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅。 目标&#xff1a;执行用时击败90%以上使用 C 的用户。 12. 整数转罗马数字 罗马数字包含以下七种字符&#xff1a; I&#xff0c; V&#xf…

力扣382.链表随机节点

Problem: 382. 链表随机节点 文章目录 题目描述思路复杂度Code 题目描述 思路 由水塘抽样易得&#xff0c;当遇到i个元素&#xff0c;有 1 / i 1/i 1/i的概率选择该元素&#xff1b;则在实际操作中我们定义一个下标i从1开始遍历每次判断rand() % i 0&#xff08;该操作就是判断…

空指针和Void指针的基本概念和用法

前言&#xff1a;本文只是限于说明空指针与void指针的基本性质和用法&#xff0c;关于更深层次的用法&#xff0c;则不介绍&#xff0c;因为本人自己还没有搞懂&#xff01;&#xff01;&#xff01; 1&#xff1a;空指针 1.1空指针的基本定义 定义:在C语言中&#xff0c;如…

beego代理前端web的bug

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、beego代理前端web的bug总结 一、beego代理前端web的bug *报错&#xff0c;为web压缩包index.html里面的注释被错误解析&#xff0c;删掉就行 2024/02/22 10:2…

MySQL数据库进阶第五篇(锁)

文章目录 一、锁的概述二、全局锁三、表级锁四、元数据锁&#xff08;meta data lock, MDL&#xff09;五、意向锁六、行级锁七、行锁&#xff08;Record Lock&#xff09;八、间隙锁&#xff08;Gap Lock&#xff09;九、临键锁&#xff08;Next-Key Lock&#xff09;十、锁总…

【GameFramework框架内置模块】4、内置模块之调试器(Debugger)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址QQ群&#xff1a;398291828 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录&#xff1a;…

【原创教程】汇川H5U入门教案

一、软元件介绍 1、位软元件 PLC编程支持位软元件,位软元件具体类型、范围、点数和相关说明如下表所示: 2、字软元件 ● 掉电保持范围不可更改。 ● 字软元件作为整数使用时,根据指令参数,作为16位或32位数据使用。作为16位数据使用时,占用1个软元件;作为32位数据使…