二十一、前端技术Vue.js

作者:互联网

2026-04-17

⼤语⾔模型脚本

1.1 前后端分离架构解决项目的痛点

在将仿“小红书”单体项目的前端从原有技术栈迁移至 Vue.js 3.5.17 的过程中,通常涉及对原有架构缺陷的改进以及新架构的优势选择。以下是详细分析:


一、原有单体项目的常见缺陷

1. 单体架构的扩展性问题

  • 耦合度高:前后端代码混合(如 JSP、Thymeleaf),或前端逻辑嵌入后端模板,导致:
    • 开发效率低:前后端开发需同步部署,无法独立迭代。
    • 协作冲突:全栈开发者需同时掌握前后端技术,团队分工模糊。
  • 性能瓶颈:所有请求经过后端渲染(SSR),首屏加载慢,SEO 优化困难。

2. 开发与运维痛点

  • 测试覆盖率低:原项目可能缺乏单元测试(Jest)、E2E 测试(Cypress)或可视化测试(Storybook)。
  • 部署依赖后端:前端静态资源需通过后端服务器分发,增加运维复杂度。

二、迁移至 Vue.js 3.5.17 的核心动机

1. 技术栈现代化

  • Composition API:Vue 3 的组合式 API 替代 Options API,实现逻辑复用(如自定义 Hooks),代码更清晰。
  • TypeScript 深度支持:Vue 3 对 TS 的类型推断更完善,减少运行时错误,提升代码可维护性。
  • 性能优化
    • 编译时优化:通过 v-oncev-memo 等指令减少不必要的渲染。
    • 碎片化 DOM 更新:按需更新组件,降低内存占用。
  • 生态丰富
    • Pinia 状态管理:替代 Vuex,支持 TypeScript 和模块化。
    • Vite 构建工具:基于 ES Module 的冷启动,构建速度比 Webpack 快 10 倍。

2. 前后端分离架构

  • 独立部署:前端通过 Nginx 部署静态资源,后端提供 RESTful/GraphQL API,实现:
    • 解耦开发:前后端团队可并行开发,互不干扰。
    • 跨平台兼容:同一套 API 可支持 Web、移动端(UniApp/Taro)、桌面端(Electron)。
  • SEO 优化:结合 Nuxt.js(Vue 的服务端渲染框架)或预渲染技术,提升搜索引擎收录。

3. 用户体验升级

  • 响应式与移动优先:Vue 3 配合 CSS 框架(如 TailwindCSS)或 UI 库(如 Vant),快速适配多端。
  • 交互增强
    • 懒加载:通过 v-lazy 实现图片/组件按需加载。
    • 骨架屏:使用 v-skeleton 提升首屏加载体验。
    • 动画库:集成 GSAP 或 Framer Motion,实现流畅过渡效果。
  • 国际化支持:通过 vue-i18n 实现多语言切换,满足全球化需求。

4. 开发与运维效率提升

  • 开发体验
    • HMR 热更新:Vite 支持毫秒级热更新,无需手动刷新页面。
    • DevTools 增强:Vue DevTools 提供更详细的组件树、性能分析和时间旅行调试。
  • 测试覆盖
    • 单元测试:使用 Vitest 或 Jest 测试组件逻辑。
    • E2E 测试:通过 Cypress 或 Playwright 模拟用户操作。
  • CI/CD 集成:结合 GitHub Actions 或 Jenkins 实现自动化构建、测试和部署。

三、迁移方案示例

1. 技术选型

  • 前端框架:Vue 3.5.17 + TypeScript + Pinia + Vue Router。
  • UI 库:Bootstrap、Vant(移动端)或 Element Plus(PC 端)。
  • 构建工具:Vite + ESLint + Prettier。
  • 测试工具:Vitest + Cypress。
  • 部署:Nginx + Docker。

2. 代码重构步骤

  • 组件拆分:将原项目的大页面拆分为原子化组件(如 PostCard.vueCommentList.vue)。
  • 状态管理:用 Pinia 替代 Vuex,管理用户信息、帖子数据等全局状态。
  • API 封装:使用 axiosvue-request 统一管理后端接口请求。
  • 路由优化:基于 Vue Router 实现动态路由和懒加载。

3. 性能优化

  • 图片压缩:使用 vite-plugin-imagemin 自动压缩图片。
  • CDN 加速:将 Vue、Vant 等库托管至 CDN,减少本地打包体积。
  • PWA 支持:通过 vite-plugin-pwa 实现离线缓存和推送通知。

