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 相关文章推荐
完美解决JS中汉字显示乱码问题(已解决)
Dec 27 Javascript
添加到收藏夹代码(兼容几乎所有的浏览器)
Jan 09 Javascript
基于jquery库的tab新形式使用
Nov 16 Javascript
js 获取class的元素的方法 以及创建方法getElementsByClassName
Mar 11 Javascript
Javascript实现简单的富文本编辑器附演示
Jun 16 Javascript
node.js中module.exports与exports用法上的区别
Sep 02 Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
Sep 14 Javascript
JS中的回调函数实例浅析
Mar 21 Javascript
vue-awesome-swiper 基于vue实现h5滑动翻页效果【推荐】
Nov 08 Javascript
vue路由守卫+登录态管理实例分析
May 21 Javascript
vue父子组件通信的高级用法示例
Aug 29 Javascript
js实现滚动条自动滚动
Dec 13 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
php上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
php图片缩放实现方法
2014/02/20 PHP
Drupal7中常用的数据库操作实例
2014/03/02 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
2014/10/30 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
Yii2框架制作RESTful风格的API快速入门教程
2016/11/08 PHP
JS array 数组详解
2009/03/22 Javascript
取得窗口大小 兼容所有浏览器的js代码
2011/08/09 Javascript
基于JavaScript实现 获取鼠标点击位置坐标的方法
2013/04/12 Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
2013/12/02 Javascript
$.each遍历对象、数组的属性值并进行处理
2014/07/18 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
进阶之初探nodeJS
2017/01/24 NodeJs
js实现九宫格的随机颜色跳转
2017/02/19 Javascript
vue.js组件之间传递数据的方法
2017/07/10 Javascript
Vue 滚动行为的具体使用方法
2017/09/13 Javascript
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
操作按钮悬浮固定在微信小程序底部的实现代码
2019/08/02 Javascript
python写的一个squid访问日志分析的小程序
2014/09/17 Python
介绍Python中的一些高级编程技巧
2015/04/02 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
2017/05/19 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
值得收藏,Python 开发中的高级技巧
2018/11/23 Python
python如何从文件读取数据及解析
2019/09/19 Python
python 二维矩阵转三维矩阵示例
2019/11/30 Python
python连接PostgreSQL过程解析
2020/02/09 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
python numpy生成等差数列、等比数列的实例
2020/02/25 Python
python 在threading中如何处理主进程和子线程的关系
2020/04/25 Python
大学生两会学习心得体会
2014/03/10 职场文书
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
2014年安全生产大检查方案
2014/05/13 职场文书
大学生自我评价200字(4篇)
2014/09/17 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
保洁员岗位职责
2015/02/04 职场文书