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前端框架关于重构的失败经验分享
Mar 17 Javascript
时间戳转换为时间 年月日时间的JS函数
Aug 19 Javascript
javascript实现yield的方法
Nov 06 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
Feb 23 Javascript
jQuery EasyUI之DataGrid使用实例详解
Jan 04 Javascript
AngularJS 单元测试(一)详解
Sep 21 Javascript
jQuery-mobile事件监听与用法详解
Nov 23 Javascript
微信小程序商城项目之侧栏分类效果(1)
Apr 17 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
Nov 08 jQuery
JS实现去除数组中重复json的方法示例
Dec 21 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
Aug 13 Javascript
深入理解webpack process.env.NODE_ENV配置
Feb 23 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获取当前网址及域名的实现代码
2013/06/23 PHP
PHP中使用BigMap实例
2015/03/30 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
2016/07/28 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
2019/10/23 PHP
css把超出的部分显示为省略号的方法兼容火狐
2008/07/23 Javascript
JavaScript中输出标签的方法
2014/08/27 Javascript
javascript实现验证身份证号的有效性并提示
2015/04/30 Javascript
Angularjs实现多个页面共享数据的方式
2016/03/29 Javascript
基于javascript实现tab选项卡切换特效调试笔记
2016/03/30 Javascript
vuejs 单文件组件.vue 文件的使用
2017/07/28 Javascript
javascript函数的节流[throttle]与防抖[debounce]
2017/11/15 Javascript
浅谈vue中慎用style的scoped属性
2017/11/28 Javascript
jQuery实现获取及设置CSS样式操作详解
2018/09/05 jQuery
JavaScript常用数组操作方法,包含ES6方法
2020/05/10 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
如何从头实现一个node.js的koa框架
2019/06/17 Javascript
在vue中使用防抖和节流,防止重复点击或重复上拉加载实例
2019/11/13 Javascript
vue el-upload上传文件的示例代码
2020/12/21 Vue.js
Vue+scss白天和夜间模式切换功能的实现方法
2021/01/05 Vue.js
Python如何实现MySQL实例初始化详解
2017/11/06 Python
pandas 空的dataframe 插入列名的示例
2018/10/30 Python
Python解决两个整数相除只得到整数部分的实例
2018/11/10 Python
python3反转字符串的3种方法(小结)
2019/11/07 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
Python Pivot table透视表使用方法解析
2020/09/11 Python
数据库什么时候应该被重组
2012/11/02 面试题
艺术设计专业个人求职信范文
2013/12/11 职场文书
楼面部长岗位职责范本
2014/02/14 职场文书
《猫》教学反思
2014/02/26 职场文书
公务员平时考核实施方案
2014/03/11 职场文书
超市活动计划书
2014/04/24 职场文书
社区活动总结报告
2014/05/05 职场文书
家庭贫困证明
2014/09/23 职场文书
MySQL下使用Inplace和Online方式创建索引的教程
2021/05/26 MySQL
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers