使用 Vue 和 Create-Vue 构建工程化前端项目

目录

  • 前言
  • 1. 工程化的意义与 Vue 的生态支持
  • 2. 搭建 Vue 工程化项目
    • 2.1 环境准备
    • 2.2 使用 `create-vue` 创建项目
      • 2.2.1 初始化项目
      • 2.2.2 安装依赖
      • 2.2.3 本地运行
  • 3. Vue 项目的目录结构解析
  • 4. Vue 开发流程详解
    • 4.1 项目入口与根组件
      • 4.1.1 `main.js` 的作用
      • 4.1.2 `App.vue` 的结构
    • 4.2 单文件组件(SFC)
    • 4.3 本地调试与热部署
    • 4.4 项目构建与部署
  • 5. 扩展与优化
    • 5.1 引入 Vue Router
    • 5.2 状态管理
  • 结语

前言

随着前端技术的发展,工程化已成为现代前端项目开发的必然趋势。Vue 作为一款流行的前端框架,其生态系统提供了强大的工具来支持项目的工程化开发。本文将介绍如何使用 Vue 官方最新脚手架工具 create-vue 快速生成一个工程化的 Vue 项目,并详细讲解项目的开发流程及关键技术点。

在这里插入图片描述

1. 工程化的意义与 Vue 的生态支持

在现代前端开发中,工程化主要是通过工具链和规范来提高开发效率、代码质量和团队协作能力。Vue 的生态系统为工程化提供了良好的支持,包括脚手架工具、组件化开发、单文件组件(SFC)模式以及丰富的插件库等。

create-vue 是 Vue 官方提供的一款最新脚手架工具,旨在帮助开发者快速创建一个标准化、工程化的 Vue 项目。与传统的脚手架工具相比,create-vue 提供了更现代化的功能,比如统一的目录结构、模块化管理、本地调试、热部署、单元测试和打包优化,能够大幅提升开发体验。

2. 搭建 Vue 工程化项目

2.1 环境准备

在开始项目创建之前,需要确保系统环境中已经安装了以下工具:

  1. Node.js:Vue 的运行环境和工具链依赖于 Node.js,建议安装最新版以获得更好的性能和功能支持。
  2. npmyarn:作为 Node.js 的包管理工具,用于安装项目所需的依赖包。

可以通过以下命令检查 Node.js 和 npm 是否已正确安装:

node -v
npm -v

如果尚未安装 Node.js,可前往 Node.js 官方网站 下载并安装。

2.2 使用 create-vue 创建项目

2.2.1 初始化项目

create-vue 提供了一种快速初始化项目的方式。通过以下命令即可创建一个新的 Vue 项目:

npm init vue@latest

在命令执行过程中,脚手架会引导用户完成项目的配置,包括:

  • 选择是否使用 TypeScript
  • 是否支持 JSX
  • 是否集成 Vue Router
  • 是否配置 Pinia 状态管理
  • 是否启用单元测试或端到端测试

根据实际需求完成选项选择后,脚手架会自动生成项目的基本结构。

2.2.2 安装依赖

项目初始化完成后,需要安装相关依赖:

npm install

2.2.3 本地运行

完成依赖安装后,可以通过以下命令启动本地开发服务器:

npm run dev

此时,浏览器会自动打开一个页面,展示 Vue 项目的初始界面。开发者可以直接在这个基础上进行功能开发。

3. Vue 项目的目录结构解析

一个典型的 create-vue 项目包含以下目录和文件:

  • src/:存放项目的主要代码,包括组件、样式、路由等。
  • public/:静态资源目录,存放不会被 Webpack 处理的文件。
  • package.json:记录项目的依赖包和脚本命令。
  • vite.config.js:Vite 的配置文件,用于调整开发服务器和构建行为。

其中,src/ 是项目开发的核心目录,包含以下重要文件:

  1. main.js:项目的入口文件,用于初始化应用并挂载到 DOM。
  2. App.vue:根组件,定义了整个应用的基础布局和逻辑。
  3. components/:存放项目中的子组件,用于实现模块化开发。

在这里插入图片描述

4. Vue 开发流程详解

4.1 项目入口与根组件

4.1.1 main.js 的作用

main.js 是 Vue 应用的入口文件,其主要任务是:

  • 创建 Vue 应用实例
  • 引入全局插件(如路由、状态管理)
  • 挂载应用到指定的 DOM 节点

典型的 main.js 内容如下:

import { createApp } from 'vue';
import App from './App.vue';
import router from './router'; // 引入路由配置
import store from './store';  // 引入状态管理const app = createApp(App);app.use(router);
app.use(store);
app.mount('#app');

4.1.2 App.vue 的结构

App.vue 是 Vue 项目的根组件,包含模板、脚本和样式三部分:

<template><div id="app"><router-view /></div>
</template><script>
export default {name: 'App',
};
</script><style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;text-align: center;color: #2c3e50;
}
</style>

