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 相关文章推荐
基于jQuery实现点击同时更改两个iframe的网址
Jul 01 Javascript
浅析Prototype的模板类 Template
Dec 07 Javascript
YUI模块开发原理详解
Nov 18 Javascript
javascript操作表格排序实例分析
May 06 Javascript
JavaScript常用数组算法小结
Feb 13 Javascript
微信小程序 Image API实例详解
Sep 30 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
Dec 01 Javascript
iscroll.js滚动加载实例详解
Jul 18 Javascript
jQuery EasyUI 选项卡面板tabs的使用实例讲解
Dec 25 jQuery
详解angularjs 学习之 scope作用域
Jan 15 Javascript
Angular4 Select选择改变事件的方法
Oct 09 Javascript
vue实现抖音时间转盘
Sep 08 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 购物车实例(申精)
2009/05/11 PHP
PHP 循环删除无限分类子节点的实现代码
2013/06/21 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
php创建session的方法实例详解
2015/01/27 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
Zend Framework实现自定义过滤器的方法
2016/12/09 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
PDO::getAvailableDrivers讲解
2019/01/28 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
JavaScript OOP面向对象介绍
2010/12/02 Javascript
formValidator3.3的ajaxValidator一些异常分析
2011/07/12 Javascript
jQuery EasyUI API 中文文档 - ValidateBox验证框
2011/10/06 Javascript
js实现TAB切换对应不同颜色的代码
2015/08/31 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
2015/12/09 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
用element的upload组件实现多图片上传和压缩的示例代码
2019/02/12 Javascript
详解JavaScript中关于this指向的4种情况
2019/04/18 Javascript
vue将文件/图片批量打包下载zip的教程
2020/10/21 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
[36:02]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第一局
2016/02/28 DOTA
python使用matplotlib绘制折线图教程
2017/02/08 Python
Django 登陆验证码和中间件的实现
2018/08/17 Python
python递归法解决棋盘分割问题
2019/07/17 Python
pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法
2019/08/17 Python
详解python日志输出使用配置文件格式
2021/02/10 Python
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
大学生自荐信
2013/12/11 职场文书
四个太阳教学反思
2014/02/01 职场文书
2015年酒店年度工作总结
2015/05/23 职场文书
离婚案件原告代理词
2015/05/23 职场文书
小学教育见习总结
2015/06/23 职场文书
节水宣传标语口号
2015/12/26 职场文书
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript
安装配置mysql及Navicat prenium的详细流程
2021/06/10 MySQL