当前位置:首页 > 技术 > 正文内容

基于 Vite 与 Vue 3 构建现代化前端工程

访客 技术 2026年11月3日 2

工程化背景与 Vite 优势

在现代前端开发流程中,构建工具的选择直接影响开发效率。Vite 凭借原生 ESM(ES Modules)服务和极速的热更新(HMR)性能,已逐渐取代 Webpack 成为 Vue 生态的首选构建工具。相较于传统工具,Vite 在启动开发服务器时无需预构建整个应用,从而实现了毫秒级的启动体验。

项目初始化

通过 Vite 官方提供的脚手架,可以快速搭建一个标准化的 Vue 项目。在终端中执行以下命令:

pnpm create vite web-app-pro --template vue

该指令会创建一个名为 web-app-pro 的目录。进入目录并安装项目依赖:

cd web-app-pro
pnpm install

核心目录结构解析

Vite 驱动的 Vue 项目结构非常精简,遵循"所见即所得"的原则:

  • index.html:位于项目根目录,作为应用的入口文件,这使得 Vite 能够将其视为模块图的一部分。
  • src/:核心逻辑目录,包含组件(components)、主入口(main.js)及根组件(App.vue)。
  • vite.config.js:项目的核心配置文件,用于扩展插件、配置代理及路径别名。
  • public/:存放静态资源,此处的文件会原封不动地打包至输出目录。

开发环境运行

执行以下命令启动本地开发服务器:

npm run dev

默认情况下,Vite 会在 http://localhost:5173 开启服务。由于采用了按需编译策略,即使项目规模不断扩大,其热更新速度依然能保持在极高水平。

组件开发实践

在 Vue 3 中,推荐使用 <script setup> 语法糖来编写更简洁的组件。以下是一个名为 StatusDisplay.vue 的示例组件:

<template>
  <div class="status-container">
    <h2>当前状态: {{ statusText }}</h2>
    <button @click="toggleStatus">切换状态</button>
  </div>
</template>

<script setup>
import { ref } from 'vue';

const statusText = ref('运行中');

const toggleStatus = () => {
  statusText.value = statusText.value === '运行中' ? '已暂停' : '运行中';
};
</script>

<style scoped>
.status-container {
  padding: 20px;
  border: 1px solid #eaeaea;
}
</style>

生产环境构建

当开发完成后,需要通过 Rollup 进行生产环境的代码优化和打包:

npm run build

构建完成后,所有的静态资源将输出到 dist/ 文件夹中。这些文件经过了压缩、混淆以及 CSS 提取,可以直接部署至 Nginx 或 CDN 服务上。

进阶配置:别名与代理

在 vite.config.js 中,可以通过简单的配置解决跨域问题或优化引用路径。以下是常用的工程化配置示例:

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import { resolve } from 'path';

export default defineConfig({
  plugins: [vue()],
  resolve: {
    alias: {
      // 设置 @ 指向 src 目录
      '@': resolve(__dirname, 'src'),
    },
  },
  server: {
    port: 8080,
    proxy: {
      '/api-v1': {
        target: 'https://api.backend.service',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api-v1/, ''),
      },
    },
  },
});

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。