「从零开始的 Vue 3 系列」:第十三章——架构一个Vue项目(简单版)

前言
本系列将从零开始,系统性地介绍 Vue 3 的常用 API,逐步深入每个核心概念与功能模块。通过详尽的讲解与实战演示,帮助大家掌握 Vue 3 的基础与进阶知识,最终具备独立搭建完整 Vue 3 项目的能力。

从零开始使用 Vite 和 Vue 3 创建一个项目框架,过程相对简单,Vite 作为构建工具提供了快速的开发环境和极高的性能,而 Vue 3 则是现代前端开发的热门框架。下面是详细的步骤,从安装环境到构建基础框架的完整流程。

  1. 环境准备
    确保你的开发环境中已经安装了以下工具:
    Node.js:建议使用 LTS 版本,下载地址 Node.js。
    npm 或 yarn:Vite 支持这两种包管理器,任选其一。
    验证 Node.js 是否已经安装:
node -v
npm -v  # 或 yarn -v
  1. 使用 Vite 创建 Vue 3 项目
# 使用 npm 创建项目
npm create vite@latest my-vue-app --template vue# 或使用 yarn 创建项目
yarn create vite my-vue-app --template vue
  1. 安装依赖并运行项目
cd my-vue-app
npm install  # 或 yarn

4.项目目录结构
项目的基础目录结构如下:

my-vue-app/
├── index.html
├── package.json
├── public/
├── src/
│   ├── assets/
│   ├── components/
│   ├── App.vue
│   ├── main.js
├── vite.config.js

index.html:项目的入口 HTML 文件。
src/main.js:项目的入口 JS 文件,负责创建 Vue 实例并挂载到 DOM。
src/App.vue:主组件文件,所有页面组件的父组件。
vite.config.js:Vite 配置文件。

  1. 设置路由(Vue Router)
    Vue 3 项目一般都会使用 Vue Router 来处理多页面应用。首先安装 Vue Router:
npm install vue-router@4

然后在 src 目录下创建一个 router 文件夹,并在其中创建 index.js 文件,用于配置路由:

// src/router/index.js
import { createRouter, createWebHistory } from 'vue-router';
import Home from '../components/Home.vue';
import About from '../components/About.vue';const routes = [{path: '/',name: 'Home',component: Home},{path: '/about',name: 'About',component: About}
];const router = createRouter({history: createWebHistory(),routes
});export default router;

在 main.js 中引入并使用路由:

// src/main.js
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';createApp(App).use(router).mount('#app');

如果需要配置动态路由或按钮权限,详情请参考第九章与第十章:
「从零开始的 Vue 3 系列」:第十章——深入理解自定义指令
「从零开始的 Vue 3 系列」:第九章——vue3中实‘动态路由‘与“权限管理“
6. 配置状态管理(Pinia)
首先安装 Pinia:

npm install pinia

在 src 目录下创建一个 store 文件夹,并在其中创建一个 index.js 文件:

// src/store/index.js
import { defineStore } from 'pinia';export const useMainStore = defineStore('main', {state: () => ({count: 0}),actions: {increment() {this.count++;}}
});

在 main.js 中引入并使用 Pinia:

// src/main.js
import { createApp } from 'vue';
import App from './App.vue';
import { createPinia } from 'pinia';
import router from './router';const app = createApp(App);app.use(createPinia());
app.use(router);app.mount('#app');

具体更多使用请参考第五章:
「从零开始的 Vue3 系列」:第五章——拥抱 Pinia - Vuex 的强劲对手解析与使用
7. 配置全局样式
你可以在 src/assets 目录下创建一个 styles.css 文件,并在 main.js 中引入它:

/* src/assets/styles.css */
body {font-family: Arial, sans-serif;background-color: #f0f0f0;
}

在 main.js 中引入这个样式文件:

import './assets/styles.css';
  1. 打包优化:你可以在 vite.config.js 文件中配置打包的相关内容,比如压缩、资源优化等。
// vite.config.js
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';export default defineConfig({plugins: [vue()],build: {rollupOptions: {output: {manualChunks(id) {if (id.includes('node_modules')) {return id.toString().split('node_modules/')[1].split('/')[0].toString();}}}}}
});
  1. 组件开发:接下来你可以创建自己的 Vue 组件,将它们放在 src/components 目录下。每个组件都可以是一个 .vue 文件,例如 Home.vue 和 About.vue:
<!-- src/components/Home.vue -->
<template><div><h1>Home Page</h1><p>Welcome to the home page!</p></div>
</template><script>
export default {name: 'Home'
};
</script>
<!-- src/components/About.vue -->
<template><div><h1>About Page</h1><p>This is the about page.</p></div>
</template><script>
export default {name: 'About'
};
</script>