四、总结

通过迁移至 Vue.js 3.5.17,项目可获得 更高的开发效率、更好的用户体验、更强的可扩展性,同时为未来引入微前端、Serverless 等架构奠定基础。

2.1 Vue.js必备环境Node.js安装

在Windows下以ZIP方式安装Node.js 22.17.0,需手动完成解压、环境变量配置及全局模块路径设置等步骤,以下是详细操作指南:

一、下载Node.js 22.17.0 ZIP包

  1. 访问官网:打开浏览器,访问Node.js官方网站:nodejs.org/zh-cn/downl…。
  2. 选择版本:在下载页面中,找到“独立文件(.zip)”部分,选择适合您系统的版本(32位或64位),这里选择64位版本。
  3. 下载ZIP包:点击下载链接,将Node.js 22.17.0的ZIP包下载到本地。

二、解压ZIP包

  1. 找到下载的ZIP包:在文件资源管理器中,找到刚刚下载的Node.js 22.17.0 ZIP包(例如node-v22.17.0-win-x64.zip)。
  2. 解压ZIP包:右键点击ZIP包,选择“解压到当前文件夹”或使用解压软件(如WinRAR、7-Zip等)进行解压。解压后,您将得到一个包含Node.js文件的文件夹。

三、配置环境变量

  1. 打开环境变量设置

    • 右键点击“此电脑”或“我的电脑”,选择“属性”。
    • 在系统属性窗口中,点击“高级系统设置”。
    • 在系统属性窗口中,点击“环境变量”按钮。
  • 新建环境变量NODE_PATH,值为Node.js的解压路径(如D:devwebnode-v22.17.0-win-x64),然后点击“确定”。
  1. 编辑Path变量

    • 在环境变量窗口中,找到“Path”变量,并点击“编辑”。
    • 在编辑环境变量窗口中,点击“新建”按钮。
    • 输入%NODE_PATH%,点击“保存”按钮。
  2. 验证环境变量配置

    • 打开命令提示符(CMD)或PowerShell。
    • 输入node -vnpm -v命令,验证Node.js和npm是否安装成功。如果命令行中显示出了Node.js和npm的版本号,说明环境变量配置成功。
C:Userswayla>node -v
v22.17.0

C:Userswayla>npm -v
11.4.2

四、设置全局模块安装路径(可选)

默认情况下,npm全局安装的模块会保存在用户目录下的AppDataRoamingnpmAppDataRoamingnpm-cache中。为了更方便地管理这些模块,您可以设置自定义的全局模块安装路径和缓存路径。

  1. 创建全局模块和缓存文件夹

    • 在Node.js的解压路径下(或您选择的任何位置),创建两个文件夹,分别命名为npmnpm-cache
  2. 配置npm的全局路径和缓存路径

    • 打开命令提示符(CMD)或PowerShell,以管理员身份运行(如果提示权限不够)。
    • 输入以下命令,将npm的全局路径和缓存路径设置为刚才新建的两个目录:
npm config set prefix "D:datanpmnpm"
npm config set cache "D:datanpmnpm-cache"

五、验证安装和配置

  1. 安装一个全局模块进行测试

    • 打开命令提示符(CMD)或PowerShell。
    • 输入以下命令,安装一个常用的全局模块(如gitbook-cli或者npm):
npm install gitbook-cli -g

npm install -g npm@11.4.2
  1. 验证模块是否安装成功

    • 在全局模块路径下的npmnode_modules文件夹中,查看是否出现了gitbook-cli或者npm文件夹。
    • 如果出现了gitbook-cli或者npm文件夹,说明全局模块安装成功,且全局模块路径配置正确。

2.2 加速Node.js模块下载的妙诀

在 Windows 系统下使用 Node.js 的 npm 时,可以通过设置镜像源来加速模块下载(尤其是国内用户)。以下是详细步骤,涵盖临时使用、全局配置和恢复默认设置的方法:


一、临时使用镜像(仅当前命令有效)

在安装模块时,通过 --registry 参数指定镜像源(例如淘宝镜像):

npm install 模块名 --registry=

示例

npm install express --registry=

二、永久设置 npm 镜像(推荐)

1. 使用淘宝镜像(国内最快)

npm config set registry 

验证是否生效

npm config get registry

输出应为:

https://registry.npmmirror.com/