根组件通常用于定义全局布局结构,其他功能模块会作为子组件插入到 router-view 中。

4.2 单文件组件(SFC)

Vue 的单文件组件(SFC)将组件的逻辑(JavaScript)、模板(HTML)和样式(CSS)封装在同一个文件中,以 .vue 为后缀。例如:

<template><div class="hello"><h1>{{ msg }}</h1></div>
</template><script>
export default {props: {msg: String,},
};
</script><style scoped>
h1 {color: #42b983;
}
</style>

这种结构使得组件的逻辑和样式更加清晰,同时也方便了团队协作。

4.3 本地调试与热部署

使用 npm run dev 启动的开发服务器支持热部署(Hot Module Replacement, HMR),即代码修改后无需刷新浏览器,页面会实时更新。这极大地提高了开发效率。

4.4 项目构建与部署

开发完成后,可以通过以下命令对项目进行构建:

npm run build

构建后的文件会生成在 dist/ 目录下,可以直接部署到生产环境。

5. 扩展与优化

5.1 引入 Vue Router

在大型项目中,路由管理是不可或缺的。Vue Router 提供了简单且灵活的方式来实现单页面应用的导航。

在项目初始化时,可以选择集成 Vue Router;也可以通过以下命令手动安装:

npm install vue-router

5.2 状态管理

对于复杂的状态管理需求,推荐使用 Pinia 或 Vuex。Pinia 是 Vue 官方推荐的新一代状态管理工具,简单易用且性能更佳。

结语

通过 create-vue 脚手架工具,我们可以快速搭建一个现代化、工程化的 Vue 项目。无论是目录结构、组件化开发,还是调试与构建功能,create-vue 都为开发者提供了强有力的支持。随着 Vue 生态的不断完善,使用 Vue 进行工程化开发将变得更加高效和便捷。希望本文能够为 Vue 项目的开发者提供一些实用的指导和启发。

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

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

相关文章

【MySQL实战45讲笔记】基础篇——redo log 和 binlog

系列文章 基础篇——MySQL 的基础架构 目录 系列文章1. 重要的日志模块&#xff1a;redo log 和 binlog1.1 redo log1.2 binlog1.3 执行器和 InnoDB 引擎内部如何执行更新语句 1. 重要的日志模块&#xff1a;redo log 和 binlog 前面系统的了解了一个查询语句的执行流程&…

C++ lambda(匿名函数)捕获自己

今天写算法题时无意间遇到一种情况,我的深度优先遍历函数要在函数内调用自身,如果是普通函数没什么问题,但如果是 匿名函数 的话会有一些问题,甚至问ai,ai也没打上来,上网搜了半天,才找到这个的解答,故作此文 以费契那波数列为例 // 普通函数式 int fun(int pos) {if (pos …

DAO模式

前言 DAO&#xff08;Data Access Object&#xff09;模式 是一种常用的设计模式&#xff0c;主要用于将数据访问逻辑与业务逻辑分离。它提供了一种抽象层&#xff0c;使得应用程序可以与不同的数据源&#xff08;如数据库、文件系统等&#xff09;进行交互&#xff0c;而无需…

mysql日志写满出现The table ‘xxxx_amazon_order’ is full

数仓发现写数据出现 SQL 错误 [1114] [HY000]: The table ‘xxxx_amazon_order’ is full 1.第一时间查看系统磁盘, 发现空间写满了 df -h因为mysql是使用docker部署的, Docker 的默认存储位置在 /var/lib/docker /var 目录默认是在根分区 (/dev/mapper/centos-root) 下的 …

【读书笔记-《网络是怎样连接的》- 7】Chapter3_2 路由器

本篇继续介绍路由器及其转发过程。 1 路由器内部结构 路由器内部结构图如图所示。 即主要包含左侧的包转发模块和右侧的端口模块。转发模块负责查找包的发送目的地&#xff0c;端口模块完成包的发送。通过安装不同的硬件&#xff0c;转发模块不仅可以支持以太网&#xff0c;也…

P5099 [USACO04OPEN] Cave Cows 4

P5099 [USACO04OPEN] Cave Cows 4https://www.luogu.com.cn/problem/P5099 思路&#xff1a; 这里的垫蹄石之间很明显是有后效性的 所以不能用dp来做 考虑宽搜 我们每次都枚举和这个垫蹄石之间x方向和z方向的距离均不超过2的垫脚石 因为都很大 我们可以使用 代码&#xf…

高阶C语言之六:程序环境和预处理

本文介绍程序的环境&#xff0c;在Linux下对编译链接理解&#xff0c;较为简短&#xff0c;着重在于编译的步骤。 C的环境 在ANSI C&#xff08;标准C语言&#xff09;的任何一种实现中&#xff0c;存在两个不同的环境。 翻译环境&#xff1a;在这个环境中&#xff0c;源代码…

【Python数据可视化分析实战】数据爬取—京东手机品牌信息数据爬取和数据分析与可视化