更多组件的使用请参考:
[从零开始的 Vue3 系列]:第四章——Vue3 中常用组件通信全解析
10. 项目构建与发布
当开发完成后,你可以使用以下命令进行项目的构建和发布:

npm run build  # 或 yarn build

这将会在项目根目录下生成一个 dist 文件夹,里面包含了打包后的生产环境代码。你可以将这个目录部署到任何静态资源服务器(如 Nginx、Apache 或 Vercel 等)。
更多部署使用请参考:
「从零开始的 Vue 3 系列」:第十四章——项目部署到服务器流程(简单版)

总结

通过 Vite 和 Vue 3 构建一个现代化的前端框架非常简单且高效。以上步骤从项目初始化、依赖配置、组件开发到项目打包,完整地介绍了如何从零开始创建一个 Vue 3 项目。

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

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

相关文章

Mysql(七) --- 索引

文章目录 前言1.简介1.1.索引是什么&#xff1f;1.2.为什么使用索引? 2.索引应该使用什么数据结构&#xff1f;2.1.Hash2.2.二叉搜索树2.3.N叉树2.4.B树2.4.1. 简介2.4.2. B树的特点2.4.3. B树和B树的对比 3.Mysql中的页3.1.为什么要使用页3.2.页文件头和页文件尾3.3.页主体3.…

设置故障恢复机制

在分布式系统和实时数据处理场景中&#xff0c;设置故障恢复机制是确保系统稳定性和数据一致性的关键。 对于使用Flink CDC实时同步MySQL数据的场景&#xff0c;是一些设置故障恢复机制的建议&#xff1a; 1. Flink Checkpointing&#xff08;检查点&#xff09; 启用Checkp…

小新学习Docker之Docker--harbor私有仓库部署与管理

目录 一、Harbor简介 1.1、Harbor概述 1.2、Harbor的特性 1.3、Harbor的构成 二、Harbor构建Docker私有仓库 2.1、部署Harbor服务 2.2、启动 Harbor 2.3、查看 Harbor 启动镜像&#xff0c;检查harbor是否安装成功 2.4、创建一个新项目 2.5、非本地主机进行下载镜像 …

STM32学习--4-1 OLED显示屏

接线图 OLED.c #include "stm32f10x.h" #include "OLED_Font.h"/*引脚配置*/ #define OLED_W_SCL(x) GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(x)) #define OLED_W_SDA(x) GPIO_WriteBit(GPIOB, GPIO_Pin_9, (BitAction)(x))/*引脚初始化*/ void …

软件安全漏洞挖掘: 基础知识和概念

1. 软件漏洞原理和漏洞检测方法 文章目录 1. 软件漏洞原理和漏洞检测方法1. 漏洞披露2. 漏洞定义和分类1. 漏洞的定义2. 漏洞的分类3. 漏洞检测方法常见方法1. 程序切片2. 形式化方法1. 符号执行3. 污点分析污点分析步骤/流程*污点分析流程的详细介绍1. 识别source和sink点2. 污…

Pycharm通过ssh远程docker容器搭建开发环境

本地pycharm通过ssh方式远程连接服务器&#xff08;Ubuntu&#xff09;上的docker容器&#xff0c;搭建开发环境。实现功能&#xff1a;将环境依赖打包成docker镜像&#xff0c;并在远程服务器中启动容器&#xff08;启动时做好端口映射和文件夹挂载&#xff09;&#xff0c;通…

使用vscode导入库失败解决方法

导入库失败原因 在使用vscode写python代码时&#xff0c;有时会遇见导入库失败的情况&#xff0c;如下图&#xff1a;无法解析导入“xxxxx” 或者 运行时报错&#xff1a;ModuleNotFoundError: No module named xxxxx。 原因可能有&#xff1a; 根本没有下载库&#xff1b…

Luminar Neo v1.21.0.13934 图像编辑软件绿色便携版

skylum Luminar Neo 是一款由未来 AI 技术驱动的创意图像编辑器。并且支持微软Windows及苹果Mac OX系统&#xff0c;它使创作者能够将他们最大胆的想法变为现实并乐在其中。借助 Luminar Neo 领先的 AI 技术和灵活的工作流程&#xff0c;完成创意任务并获得专业品质的编辑结果。…

java基础(5)继承与多态

