vue-项目打包、配置路由懒加载

1. 简介

在现代前端开发中,Vue.js因其简洁、灵活和高效的特点,已经成为许多开发者的首选框架。

在Vue项目中,打包部署和路由懒加载是两个非常重要的环节。

打包Vue项目是为了将源代码转换为浏览器可以解析的JavaScript文件,以便在服务器上部署和用户端加载。

2. 项目打包

  1. 项目打包
js 复制代码
yarn build
// 或
npm run build

注:打包后的文件会生成在dist目录下。

  1. 配置publicPath

在文件vue.config.js中,添加publicPath配置:

js 复制代码
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  // 设置获取.js,.css文件时,是以相对地址为基准的。
  // https://cli.vuejs.org/zh/config/#publicpath
  publicPath: './',
  transpileDependencies: true
})

注:配置为相对路径

  1. publicPath介绍

在 Vue 项目中,publicPath 是一个 Webpack 配置选项,用于指定资源文件的公共路径。这个路径主要用于构建生产环境的应用程序。

配置 publicPath 的主要作用如下:

  1. 资源定位 :当你的资源文件(如 JavaScript、CSS、图片等)被打包后,它们会被放在指定的目录下。通过设置 publicPath,你可以确定这些资源文件在网络上的位置。
  2. CDN 部署 :如果你使用 CDN 来部署你的资源文件,publicPath 可以帮助你指定 CDN 的 URL 作为资源的基础路径。这样,当应用程序运行时,它会自动从 CDN 加载资源。
  3. 资源重定向 :在某些情况下,你可能希望将请求重定向到其他服务器或路径。通过配置 publicPath,你可以实现这种重定向逻辑。
  4. 构建输出目录publicPath 也可以指定构建输出文件的目录。默认情况下,Webpack 会将构建后的文件输出到 dist/ 目录下。通过设置 publicPath,你可以更改这个目录结构。

例如,假设你的项目部署在 https://example.com/my-vue-app/ 下,并且你想将资源文件放在该路径的子目录 static/ 下,你可以这样配置 publicPath

javascript 复制代码
// webpack.config.js  
module.exports = {  
  // ... 其他配置 ...  
  output: {  
    publicPath: '/my-vue-app/static/'  
  }  
};

这样,当你的应用程序运行时,它会自动从 https://example.com/my-vue-app/static/ 加载资源文件。

3. 配置路由懒加载

路由懒加载 & 异步组件, 不会一上来就将所有的组件都加载,而是访问到对应的路由了,才加载解析这个路由对应的所有组件

官网链接

当打包构建应用时,JavaScript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了。

将src/router.index.js中注入的路由;需要异步加载的路由 配置为异步:

js 复制代码
import Home from '@/views/layout/home'
import User from '@/views/layout/user'
import Cart from '@/views/layout/cart'
import Category from '@/views/layout/category'

import store from '@/store'

// 配置:异步组件
const Login = () => import('@/views/login')
const Layout = () => import('@/views/layout')
const Search = () => import('@/views/search')
const SearchList = () => import('@/views/search/list')
const ProDetail = () => import('@/views/prodetail')
const Pay = () => import('@/views/pay')
const MyOrder = () => import('@/views/myorder')
相关推荐
崔庆才丨静觅5 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60616 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了6 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅6 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅7 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅7 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment7 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅7 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊7 小时前
jwt介绍
前端
爱敲代码的小鱼7 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax