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 获取Mouse Position(鼠标坐标)的代码
Sep 21 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
Apr 18 Javascript
js的匿名函数使用介绍
Dec 11 Javascript
动态的绑定事件addEventListener方法的使用
Jan 24 Javascript
js post提交调用方法
Feb 12 Javascript
AngularJS模块学习之Anchor Scroll
Jan 19 Javascript
Jquery和BigFileUpload实现大文件上传及进度条显示
Jun 27 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
Sep 06 Javascript
JavaScript 闭包机制详解及实例代码
Oct 10 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
Mar 06 Javascript
Angular value与ngValue区别详解
Nov 27 Javascript
ElementUI 修改默认样式的几种办法(小结)
Jul 29 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
2019年中国咖啡业现状与发展趋势
2021/03/04 咖啡文化
smarty静态实验表明,网络上是错的~呵呵
2006/11/25 PHP
PHP连接局域网MYSQL数据库的简单实例
2013/08/26 PHP
深入理解PHP中的empty和isset函数
2016/05/26 PHP
Laravel框架定时任务2种实现方式示例
2018/12/08 PHP
PHP实现爬虫爬取图片代码实例
2021/03/03 PHP
动态调用css文件——jquery的应用
2007/02/20 Javascript
jQuery getJSON 处理json数据的代码
2010/07/26 Javascript
javascript面向对象入门基础详细介绍
2012/09/05 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2016/08/11 Javascript
vue.js中$watch的用法示例
2016/10/04 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
ionic 自定义弹框效果
2017/06/27 Javascript
webpack使用 babel-loader 转换 ES6代码示例
2017/08/21 Javascript
r.js来合并压缩css文件的示例
2018/04/26 Javascript
深入浅析JS中的严格模式
2018/06/04 Javascript
怎样在vue项目下添加ESLint的方法
2019/05/16 Javascript
[44:58]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第二场
2018/04/06 DOTA
[00:52]玛尔斯技能全介绍
2019/03/06 DOTA
Python greenlet实现原理和使用示例
2014/09/24 Python
高效测试用例组织算法pairwise之Python实现方法
2017/07/19 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
2018/01/04 Python
Python基于xlrd模块操作Excel的方法示例
2018/06/21 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
通过cmd进入python的实例操作
2019/06/26 Python
Python获取二维数组的行列数的2种方法
2020/02/11 Python
Python unittest工作原理和使用过程解析
2020/02/24 Python
python模块如何查看
2020/06/16 Python
python pip如何手动安装二进制包
2020/09/30 Python
Currentbody美国/加拿大:美容仪专家
2020/03/09 全球购物
必须要使用游标的SQL语句有那些
2012/05/07 面试题
军训的自我鉴定
2013/12/10 职场文书
高中毕业生自我鉴定例文
2013/12/29 职场文书
商务会议邀请函
2014/01/09 职场文书
学习三严三实心得体会
2014/10/13 职场文书
python多线程方法详解
2022/01/18 Python