目录 ​编辑 1.前言 2.正文 2.1继承 2.1.1继承概念 2.1.2继承语法 2.1.3子类访问父类 2.1.4super关键字 2.2多态 2.2.1多态概念 2.2.2多态条件 2.2.3重写 2.2.4向上转型与向下转型 2.2.5为什么要使用多态 3.小结 1.前言 哈喽大家好啊&#xff0c;今天继续来为大…

【微信小程序_12_全局配置之 tabBar】

摘要:本文介绍了微信小程序中的 tabBar,包括其定义、组成部分、节点配置项和每个 tab 项的配置选项。还通过案例详细说明了配置 tabBar 的步骤,如拷贝图标资源、新建 tab 页面和配置 tabBar 选项等。tabBar 可实现多页面快速切换,合理配置能提升用户体验。 微信小程序_12_全…

刷爆Leetcode Day2

leetcode 6. 和为s的两个数字7.三数之和8. 四数之和9. 长度最小的子数组10. 无重复字符的最长子串 6. 和为s的两个数字 题目 class Solution { public:vector<int> twoSum(vector<int>& price, int target) {//排序双指针sort(price.begin(),price.end());in…

C++ operator new和operator delete的深入讲解

个人主页&#xff1a;Jason_from_China-CSDN博客 所属栏目&#xff1a;C系统性学习_Jason_from_China的博客-CSDN博客 所属栏目&#xff1a;C知识点的补充_Jason_from_China的博客-CSDN博客 前言 关于operator new和operator delete我们需要明确一个概念&#xff0c;这两个都是…

15.5 JDBC数据库编程5——DAO

目录 15.1.1 引言 实体类Product.java 异常类DaoException.java Dao.java ProductDao.java ProductDaoImpl.java ProductDaoTest.java 15.1.1 引言 Java是面向对象编程语言&#xff0c;主要操作对象&#xff0c;而关系数据库的数据并不是对象&#xff0c;Java程序插入…

linux线程 | 线程的控制(下)

前言&#xff1a; 本节内容是线程的控制部分的第二个小节。 主要是列出我们的线程控制部分的几个细节性问题以及我们的线程分离。这些都是需要大量的代码去进行实验的。所以&#xff0c; 准备好接受新知识的友友们请耐心观看。 现在开始我们的学习吧。 ps:本节内容适合了解线程…

对MVC详细解读

一、MVC模式的详细组成部分 1. 模型&#xff08;Model&#xff09; 数据结构&#xff1a; 模型通常使用类或结构来定义应用程序的数据结构。例如&#xff0c;在Ruby on Rails中&#xff0c;模型通常与数据库表相对应&#xff0c;使用Active Record模式。 数据访问层&#xff1…

动态内存管理(C语言 VS C++)

目录 一.动态内存管理的前置知识 1.栈区 a.栈区的特点 b.注意事项 2.堆区 a.堆区的特点 b.注意事项 3.全局/静态区 a.作用域和生命周期 b.注意事项 4.常量区 二.C语言动态内存管理 1.malloc 函数 a.接口简介与使用实例 b.注意要点 2.calloc 函数&#xff1a; 3.…

Flink Web UI 是使用和调试保姆级教程(持续更新)

Flink Web UI 是调试和监控 Flink 应用程序的重要工具&#xff0c;通过它&#xff0c;你可以实时查看正在运行的 Flink 任务的详细信息&#xff0c;包括作业的状态、性能指标、各子任务的运行情况、故障恢复情况等。Flink Web UI 的这些功能为开发者和运维人员提供了调试和优化…

化学元素分子量、氧化物系数计算python类

在网上找到的分子量计算类&#xff0c;做了少量修改,有原子量、分子量、氧化物系数的计算。 import re wt_dict{ #该原子量数据从CRC手册第95版提取。"H": 1.008,"He": 4.002602,"Li": 6.94,"Be": 9.0121831,"B": 10.…

【入门篇】2.4 map映射文件解析

目录 一,编译产物 1.1 .o 文件(目标文件): 1.2 .hex 文件(十六进制文件) 1.3 .bin 文件(二进制文件) 1.4 .elf 文件(可执行链接格式文件) 1.5 .map 文件(映射文件) 1.6 .lst 文件(列表文件) 二,map文件解析 2.1 程序段交叉引用关系(Section Cross Refe…

Git基础-配置http链接的免密登录

问题描述 当我们在使用 git pull 或者 git push 进行代码拉取或代码提交时&#xff0c; 若我们的远程代码仓库是 http协议的链接时&#xff0c;就是就会提示我们进行账号密码的登录。 每次都要登录&#xff0c;这未免有些麻烦。 本文介绍一下免密登录的配置。解决方案 1 执行…