vue-cli实现多页面多路由的示例代码


Posted in Javascript onJanuary 30, 2018

项目下载地址 vue-cli多页面多路由项目示例 :vue+webpack+vue-router+vuex+mock+axios

Usage

This is a project template for vue-cli.

github上找到某大神的一个基于vue-cli模板的vueAdmin后台管理的模板,根据项目需求改成一个多页面多路由的vue项目。

PC端:后台管理页面,单独的页面入口,单独的路由。

移动端:业务展示页面,单独的页面入口,单独的路由。

踩了无数的坑,终于是初见效果了,随后继续优化更新

Install

# install dependencies
npm install

# serve with hot reload at localhost:8088
npm run dev

# build for production with minification
npm run build

使用Nginx服务器进行访问,地址如下:

PC端 http://localhost/modules/index.html

移动APP http://localhost/modules/index.html

多页面配置

vue2.0版本多页面入口,是由webpack配置来完成的,我的项目文件结构如下

webpack
   |---build
   |---config
   |---dist 
   |---route 路由
   |---src
    |---api axios请求
    |---assets 资源
    |---common 公共js资源目录
    |---components组件
    |---modules各个模块
     |---index  index模块
      |---views 组件
      |---index.html
      |---index.js
      |---index.vue
     |---phone    phone模块
      |---phone.html
      |---phone.js
      |---phone.vue
      |---phone 组件

modules下为多个页面入口,文件名称保持一致,如:

modules
 |---index
  |---index.html
  |---index.js

.vue文件名称任意。

原则上这些文件名称都可以随意定,但由于下面entry入口函数的限定,换成其他名字可以会找不到。如果想要起其他文件名,请相应修改getMultiEntry()函数。

until.js

until.js中添加getMultiEntry(),依赖 glob插件,需要提前下载好,until.js开始引入

//获取多级的入口文件
exports.getMultiEntry = function (globPath) {
 var entries = {},
  basename, tmp, pathname;

 glob.sync(globPath).forEach(function (entry) {
  basename = path.basename(entry, path.extname(entry));
  tmp = entry.split('/').splice(-4);

 var pathsrc = tmp[0]+'/'+tmp[1];
 if( tmp[0] == 'src' ){
  pathsrc = tmp[1];
 }
 //console.log(pathsrc)
  pathname = pathsrc + '/' + basename; // 正确输出js和html的路径
  entries[pathname] = entry;
  //console.log(pathname+'-----------'+entry);
 });

 return entries;
}

~\build\webpack.base.conf.js

找到entry,添加多入口

entry:entries,

运行、编译的时候每一个入口都会对应一个Chunk。 PS:终于明白这个chunk的含义了/(ㄒoㄒ)/~~

~\build\webpack.dev.conf.js

文末添加以下配置:

var pages = utils.getMultiEntry('./src/'+config.moduleName+'/**/*.html');
for (var pathname in pages) {
 // 配置生成的html文件,定义路径等
 var conf = {
  filename: pathname + '.html',
  template: pages[pathname], // 模板路径
  chunks: [pathname, 'vendors', 'manifest'], // 每个html引用的js模块
  inject: true       // js插入位置
 };
 // 需要生成几个html文件,就配置几个HtmlWebpackPlugin对象
 module.exports.plugins.push(new HtmlWebpackPlugin(conf));
}

其中config.moduleName = 'modules'

~\build\webpack.prod.conf.js

...

//构建生成多页面的HtmlWebpackPlugin配置,主要是循环生成
var pages = utils.getMultiEntry('./src/'+config.moduleName+'/**/*.html');
for (var pathname in pages) {
 var conf = {
  filename: pathname + '.html',
  template: pages[pathname], // 模板路径
  chunks: ['vendor',pathname], // 每个html引用的js模块
  inject: true,       // js插入位置
 hash:true
 };

 webpackConfig.plugins.push(new HtmlWebpackPlugin(conf));
}
module.exports = webpackConfig

其中config.moduleName = 'modules'

至此,多页面的配置已经完成。访问地址为:
index : http://localhost:8088/modules/index.html
phone : http://localhost:8088/modules/phone.html

Browser Support

Modern browsers and Internet Explorer 10+.

snapshots

vue-cli实现多页面多路由的示例代码

vue-cli实现多页面多路由的示例代码

vue-cli实现多页面多路由的示例代码

License

MIT

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript的Function详细
Nov 14 Javascript
超清晰的document对象详解
Feb 27 Javascript
Jquery 表单取值赋值的一些基本操作
Oct 11 Javascript
JavaScript常用标签和方法总结
Sep 01 Javascript
node.js缺少mysql模块运行报错的解决方法
Nov 13 Javascript
JavaScript中boolean类型之三种情景实例代码
Nov 21 Javascript
基于jQuery封装的分页组件
Jun 26 jQuery
在Vue中获取组件声明时的name属性方法
Sep 12 Javascript
Vue.js实现tab切换效果
Jul 24 Javascript
vue中使用WX-JSSDK的两种方法(推荐)
Jan 18 Javascript
vue开发中遇到的问题总结
Apr 07 Javascript
详解vue路由
Aug 05 Javascript
jQuery与vue实现拖动验证码功能
Jan 30 #jQuery
5 种JavaScript编码规范
Jan 30 #Javascript
vue源码入口文件分析(推荐)
Jan 30 #Javascript
Vue精简版风格指南(推荐)
Jan 30 #Javascript
详解javascript常用工具类的封装
Jan 30 #Javascript
vue+springboot前后端分离实现单点登录跨域问题解决方法
Jan 30 #Javascript
vue scroller返回页面记住滚动位置的实例代码
Jan 29 #Javascript
You might like
海贼王:最美的悬赏令!
2020/03/02 日漫
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
2016/07/01 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
js中的escape及unescape函数的php实现代码
2007/09/04 Javascript
JavaScript修改css样式style
2008/04/15 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
Jquery日期选择datepicker插件用法实例分析
2015/06/08 Javascript
JavaScript引用类型和基本类型详解
2016/01/06 Javascript
js+html5操作sqlite数据库的方法
2016/02/02 Javascript
JQuery实现简单的服务器轮询效果实例
2016/03/31 Javascript
Nuxt.js踩坑总结分享
2018/01/18 Javascript
vue项目首屏打开速度慢的解决方法
2019/03/31 Javascript
跟老齐学Python之dict()的操作方法
2014/09/24 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
2018/06/26 Python
python基础学习之如何对元组各个元素进行命名详解
2018/07/12 Python
python实现在函数中修改变量值的方法
2019/07/16 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
美国真皮手袋品牌:GiGi New York
2017/03/10 全球购物
印度尼西亚值得信赖的第一家网店:Bhinneka
2018/07/16 全球购物
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
NFL Game Pass欧洲:在线观看NFL比赛直播和点播,以高清质量播放
2018/08/30 全球购物
Notino罗马尼亚网站:购买香水和化妆品
2019/07/20 全球购物
企业管理培训感言
2014/01/27 职场文书
法人代表委托书
2014/04/04 职场文书
彩色的翅膀教学反思
2014/04/25 职场文书
青安岗事迹材料
2014/05/14 职场文书
感恩小明星事迹材料
2014/05/23 职场文书
群众路线领导班子四风对照检查材料
2014/09/27 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
满月酒邀请函
2015/01/30 职场文书
政协委员个人总结
2015/03/03 职场文书
2015年绩效考核工作总结
2015/05/23 职场文书
基于Golang 高并发问题的解决方案
2021/05/08 Golang
windows安装python超详细图文教程
2021/05/21 Python
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript
Spring Boot 实现 WebSocket
2022/04/30 Java/Android