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

server/2024/10/22 1:36:46/

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

相关文章

Elasticsearch是做什么的?

初识elasticsearch 官方网站&#xff1a;Elasticsearch&#xff1a;官方分布式搜索和分析引擎 | Elastic Elasticsearch是做什么的&#xff1f; Elasticsearch 是一个分布式搜索和分析引擎&#xff0c;专门用于处理大规模数据的实时搜索、分析和存储。它基于 Apache Lucene …

【MySQL】索引的机制、使用

在学习索引知识之前&#xff0c;我们可以先了解一下什么是索引。实际上&#xff0c;索引就是数据库中一个或多个列存储的结构&#xff0c;能够支持数据库管理系统在不扫描整张表的情况下也能查询到数据行&#xff0c;能够大大提升查询效率。举个例子&#xff0c;我们想要找到一…

暴露在公网的linux服务器提高安全性的几种方式

目录 一、提高linux服务器安全性的原因 1、数据保护 2、业务连续性 3、防止恶意软件 4、防止内部威胁 5、应对新威胁 二、具体操作 1、禁止ssh的root远程访问 2、修改root访问密码 3、修改ssh访问端口 4、修改数据库默认端口 5、禁止数据库root远程访问 6、修改防火墙策略 三…

Android——发送彩信

跳转到相册选择图片 btn_jump.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {// 跳转到系统相册选择图片并返回Intent intent new Intent(Intent.ACTION_GET_CONTENT);// 设置图片类型为图片类型intent.setType("image/*&quo…

【c++ arx 选项板2】

static void xlArx_gmenu2(void) {//007 创建面板集if (!g_pMyPaletteSet){// 创建palette setg_pMyPaletteSet = new CMyPaletteSet

01 视频捕获

1.视频捕获 视频捕获&#xff0c;作为数字视频处理的首要步骤&#xff0c;涉及到将模拟视频信号转换为数字数据流&#xff0c;进而在计算机或其他数字设备上进行处理、存储和传输。本章节将深入探讨视频捕获的基本概念、流程&#xff0c;以及空间采样、时序采样和帧场转换等关…

【高阶数据结构】揭开红黑树‘恶魔’的面具:深度解析底层逻辑

高阶数据结构相关知识点可以通过点击以下链接进行学习一起加油&#xff01;二叉搜索树AVL树 大家好&#xff0c;我是店小二&#xff0c;欢迎来到本篇内容&#xff01;今天我们将一起探索红黑树的工作原理及部分功能实现。红黑树的概念相对抽象&#xff0c;但只要我们一步步深入…

记,项目解决

mongodb insertOrUpdate filter : bson.M{"_id": objectId} update : bson.M{"$set": bson.M{"name": "Updated Name","age": 30,}, }opts : options.FindOneAndUpdate().SetUpsert(true). // 没有匹配文…