大数据分析设计方案 1.数据集来源&#xff1a;https://search.jd.com 2.实现思路&#xff1a; &#xff08;1&#xff09;数据爬取 首先&#xff0c;我们需要从京东平台上采集手机品牌的相关数据。可以通过网络爬虫或API接口等方式获取数据。为了保证数据的完整性和准确性&…

【MySQL-4】表的基本查询

目录 1. 整体学习的思维导图 2. 表的创建 2.1 Create(创建) 2.1.1 插入规则 2.1.2 更新插入 2.2 Retrieve(读取) 2.2.1 创建一个实例表 2.3 select使用 2.3.1 全表查询 2.3.2 指定序列查询 2.3.3 查询表达式 2.3.3.1 为查询表达式改名字 2.3.4 查询去重 2.…

无人机航测技术算法概述!

一、核心技术 传感器技术&#xff1a; GPS/GLONASS&#xff1a;无人机通过卫星定位系统实现高精度的飞行控制和数据采集。 高清相机&#xff1a;用于拍摄地面图像&#xff0c;通过后续图像处理生成三维模型。 激光雷达&#xff08;LiDAR&#xff09;&#xff1a;通过激光扫…

uniapp 自定义加载组件,全屏加载,局部加载 (微信小程序)

效果图 全屏加载 页面加载使用 局部加载 列表加载里面使用 使用gif html <template><view><view class"" v-if"typeFullScreen"><view class"loading" v-if"show"><view class""><i…

【D3.js in Action 3 精译_040】4.4 D3 弧形图的绘制方法

当前内容所在位置&#xff1a; 第四章 直线、曲线与弧线的绘制 ✔️ 4.1 坐标轴的创建&#xff08;上篇&#xff09; 4.1.1 D3 中的边距约定&#xff08;中篇&#xff09;4.1.2 坐标轴的生成&#xff08;中篇&#xff09; 4.1.2.1 比例尺的声明&#xff08;中篇&#xff09;4.1…

element ui 走马灯一页展示多个数据实现

element ui 走马灯一页展示多个数据实现 element ui 走马灯一页展示多个数据实现 element ui 走马灯一页展示多个数据实现 主要是对走马灯的数据的操作&#xff0c;先看js处理 let list [{ i: 1, name: 1 },{ i: 2, name: 2 },{ i: 3, name: 3 },{ i: 4, name: 4 },]let newL…

使用MaxKB搭建知识库问答系统并接入个人网站(halo)

首发地址&#xff08;欢迎大家访问&#xff09;&#xff1a;使用MaxKB搭建知识库问答系统并接入个人网站 前言 从OpenAI推出ChatGPT到现在&#xff0c;大模型已经渗透到各行各业&#xff0c;大模型也逐渐趋于平民化&#xff1b;从最开始对其理解、生成、强大的知识积累的惊叹&…

Linux进阶:软件安装、网络操作、端口、进程等

软件安装 yum 和 apt 均需要root权限 CentOS系统使用&#xff1a; yum [install remove search] [-y] 软件名称 install 安装remove 卸载search 搜索-y&#xff0c;自动确认 Ubuntu系统使用 apt [install remove search] [-y] 软件名称 install 安装remove 卸载search 搜索-y&…

如何解决飞书网页文字无法复制的问题

如何解决网页文字无法复制的问题&#xff1f;特别推荐提词宝防复制文案功能&#xff01; 在日常工作和学习中&#xff0c;我们经常遇到一些网页文字无法复制的情况&#xff0c;无论是因为权限限制还是其他原因&#xff0c;手动输入内容不仅耗时费力&#xff0c;还容易出错。那…

STM32电源管理—实现低功耗

注&#xff1a; 本文是学习野火的指南针开发板过程的学习笔记&#xff0c;可能有误&#xff0c;详细请看B站野火官方配套视频教程&#xff08;这个教程真的讲的很详细&#xff0c;请给官方三连吧&#xff09; 在响应绿色发展的同时&#xff0c;在很多应用场合中都对电子设备的功…

Linux网络:守护进程

Linux网络&#xff1a;守护进程 会话进程组会话终端 守护进程setsiddaemon 在创建一个网络服务后&#xff0c;往往这个服务进程是一直运行的。但是对于大部分进程来说&#xff0c;如果退出终端&#xff0c;这个终端上创建的所有进程都会退出&#xff0c;这就导致进程的生命周期…

基于深度学习的文本信息提取方法研究(pytorch python textcnn框架)

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

Seatunnel解决Excel中无法将数字类型转换成字符串类型以及源码打包

需求 需要实现将Excel中的数字类型的单元格像数据库中字符串类型的字段中推送 问题原因 Seatunnel在读取字段类型的时候都是使用强转的形式去获取数据的 假如说数据类型不一样的话直接强转就会报错 修改位置 org/apache/seatunnel/api/table/type/SeaTunnelRow.java org…