2. 其他常用镜像源

  • 腾讯云镜像
    npm config set registry 
    
  • 华为云镜像
    npm config set registry 
    
  • 官方源(默认)
    npm config set registry 
    

三、使用 nrm 工具快速切换镜像(高级用法)

nrm 是一个 npm 镜像管理工具,可以一键切换镜像源。

1. 安装 nrm

npm install -g nrm

2. 查看可用镜像列表

nrm ls

输出示例:

* registry.npmmirror.com  # 当前使用
  registry.npmjs.org
  registry.cloud.tencent.com
  ...

3. 切换镜像源

nrm use 镜像名

示例:切换到淘宝镜像:

nrm use registry.npmmirror.com

4. 测试镜像速度

nrm test

四、恢复默认镜像源

如果需要恢复 npm 默认源(),执行:

npm config set registry 

或通过 nrm

nrm use npm

五、配置 .npmrc 文件(企业级场景)

如果需要在项目或全局范围内强制使用镜像,可以直接编辑 .npmrc 文件:

  1. 全局配置(对所有项目生效):

    • 文件路径:C:Users你的用户名.npmrc
    • 添加内容: registry=registry.npmmirror.com
  2. 项目级配置(仅对当前项目生效):

    • 在项目根目录创建 .npmrc 文件,内容同上。

六、常见问题解决

1. 镜像源不可用

  • 检查网络连接是否正常。
  • 尝试更换镜像源(如从淘宝切换到腾讯云)。
  • 使用 ping registry.npmmirror.com 测试镜像地址是否可达。

2. 权限问题(Windows)

如果遇到权限错误,尝试以管理员身份运行命令提示符(CMD/PowerShell),或使用:

npm config set registry  --global

3. 缓存清理

切换镜像后,建议清理 npm 缓存:

npm cache clean --force

总结

方法命令示例适用场景
临时使用镜像npm install --registry=单次安装加速
永久设置镜像npm config set registry 全局生效
使用 nrm 工具nrm use registry.npmmirror.com快速切换多个镜像源
配置 .npmrc 文件在文件或项目目录中添加 registry=企业级强制镜像策略

推荐国内用户使用淘宝镜像(),速度最快且稳定。

2.3 Vue.js开发好搭档Visual Studio Code下载安装到搭建

一、为什么选择 VS Code 作为 Vue.js 开发工具?

  1. 轻量级但功能强大
    • 启动速度快,资源占用低,适合大型 Vue 项目开发。
  2. 丰富的插件生态
    • 支持 Vue 语法高亮、智能提示、代码格式化、调试等。
  3. 集成终端
    • 内置终端(PowerShell/CMD/Git Bash),无需切换窗口即可运行命令。
  4. 调试支持
    • 直接调试 Vue 组件和 Node.js 后端逻辑。
  5. 跨平台
    • 支持 Windows、macOS、Linux,团队开发环境一致。

二、下载与安装 VS Code

1. 下载 VS Code

  • 官网下载:访问 code.visualstudio.com/Download。
  • 选择版本
    • Windows:下载 .exe 安装包(推荐)或 .zip 便携版。
    • macOS:下载 .dmg.zip
    • Linux:下载 .deb(Ubuntu/Debian)或 .rpm(CentOS/Fedora)。

2. 安装步骤(Windows 示例)

zip包解压至指定目录,比如 D:devwebVSCode-win32-x64-1.101.2,双击Code.exe文件即可启动。

三、VS Code 必备插件推荐

Vue - Official (之前是 Volar) 是官方的 VS Code 扩展,提供了 Vue 单文件组件中的 TypeScript 支持,还伴随着一些其他非常棒的特性。 插件地址:marketplace.visualstudio.com/items?itemN…

2.4 安装Vue.js建立现代化前端开发认知框架

安装Vue.js

在工作目录下,执行

npm create vue@latest

这一指令将会安装并执行 create-vue,它是 Vue 官方的项目脚手架工具。你将会看到一些诸如 TypeScript 和测试支持之类的可选功能提示:

npm>npm create vue@latest
Need to install the following packages:
create-vue@3.18.0
Ok to proceed? (y) y


> npx
> create-vue

T  Vue.js - The Progressive JavaScript Framework
|
o  请输入项目名称:
|  hello-world
|
o  请选择要包含的功能: (↑/↓ 切换,空格选择,a 全选,回车确认)
|  TypeScript
|
o  选择要包含的试验特性: (↑/↓ 切换,空格选择,a 全选,回车确认)
|  none
|
o  跳过所有示例代码,创建一个空白的 Vue 项目?
|  No

