vue cli重构多页面脚手架实例分享

官方提供的项目生成工具vue-cli没有对多页面webapp的支持,但是在实际的项目中,我们需要这样的脚手架,参考了很多大牛的方法,本文提供了一种我的单页面脚手架转换为多页面脚手架的方案,供大家参考。不好的地方也请大家指正。

准备

使用vue-cli生成一个你需要的单页面项目脚手架,然后我们就要开始我们的改装工程了。

重构过程

步骤一 改变目录结构

立即学习“前端免费学习笔记(深入)”;

step1 在src目录下面新建views文件夹,然后再views文件夹下新建index文件夹

step2 将src目录下的main.js和App.vue移动到step1中的index文件夹下,并将main.js重命名为index.js

step3 将src目录下的router文件夹移动到step1中的index文件夹下,如果不使用router可以再index.js中注释掉,我没有使用,因为我的每个页面不是单页面的应用,不必要使用路由功能

step4 将根目录下的index.html文件移动到step1中的index文件夹下

步骤二 修改build下的配置文件

面多多 面多多

面试鸭推出的AI面试训练平台

面多多 30 查看详情 面多多

在生产环境下会分页面打包独有js文件,并抽取公共js,不会什么都打包成一坨。打包后文件目录结构也是比较清晰地。一下所有修改都在build文件夹下

step1 修改utils.js,增加两个函数,一个用来获取页面多入口,一个用来输入打包后的页面,并注入js:

var glob = require('glob')var HtmlWebpackPlugin = require('html-webpack-plugin')var PAGE_PATH = path.resolve(__dirname, '../src/views')var merge = require('webpack-merge')//多入口配置//获取views文件夹下,每个页面下的index.js作为页面入口,故每个页面下都必须有index.jsexports.entries = function() { var entryFiles = glob.sync(PAGE_PATH + '/*/index.js') var map = {}, tmp = [], pathname = ''; entryFiles.forEach((filePath) => { var filename = filePath.substring(filePath.lastIndexOf('/') + 1, filePath.lastIndexOf('.')) tmp = filePath.split('/').splice(-4) map[tmp[2] + '/' + filename] = filePath }) return map}//多页面输出配置//读取views文件夹下的对应每个页面的html后缀文件,然后放入数组中//如果想要更深的定制或者修改,建议大家看一下CommonsChunkPlugin//推荐一个基础的 https://segmentfault.com/q/1010000009070061exports.htmlPlugin = function() { let entryHtml = glob.sync(PAGE_PATH + '/*/*.html') let arr = [] entryHtml.forEach((filePath) => { let jsPath = '', tmp = []; let filename = filePath.substring(filePath.lastIndexOf('/') + 1, filePath.lastIndexOf('.')) tmp = filePath.split('/').splice(-4) jsPath = tmp[2] + '/' + 'index' let conf = {  template: filePath,  filename: filename + '.html',  chunks: ['manifest', 'vendors', jsPath],  inject: true } if (process.env.NODE_ENV === 'production') {  conf = merge(conf, {  minify: {   removeComments: true,   collapseWhitespace: true,   removeAttributeQuotes: true  },  chunksSortMode: 'dependency'  }) } arr.push(new HtmlWebpackPlugin(conf)) }) return arr}step2 修改webpack.base.conf.js文件配置的入口// entry: {// app: './src/main.js'// },entry: utils.entries(),step3 修改webpack.dev.conf.js文件的打包方法 找到下面的代码,将其注释掉:new HtmlWebpackPlugin({ filename: 'index.html', template: 'index.html', inject: true}),

在plugins这个属性值的后面加上我们上面的方法,下面是代码片段:

// new HtmlWebpackPlugin({ // filename: 'index.html', // template: 'index.html', // inject: true // }), new FriendlyErrorsPlugin() ].concat(utils.htmlPlugin())step4 修改webpack.prod.conf.js 找到下面的代码,注释掉:new HtmlWebpackPlugin({filename: config.build.index,template: 'index.html',inject: true,minify: { removeComments: true, collapseWhitespace: true, removeAttributeQuotes: true // more options: // https://github.com/kangax/html-minifier#options-quick-reference},// necessary to consistently work with multiple chunks via CommonsChunkPluginchunksSortMode: 'dependency'}),

在plugins这个属性值的后面加上我们上面的方法,下面是代码片段:

new CopyWebpackPlugin([{  from: path.resolve(__dirname, '../static'),  to: config.build.assetsSubDirectory,  ignore: ['.*'] }]) ].concat(utils.htmlPlugin())

