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 相关文章推荐
IE图片缓存document.execCommand("BackgroundImageCache",false,true)
Mar 01 Javascript
常规表格多表头查询示例
Feb 21 Javascript
JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法
Jun 23 Javascript
Jquery异步提交表单代码分享
Mar 26 Javascript
分享jQuery封装好的一些常用操作
Jul 28 Javascript
JavaScript随机打乱数组顺序之随机洗牌算法
Aug 02 Javascript
vue2.0使用swiper组件实现轮播的示例代码
Mar 03 Javascript
vue计算属性及使用详解
Apr 02 Javascript
简单了解小程序+node梳理登陆流程
Jun 24 Javascript
js实现带搜索功能的下拉框
Jan 11 Javascript
JavaScript经典案例之简易计算器
Aug 24 Javascript
JS+Canvas实现五子棋游戏
Aug 26 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来自动调用不同服务器上的flash
2006/10/09 PHP
微信 开发生成带参数的二维码的实例
2016/11/23 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
JScript内置对象Array中元素的删除方法
2007/03/08 Javascript
用JAVASCRIPT如何给<textarea></textarea>赋值
2007/04/20 Javascript
基于jquery的大众点评,分类导航实现代码
2011/08/23 Javascript
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
使用javascript过滤html的字符串(注释标记法)
2013/07/08 Javascript
B/S模式项目中常用的javascript汇总
2013/12/17 Javascript
javascript数组操作总结和属性、方法介绍
2014/04/05 Javascript
一个JavaScript用逗号分割字符串实例
2014/09/22 Javascript
jQuery实现单击和鼠标感应事件
2015/02/01 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
javascript冒泡排序小结
2016/04/10 Javascript
js返回顶部实例分享
2016/12/21 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
vue项目如何刷新当前页面的方法
2018/05/18 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
2018/09/05 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
Vue如何实现监听组件原生事件
2020/07/03 Javascript
[05:41]2014DOTA2西雅图国际邀请赛 小组赛7月10日TOPPLAY
2014/07/10 DOTA
[04:19]DOTA2完美大师赛第四天精彩集锦
2017/11/26 DOTA
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
2018/11/29 Python
Python计算IV值的示例讲解
2020/02/28 Python
Python实现读取并写入Excel文件过程解析
2020/05/27 Python
python通用数据库操作工具 pydbclib的使用简介
2020/12/21 Python
美国一家著名的儿童鞋制造商:Stride Rite
2017/01/02 全球购物
全球最大化妆品零售网站:SkinStore
2020/10/24 全球购物
英文版区域经理求职信
2013/10/23 职场文书
实习单位评语
2014/04/26 职场文书
校园文明标语
2014/06/13 职场文书
工作经常出错的检讨书
2014/09/13 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书
给numpy.array增加维度的超简单方法
2021/06/02 Python