正在初始化项目 D:workspacegiteejava-full-stack-engineer-system-course-videoimooccourse17ch2hello-world...
|
—  项目初始化完成,可执行以下命令:

   cd hello-world
   npm install
   npm run dev

| 可选:使用以下命令在项目目录中初始化 Git:

   git init && git add -A && git commit -m "initial commit"

上面命令创建了一个名为“hello-world”,使用TypeScript功能的Vue.js项目。如果不确定是否要开启某个功能,你可以直接按下回车键选择 No。

启动开发服务器

在项目被创建后,通过以下步骤安装依赖并启动开发服务器:

cd hello-world
npm install
npm run dev

看到如下输出,则说明已经运行起来了你的第一个Vue.js项目了!

VITE v7.1.4  ready in 20203 ms

  Local:   
  Network: use --host to expose
  Vue DevTools: Open  as a separate window
  Vue DevTools: Press Alt(⌥)+Shift(⇧)+D in App to toggle the Vue DevTools
  press h + enter to show help

项目默认运行在 ,可以在浏览器中打开。

使用 VS Code 开发 Vue 项目

点击 VS Code 左侧资源管理器图标 → 点击“Open Folder” → 选择项目目录。

如果使用 VS Code 终端执行命令报如下错误:

npm : 无法加载文件 D:devwebnode-v22.17.0-win-x64npm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 ab
out_Execution_Policies。
所在位置 行:1 字符: 1
+ npm install
+ ~~~
    + CategoryInfo          : SecurityError: (:) [],PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

这个错误是由于 PowerShell 执行策略 限制导致的,Windows 系统默认禁止运行未经签名的脚本(包括 npm.ps1)。以下是解决方案:

以管理员身份运行 PowerShell,设置为远程签名策略:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
  • RemoteSigned:允许本地脚本运行,但要求网络下载的脚本需有签名。
  • CurrentUser:仅对当前用户生效,不影响系统其他用户。

验证修改:

Get-ExecutionPolicy -List

检查 CurrentUserProcess 的策略是否已更新。

项目结构解析

以 Vite 创建的 Vue 3 项目为例:

hello-world/
├── node_modules/       # 依赖包
├── public/             # 静态资源(如 favicon.ico)
├── src/
│   ├── assets/         # 图片、CSS 等静态资源
│   ├── components/     # Vue 组件
│   ├── App.vue         # 根组件
│   ├── main.ts         # 入口文件
├── index.html          # 入口 HTML 文件
├── package.json        # 项目配置和依赖
└── vite.config.ts      # Vite 配置文件

vite.config.ts

import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueDevTools from 'vite-plugin-vue-devtools'

// 
export default defineConfig({
  plugins: [
    vue(),
    vueDevTools(),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    },
  },
})

package.json

{
  "name": "hello-world",
  "version": "0.0.0",
  "private": true,
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "run-p type-check "build-only {@}" --",
    "preview": "vite preview",
    "build-only": "vite build",
    "type-check": "vue-tsc --build"
  },
  "dependencies": {
    "vue": "^3.5.17"
  },
  "devDependencies": {
    "@tsconfig/node22": "^22.0.2",
    "@types/node": "^22.15.32",
    "@vitejs/plugin-vue": "^6.0.0",
    "@vue/tsconfig": "^0.7.0",
    "npm-run-all2": "^8.0.4",
    "typescript": "~5.8.0",
    "vite": "^7.0.0",
    "vite-plugin-vue-devtools": "^7.7.7",
    "vue-tsc": "^2.2.10"
  }
}

index.html

html>
<html lang="">
  <head>
    <meta charset="UTF-8">
    <link rel="icon" href="/favicon.ico">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vite Apptitle>
  head>
  <body>
    <div id="app">div>
    <script type="module" src="/src/main.ts">script>
  body>
html>

main.ts

import './assets/main.css'

import { createApp } from 'vue'
import App from './App.vue'

createApp(App).mount('#app')
  • 每个 Vue 应用都是通过 createApp 函数创建一个新的 应用实例。
  • 我们传入 createApp 的对象实际上是一个组件,每个应用都需要一个“根组件”,其他组件将作为其子组件。
  • 挂载应用:应用实例必须在调用了 .mount() 方法后才会渲染出来。该方法接收一个“容器”参数,可以是一个实际的 DOM 元素或是一个 CSS 选择器字符串。

App.vue






根组件的模板