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

相关推荐

  • 游戏连结亲情!新华社分享《坦克世界》父亲节短片

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

    2025年12月3日 行业动态
    000
  • 三款 mysql 分页存储过程实例(1/3)

    如果你正在mysql 5以上版本,我要告诉你这里有三款 mysql 分页存储过程实例哦,存储过程是mysql 5.0以后才支持的,现在看看这款存储过程吧,看一款简单存储过程

    数据库 2025年12月2日
    000
  • mongoDB 多重数组查询的实例介绍

    这篇文章主要介绍了mongodb 多重数组查询(angularjs绑定显示 nodejs),需要的朋友可以参考下 核心代码: js代码 var Lesson = Schema({ lessonName: String, intr: String, creTime: Date, sort: Strin…

    2025年12月2日
    000
  • mysql去重的两种方法实例详解

    这篇文章主要介绍了%ignore_a_1%去重的两种方法详解及实例代码的相关资料,这里对去重的两种方法进行了一一实例详解,需要的朋友可以参考下 mysql去重 方法一:     在使用MySQL时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复…

    2025年12月2日
    000
  • MySQL中BETWEEN子句的用法实例详解

    这篇文章主要介绍了mysql中between子句的用法详解,是mysql入门学习中的基础知识,需要的朋友可以参考下 可以使用IN子句来代替相结合的“大于等于和小于等于”的条件。 要了解BETWEEN 子句考虑的EMPLOYEE_TBL表有以下记录: mysql> SELECT * FROM e…

    2025年12月2日
    000
  • MySQL用户权限管理实例详解

    这篇文章主要为大家详细介绍了mysql用户权限管理的相关资料,感兴趣的小伙伴们可以参考一下 用户权限管理主要有以下作用: 1. 可以限制用户访问哪些库、哪些表 2. 可以限制用户对哪些表执行SELECT、CREATE、DELETE、DELETE、ALTER等操作 3. 可以限制用户登录的IP或域名 …

    2025年12月2日 数据库
    000
  • 分享一下SQLSERVER技术交流QQ群里的群共享资源

    分享一下SQLSERVER技术交流QQ群里的群共享资源 SQLSERVER技术交流QQ群已经开了一段时间了,人数已经有了100多号人, 而群里面很多SQLSERVER爱好者上传了他们宝贵的SQLSERVER学习资料给QQ群里面的每个成员, 不过我个人觉得这些宝贵的学习资源应该让更多人享 分享一下SQ…

    2025年12月2日
    000
  • php 闭包实例解析

    匿名函数(anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。当然,也有其它应用的情况。 匿名函数目前是通过 Closure 类来实现的。 闭包函数也可以作为变量的值来使用。PHP 会自动把…

    2025年12月2日
    000
  • php 生成RSS文件类实例代码

    rss(简易信息聚合):是一种消息来源格式规范,用以发布经常更新数据的网站,例如博客文章、新闻、音频或视频的网摘。rss文件(或称做摘要、网络摘要、或频更新,提供到频道)包含了全文或是节录的文字,再加上发用者所订阅之网摘布数据和授权的元数据。网络摘要能够使发行者自动地发布他们的数据,同时也使读者能更…

    2025年12月2日
    000
  • mybatis分页插件pageHelper实例详解

    分页插件pagehelper也是一个很重要的插件,本文主要和大家介绍mybatis分页插件pagehelper详解及简单实例的相关资料,需要的朋友可以参考下,希望能帮助到大家。 mybatis分页插件pageHelper详解及简单实例 工作的框架spring springmvc mybatis3 首…

    2025年12月2日
    000
  • mysql分页查询实例讲解

    limit子句可以被用于强制 select 语句返回指定的记录数。limit 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1)。下面,我们针对特例对mysql分页查询进…

    2025年12月2日
    000
  • MySQL单机多实例分享

    实现单机多实例可以通过docker轻松做到,这里主要是分享使用自带工具mysqld_multi的过程及两个坑点,希望本文能帮助到大家。 1. 安装MySQL 系统: Ubuntu 16.04LTS (xenial)版本: Percorna Server 5.7.21-20安装: 官网教程 2. my…

    2025年12月2日
    000
  • MysqL安全策略分享

    1:使用预处理语句防止sql注入2:写入数据库的数据要进行特殊字符的转义,比如字符中带单引号和双引号需要在应用层转义,这样为了防止sql注入3:查询的错误信息不要返回给用户,将错误记录到日志。错误信息不要显示到应用中,这样用户会获取到数据库信息,这样就是不%ignore_a_1%,我们要把错误屏蔽,…

    2025年12月2日
    000
  • mysql连接数据库并测试实例分享

    本文主要和大家分享mysql连接数据库并测试实例,希望能帮助到大家。 1.通过maven导入关于mybatis的jar包 可以通过阿里云的maven库直接下载相关jar包 org.mybatis mybatis 3.4.5 MySQL mysql-connector-Java 5.1.38 2.编写…

    2025年12月2日 数据库
    000
  • MYSQL知识点总结分享

    本文主要和大家分享MYSQL知识点总结,希望能帮助大家更好的掌握和使用mysql数据库。 数据库概述 database:数据库,用于永久的存储数据的软件,海量存储、高效存取。  数据库软件的种类: (1)网状数据库(2)树形/层次型数据库(3)关系型数据库(Relational DB) (4)非关系…

    2025年12月2日
    000
  • mysql连接查询实例详解

    连接查询就是将两个或两个以上的表,“连接起来”,当做一个数据源,并从中去取得所需要的数据;本文主要和大家分享mysql连接查询实例详解,希望能帮助到大家。 交叉连接 cross  join: 没有条件,只是按连接的基本概念,将所有数据行都连接起来的结果。它又叫做“笛卡尔积”; 对于表1(n1个字段,…

    2025年12月2日 数据库
    000
  • MySQL中的数据协调措施分享

    mysql是一种开源关系型数据库管理系统,被广泛应用于各种应用开发和数据存储中。尽管mysql是一个功能强大的解决方案,但是在处理大规模数据时,我们需要采取一些措施来协调数据以确保mysql数据的正确性和安全性。接下来,本文将分享一些mysql中的数据协调措施。 数据库设计 MySQL的数据库设计是…

    数据库 2025年12月1日
    000
  • Linux命令mkdir详解与实例演示

    linux命令mkdir详解与实例演示 在Linux系统中,mkdir命令是用来创建目录的,具有很强的灵活性和实用性。通过mkdir命令,用户可以快速创建目录结构,方便管理文件和数据。本文将详细介绍mkdir命令的使用方法,并给出具体的代码示例来演示其功能。 1. mkdir命令简介 mkdir是英…

    2025年11月29日
    000
  • MySql存储过程 创建删除与实例

    MySql存储过程 创建删除与实例

    数据库 2025年11月28日
    100
  • mysql数据控制语言实例分享

    数据控制语言,是用于对mysql的用户及其权限进行管理的语句;本文主要和大家分享mysql数据控制语言实例,希望能帮助到大家。 用户管理 用户数据所在位置:mysql中的所有用户,都存储在系统数据库(mysql)中的user 表中——不管哪个数据库的用户,都存储在这里。 表初始内容如下: 创建用户:…

    2025年11月28日 数据库
    000

发表回复

登录后才能评论
关注微信