vue单页面改造多页面应用详解第2/2页

 更新时间:2022年06月26日 10:03:57   作者:web老猴子  
本文主要介绍了vue单页面改造多页面应用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
= { entry: `src/pages/${page}/main.js`, // page 的入口 template: `public/index.html`, // 模板来源 filename: `${page}.html`, // 在 dist/index.html 的输出 } } const page = process.argv[3] || 'index' // 如果是 开发环境,运行阶段 if (!isProduction) { for (const page of buildEntries) { initPageParams(page) } } else { // 只有在生产打包的时候,单独打包,拆成不用的文件夹 initPageParams(page) } module.exports = { publicPath: './', outputDir: 'dist', assetsDir: isProduction ? page : 'static', productionSourceMap: false, pages: modules, devServer: { port: 8080 }, lintOnSave: false }

这时候我们npm run build:index 尝试查看打包结果,可以看到,可以将index对应的文件全部放在index文件目录下,如果我们需要打包home,直接npm run build:home

 File                                      Size             Gzipped

  dist\index\js\chunk-vendors.c60bfe2f.j    1837.82 KiB      527.87 KiB
  s
  dist\index\js\index.e2aa144d.js           11.28 KiB        4.12 KiB
  dist\index\js\about.2a86a3cb.js           0.43 KiB         0.28 KiB
  dist\index\css\chunk-vendors.ef376986.    456.88 KiB       55.99 KiB
  css
  dist\index\css\index.5dfa7415.css         0.45 KiB         0.28 KiB

  Images and other types of assets omitted.
  Build at: 2022-05-03T03:46:54.824Z - Hash: e2d53105a245deab - Time: 12711ms

 DONE  Build complete. The dist directory is ready to be deployed.
 INFO  Check out deployment instructions at https://cli.vuejs.org/guide/deployment.html 

现在我们已经实现了,单独page单独打包,但我们如果想,一个命令打包所有的page呢。这个时候我们就需要node一个方法来帮助我们实现了 我们在单独建一个js文件代码如下

const fs = require('fs');
const execSync = require('child_process').execSync;
const { buildEntries } = require('../config/getPages');

// 移除目录
function deleteDist(path) {
  let files = [];
  // 判断目录是否存在
  if (fs.existsSync(path)) {
    files = fs.readdirSync(path); // 读取目录
    // @ts-ignore
    files.forEach((file) => {
      const curPath = path + '/' + file; // 拼接目录写文件完整路径
      if (fs.statSync(curPath).isDirectory()) { // 读取文件路径状态 判断是否为文件夹 如果为文件夹,递归
        deleteDist(curPath);
      } else {
        fs.unlinkSync(curPath); // 删除文件
      }
    });
    fs.rmdirSync(path);
  }
}
try {
  const startTime = Date.now();
  process.env.NODE_ENV = 'production';  // 切换环境为生产
  // 执行打包前删除dist目录
  deleteDist('./dist');
  for (const page of buildEntries) {
    // 可以执行我们的命令,第一个参数是命令,第二个参数的意思是输出子进程中的日志
    execSync(`vue-cli-service build ${page} --no-clean`, { stdio: 'inherit' });
  }
  // 重置
  process.env.NODE_ENV = undefined;
  const time = Date.now() - startTime;
  console.log('\033[42;30m ALL DONE \033[0m Build Compiled successfully in ' + `${time / 1000}s`);
} catch (e) {
  console.log('\033[41;30m FAILED \033[0m ' + e);
} 

思想就是循环执行打包命令 关键在于execSync方法来替我们执行打包命令,现在我们执行,npm run _build

image.png

至此我们的多页面打包基本完成,后续也可以做一些cdn的处理,或者chunks的拆包等优化。小伙伴们自行研究

到此这篇关于vue单页面改造多页面应用详解的文章就介绍到这了,更多相关vue单页面改造多页面 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue3中的Teleport与Portal的区别分析

    Vue3中的Teleport与Portal的区别分析

    在现代前端开发中,特别是使用Vue.js进行构建时,开发者常常面临着如何更有效地管理DOM结构与组件之间的关系的问题,Vue 3引入了两个颇具魅力的概念——Teleport和Portal,本文将深入探讨这两者的不同之处,需要的朋友可以参考下
    2025-01-01
  • vue实现浏览器全屏展示功能

    vue实现浏览器全屏展示功能

    这篇文章主要介绍了vue实现浏览器全屏展示功能,项目中使用的是sreenfull插件,执行命令安装,具体实现代码跟随小编一起看看吧
    2019-11-11
  • vue+canvas实现拼图小游戏

    vue+canvas实现拼图小游戏

    这篇文章主要为大家详细介绍了vue+canvas实现拼图小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • Vue实现学生管理功能

    Vue实现学生管理功能

    这篇文章主要为大家详细介绍了Vue实现学生管理功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • Vue2 this直接获取data和methods原理解析

    Vue2 this直接获取data和methods原理解析

    这篇文章主要为大家介绍了Vue2 this直接获取data和methods原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • vue踩坑之在input中使用filters局部过滤器问题

    vue踩坑之在input中使用filters局部过滤器问题

    这篇文章主要介绍了vue踩坑之在input中使用filters局部过滤器问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • vue.js element-ui tree树形控件改iview的方法

    vue.js element-ui tree树形控件改iview的方法

    这篇文章主要介绍了vue.js element-ui tree树形控件改iview的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Element Carousel 走马灯的具体实现

    Element Carousel 走马灯的具体实现

    这篇文章主要介绍了Element Carousel 走马灯的具体实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • vue使用docxtemplater导出word

    vue使用docxtemplater导出word

    docxtemplater 是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtemplater导出word吧
    2025-04-04
  • vue之prop与$emit的用法说明

    vue之prop与$emit的用法说明

    这篇文章主要介绍了vue之prop与$emit的用法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04

最新评论