配置完成。正常启动项目即可。

相关推荐:

如何将 Vue-cli 改造成支持多页面的history模式

webpack构建react多页面

多页面爬虫在nodejs中的示例代码分析

以上就是vue cli重构多页面脚手架实例分享的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/284045.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月4日 17:46:15
下一篇 2025年11月4日 17:47:23

相关推荐

  • 解析CSS伪类和伪元素的常见用法和实例

    深入探讨CSS伪类和伪元素的常见用法和实例解析 在前端开发中,CSS是我们常用的样式设计语言之一。除了基本的选择器和属性,CSS还提供了一些特殊的选择器,称为伪类和伪元素。本文将深入探讨CSS伪类和伪元素的常见用法和实例解析,并附上具体的代码示例。 一、伪类的常见用法和实例解析 :hover伪类 :…

    2025年12月24日
    000
  • 用CSS实现的一张图完成的按钮实例

    本篇文章主要介绍如何用css实现的一张图完成的按钮实例,很好用很奥妙,值得收藏和分享 通过css来读取图片坐标系实现局部背景图,感兴趣的小伙伴参考一下。 网易126登录按钮代码如下: .inp_L1,.inp_L2,{background:url(/upload/20080515201218970.…

    好文分享 2025年12月24日
    000
  • css的重绘与重排实现实例

    本文主要和大家介绍了css重绘与重排的方法的相关资料,小编觉得挺不错的,现在分享给大家,希望能帮助到大家。 浏览器加载页面原理 通常在文档初次加载时,浏览器引擎会解析HTML文档来构建DOM树,之后根据DOM元素的几何属性构建一棵用于渲染的树。渲染树的每个节点都有大小和边距等属性,类似于 盒子模型 …

    好文分享 2025年12月24日
    000
  • CSS 高级技巧汇总分享

    本文主要和大家分享CSS 高级技巧汇总,使用技巧会让人变的越来越懒,没错,我就是想让你变懒。下面是我收集的CSS高级技巧,希望你懒出境界。 1. 黑白图像 这段代码会让你的彩色照片显示为黑白照片,是不是很酷? img.desaturate { filter: grayscale(100%); -we…

    好文分享 2025年12月24日
    000
  • 用css设置网页占满屏幕的实例代码

    本文用css设置网页高100%宽100%占满屏幕,可以看一下,挺不错的 css设置网页高100%宽100%占满屏幕*{margin: 0;padding: 0;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing:…

    好文分享 2025年12月23日
    000
  • 简单分享:NumPy库正确卸载的方法

    如何正确卸载NumPy库:简单教程分享 引言:NumPy是Python中一个常用的数值计算库,它提供了大量的数学函数和数组操作工具,被广泛应用于科学计算、数据分析和机器学习等领域。然而,在某些情况下,我们可能需要卸载NumPy库并重新安装或更新它。本文将为大家介绍如何正确卸载NumPy库,并提供具体…

    2025年12月21日
    000
  • HTML5制作查询页面实例

    本篇文章主要介绍HTML5制作查询页面的一个小案例,感兴趣的朋友参考下,希望对大家有所帮助。 代码如下: 资格查询 资格查询 <!–账 号–> 查询数据 账号 昵称 微信 手机 当前等級 资格 信用度 返回首頁 相关推荐: 如何利用JqueryAjax+php制作简单注册登录页面 v…

    好文分享 2025年12月21日
    000
  • 用html中标签制作表单实例

    本篇文章主要介绍用如何用html标签制作表单实例,属于HTML中必须要掌握的知识点之一。感兴趣的朋友参考下,希望对大家有所帮助。表单标签:form表单标签的主要作用是:在HTML页面中创建一个表单,在用户填写完表单信息后,将数据提交给服务器。需要填写数据的标签必须要放在表单标签体里面。常用的属性: …

    2025年12月21日
    000
  • html当当网首页实例

    本篇文章主要描述如何使用html来写当当网首页的案例,有对此案例感兴趣的小伙伴来参考一下吧。 html代码如下: 当当网首页 关闭 @@##@@ @@##@@ 推荐分类 外语 | 中小学教辅 | @@##@@ 图书商品分类 [小说] 悬疑 | 言情 | 职场 | 财经 [文艺] 文学 | 传记 | …

    好文分享 2025年12月21日
    000
  • Https页面使用百度分享实例详解

    开启全站 https 访问以来,分享代码一直不能用,启用了小绿标就成了灰标。唉,为了这个小绿标也是费尽了心,百度广告基本撤下了,百度站内搜索也基本费了,分享功能就是一摆设。有些研友问我,为啥不能分享呢?其实我不是不想分享,只是能力有限,无法解决这个问题。今天正好有空,准备解决一下这个分享的问题。 解…

    2025年12月21日
    000
  • html5制作转盘的详解及实例

    今天给大家带来的案列是html5转盘实例,可以直接拿来做抽奖程序,有需要的朋友可以拿去使用,下面是案列代码。 html5制作转盘游戏 h1{ width: 100%; height: 3rem; line-height: 3rem; font-size: 1.8rem; color:#c60; te…

    好文分享 2025年12月21日
    000
  • html中关于表单组件的实例详解

    html 表单用于搜集不同类型的用户输入。下文通过代码给大家分享html 表单组件实例代码,感兴趣的朋友参考下吧 废话不多说了,直接给大家贴代码了,具体代码如下所示: Insert title here 输入名称: 输入密码: 选择性别: 男 女 选择技术: Java html CSS 选择文件: …

    好文分享 2025年12月21日
    000
  • html中适合新手的小练习分享

    第1题 考察title标签 出现在>里面,表示页面的标题。直观上,我们可以在浏览器的标题栏(标签栏)中看见。 B正确。   立即学习“前端免费学习笔记(深入)”; 第2题 考察的就是HTML的本质 答案:D 解析:首先HTML只依靠标签对儿表达语义,和是否缩进、换行没有任何关系;只要是标签有正…

    2025年12月21日 好文分享
    000
  • 李炎恢bootstrap视频资料分享

    bootstrap,来自 twitter,是目前很受欢迎的前端框架。bootstrap 是基于 html、css、javascript 的,它简洁灵活,使得 web 开发更加快捷.它由twitter的设计师mark otto和jacob thornton合作开发,是一个css/html框架。boot…

    2025年12月21日
    000
  • 关于html页面优化的实例详解

    1. 减少http请求数。     (1) 合并JS文件和CSS文件。     (2) 合并框架图片及相对变动较少的图片或成一张,通过CSS背景切割来完成渲染。     (3) 合理使用本地Cache来缓存JS/CSS/IMAGE。 2. 减小被请求文件的大小,减少请求数据占用的网络带宽。 立即学习…

    好文分享 2025年12月21日
    000
  • 关于html中列表样式的实例详解

    HTML中的列表 HTML中列表中共有三种:有序列表、无序列表和定义列表。 1、有序列表是一列使用数字进行标记的项目,它使用 包含于标签(ordered lists)内; <ol><li>开始部分</li><li>次要部分</li><…

    2025年12月21日 好文分享
    000
  • c#如何生成二维码的示例分享

    引用zxing类库 实现功能: 1生成带有Logo二维码 2 将二维码绘制到图片上 3 图片上绘制文字  生成二维码 public string CreateQrCode(string md5Str,string name,int sex) { string str = sex == 1? “先生”…

    好文分享 2025年12月17日
    100
  • 如何判断一个对象是否是某个类的实例?

    判断对象是否为类的实例应使用isinstance()函数,它能正确处理继承关系,而type()函数不考虑继承;isinstance()还支持检查多个类的元组,适用于多态场景,但应避免过度使用以保持代码灵活性,必要时可通过抽象基类(ABC)实现更严格的接口约束。 判断对象是否为类的实例,核心在于检查对…

    2025年12月14日
    100
  • 快速上手Django框架:详细教程和实例

    快速上手Django框架:详细教程和实例 引言:Django是一款高效灵活的Python Web开发框架,由MTV(Model-Template-View)架构驱动。它拥有简单明了的语法和强大的功能,能够帮助开发者快速构建可靠且易于维护的Web应用程序。本文将详细介绍Django的使用方法,并提供具…

    2025年12月13日
    000
  • 游戏连结亲情!新华社分享《坦克世界》父亲节短片

    2024年父亲节(6月16日)早晨,新华社发布了一条故事短片《老爸的新词》,让无数游戏玩家猛男落泪,感概游戏里的父子局原来不全是调侃,真实的“上阵父子兵”也能通过游戏来实现! 《老爸的新词》剧情其实很简单,父亲“老梁”用自己的方式试图理解儿子的世界,而在经历了一系列令人啼笑皆非的“误会”后,儿子也明…

    2025年12月3日 行业动态
    000

发表回复

登录后才能评论
关注微信