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 相关文章推荐
javascript获取元素CSS样式代码示例
Nov 28 Javascript
jquery操作select详解(取值,设置选中)
Feb 07 Javascript
jQuery 选择同时包含两个class的元素的实现方法
Jun 01 Javascript
JS for循环中i++ 和 ++i的区别介绍
Jul 20 Javascript
Js 获取、判断浏览器版本信息的简单方法
Aug 08 Javascript
Three.js学习之网格
Aug 10 Javascript
canvas实现手机端用来上传用户头像的代码
Oct 20 Javascript
vue使用watch 观察路由变化,重新获取内容
Mar 08 Javascript
详解Javascript中new()到底做了些什么?
Mar 29 Javascript
JS闭包原理与应用经典示例
Dec 20 Javascript
关于JSON解析的实现过程解析
Oct 08 Javascript
微信小程序scroll-view的滚动条设置实现
Mar 02 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
Youku 视频绝对地址获取的方法详解
2013/06/26 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
form表单传递数组数据、php脚本接收的实例
2017/02/09 PHP
PHP获取二叉树镜像的方法
2018/01/17 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
2019/03/11 PHP
微信公众号之主动给用户发送消息功能
2019/06/22 PHP
jquery实现excel导出的方法
2013/04/04 Javascript
Nodejs中自定义事件实例
2014/06/20 NodeJs
JavaScript DOM基础
2015/04/13 Javascript
JS使用post提交的两种方式
2015/12/03 Javascript
js 开发之autocomplete="off"在chrom中失效的解决办法
2017/09/28 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
AngularJS下$http服务Post方法传递json参数的实例
2018/03/29 Javascript
微信小程序当前时间时段选择器插件使用方法详解
2018/12/28 Javascript
mpvue微信小程序的接口请求fly全局拦截代码实例
2019/11/13 Javascript
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
[02:20]DOTA2中文配音宣传片
2013/05/22 DOTA
Python中表示字符串的三种方法
2017/09/06 Python
Python 基础教程之闭包的使用方法
2017/09/29 Python
Python统计单词出现的次数
2018/04/04 Python
基于python requests库中的代理实例讲解
2018/05/07 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
深入了解如何基于Python读写Kafka
2019/12/31 Python
Python爬虫爬取电影票房数据及图表展示操作示例
2020/03/27 Python
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
如何使用localstorage代替cookie实现跨域共享数据问题
2018/04/18 HTML / CSS
免费获得微软MCSD证书赶快行动吧!
2012/11/13 HTML / CSS
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
草莓网化妆品澳大利亚站:Strawberrynet AU
2017/12/18 全球购物
时尚圣经:The Fashion Bible
2019/03/03 全球购物
Nike瑞士官网:Nike CH
2021/01/18 全球购物
static函数与普通函数有什么区别
2015/12/25 面试题
公务员职务工作的自我评价
2013/11/01 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书
办公室主任岗位竞聘书
2015/09/15 职场文书