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

devtools/2024/10/21 9:08:58/

前言
本系列将从零开始,系统性地介绍 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.ppmy.cn/devtools/127523.html

相关文章

【论文笔记】X-Former: Unifying Contrastive and Reconstruction Learning for MLLMs

&#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&#xff0c;为生民立命&#xff0c;为往圣继绝学&#xff0c;为万世开太平。 基本信息 标题: X-Former: Unifying Contr…

Unity中叉乘意义与代码

Unity中叉乘意义与代码 在三维几何中&#xff0c;向量a和向量b的叉乘结果是一个向量&#xff0c;更为熟知的叫法是法向量&#xff0c;该向量垂直于a和b向量构成的平面。 叉乘的结果是个向量&#xff0c;方向在z轴上,在二维空间里&#xff0c;让我们暂时忽略它的方向&#xff0c…

RabbitMQ系列学习笔记(一)--认识消息队列

文章目录 一、MQ的相关概念1、什么是MQ2、MQ应用场景1.应用解耦2.流量消峰3.异步处理 3、MQ的分类1.ActiveMQ2.Kafka3.RocketMQ4.RabbitMQ 4、MQ的比较5、AMQP和JMS 二、RabbitMQ简介1、四大组成部分2、RabbitMQ核心概念1.Producer2.Consumer3.Connection4.Channel5.Broker6.Qu…

删除node_modules文件夹

前言 当安装了较多模块后&#xff0c;node_modules目录下的文件会很多&#xff0c;直接删除整个目录会很慢&#xff0c;下面介绍些快速删除node_modules目录的方法。 方法一&#xff1a;使用rimraf模块的命令 在全局安装rimraf模块&#xff0c;然后通过其命令来快速删除node…

Docker 容器 数据卷 使用

目录 常用 命令 什么是数据卷以及特点 如何挂载数据卷 数据卷容器 数据覆盖问题 修改已经建立的数据卷关系 博主wx&#xff1a;yuanlai45_csdn 博主qq&#xff1a;2777137742 想要 深入学习 5GC IMS 等通信知识(加入 51学通信)&#xff0c;或者想要 cpp 方向修改简历&…

二分查找算法(折半查找算法)

是一种在有序数组中查找特定元素的搜索算法。该算法通过将数组分成两半&#xff0c;逐步缩小查找范围来提高查找效率。具体来说&#xff0c;每次比较中间元素与目标值&#xff0c;根据比较结果决定是继续在左半部分还是右半部分进行查找&#xff0c;从而每次迭代都能排除一半的…

Java 输入与输出(I\O)之字节缓冲流【BufferedInputStream】【BufferedOutputStream】详解

缓冲流是Java I/O中的一个重要概念&#xff0c;它可以提高文件读写的性能。 由于磁盘的IO处理速度远低于内存的读写速度。 为了提高文件读写性能&#xff0c;我们可以使用缓冲流。缓冲流使用内存缓冲区&#xff0c;可以一次性读取或写入大量数据&#xff0c;从而减少与磁盘的交…

前端_007_Axios库

文章目录 配置响应结构拦截器 引入&#xff1a; 官网&#xff1a; https://www.axios-http.cn/ 一句话简介&#xff1a;浏览器里基于XmlHttpRequests&#xff0c;node.js里基于http模块封装的网络请求库&#xff0c;使用非常方便 //通用例子axios({method:post,url: request…