vue 多页面,vue 多页应用

  vue 多页面,vue 多页应用

  本文主要介绍vue的单页转换和多页应用的详细讲解。通过示例代码详细介绍,对大家的学习或工作有一定的参考价值。有需要的朋友下面和边肖一起学习。

  单页和多页的区别我就不细说了。我们的业务适合多页面,很多小应用整体嵌入iframe。

  如果项目太大,会有非常不好的体验问题。如果拆分多个项目,会有额外的费用,比如服务器资源部署。

基于此改造的目标

  独立的业务逻辑、单个页面、单个命令包和单个包。首先,我们准备一个具有以下目录结构的基本项目。

  src目录是我们平时开发的目录,dist是打包的目录。整体结构如图所示。

  1将当前项目转换成多页目录。

  Pages是为我们开发的目录文件。转换过程是将原来src下的所有目录结构复制到home,索引的每一页都有单独的副本。为了将多页面的优势兑现出来,这里我们选择两个ui框架,以便最终比较装箱体积。

  npm i元素-ui -S

  npm i ant-design-vue -S

  分别在首页和索引中介绍。

  首页也差不多,然后我们改vue.config.js

  模块.导出={

  公共路径:“”。/,

  productionSourceMap: false,

  Pages: {//vue cli3自带多页配置。

  索引:{

  条目:` src/pages/index/main.js `,

  模板:` public/index.html `,

  文件名:` index.html

  },

  首页:{

  条目:` src/pages/home/main.js `,

  模板:` public/index.html `,

  文件名:` home.html

  }

  },

  devServer: {

  端口:8080

  },

  lintOnSave: false

  }

  现在让我们打包,看看生成的目录结构。

  文件大小Gzipped

  dist \ js \ chunk-vendors . 239 e820f . js 2544.36 KiB 703.20 KiB

  dist \ js \ index . 1716 ccad . js 11.33 KiB 4.13 KiB

  dist \ js \ home . e 4410 a 07 . js 7.08 KiB 2.57 KiB

  dist \ js \ about . ca 80 b 2 fc . js 0.76 KiB 0.29 KiB

  dist \ CSS \ chunk-vendors . 68b 49 EDF . CSS 666.01 KiB 89.04 KiB

  dist \ CSS \ index . 5 DFA 7415 . CSS 0.45 KiB 0.28 KiB

  dist \ CSS \ home . d 995708 f . CSS 0.44 KiB 0.27 KiB

  省略图像和其他类型的资产。

  构建时间:2022-05-01T12:26:06.551Z -哈希:693bf5bdcf72896b -时间:16240毫秒

  完成构建完成。dist目录已准备好进行部署。

  信息查看https://cli.vuejs.org/guide/deployment.html的部署说明

  可以看到包装好的混在一起。我们的下一步是将它们分开,可配置的命令被单独打包。这个想法是循环页面下的文件夹。我们在pages下的目录中找出所有带有main.js的文件夹名。当然,我们也可以手动编写。每次添加一个页面,我们都单独维护这个数组。

  Const pages=[home , index] //添加页面时手动维护此数组。

  当然我们也有办法帮我们维护这个数组,可以在我们更新的时候省去一些麻烦。

  //获取页面下的文件夹

  const path=require(path )

  const glob=require(glob )

  //找到pages所在的文件夹hello-world\src\pages

  const PATH _ ENTRY=PATH . resolve(_ _ dirname,./src/pages )

  //匹配页面路径下的main.js文件

  //[

  //D:/测试项目/hello-world/src/pages/home/main . js ,

  // D:/test project/hello-world/src/pages/index/main . js

  //]

  const ENTRY file paths=glob . sync(PATH _ ENTRY /* */main . js )

  const buildEntries=[]

  entry file paths . foreach((file path)={

  //找到对应的文件名,索引home

  const filename=filepath.match(/([^/])\/main \。js$/)[1]

  buildEntries.push(文件名)

  })

  模块.导出={

  构建条目

  }

  BuildEntries不仅仅是我们得到的数组。

  现在我们先继续改造vue.config.js,我们改变package.json中命令参数的形式,根据我们传递的参数分别封装相应的页面。

  脚本:{

  serve: vue-cli-service serve ,

  build : vue-CLI-服务版本,

  build:index : vue-CLI-service build index-no-clean ,//注意,no-clean不能清理文件,否则可能会清理文件夹下打包的其他页面。如果您一次部署一个页面,这没有关系。

  “build:home”:“vue-CLI-service build home-no-clean”,

  build:prod : vue-CLI-服务版本,

  _build :节点build/build.js ,

  lint : vue-CLI-服务lint

  }

  怎样才能得到传入的索引或者home参数?结果就是可以从参数process.argv中得到,具体来说就是可以搜索process.argv作为数组,第一项是可执行文件的目录,第二项是当前执行的JavaScript文件的路径,剩下的都是传递的参数,就像我们传递的索引在process.argv[3]中一样。现在vue.config.js转换如下

  //编译多页配置

  常量模块={}

  const is production=process . ENV . node _ ENV=== production

  const { buildEntries }=require(。/config/get pages’)

  //初始化页面参数

  函数initPageParams(page) {

  模块

  12阅读下页的全文

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: