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中SQL语句的应用实现
May 04 Javascript
js导出txt示例代码
Jan 14 Javascript
javascript中返回顶部按钮的实现
May 05 Javascript
纯JS前端实现分页代码
Jun 21 Javascript
微信小程序 input输入框详解及简单实例
Jan 10 Javascript
微信小程序 数据交互与渲染实例详解
Jan 21 Javascript
浅谈ES6新增的数组方法和对象
Aug 08 Javascript
代码详解javascript模块加载器
Mar 04 Javascript
详解vue中组件参数
Jul 09 Javascript
layui导出所有数据的例子
Sep 10 Javascript
vue项目配置同一局域网可使用ip访问的操作
Oct 23 Javascript
关于vue 项目中浏览器跨域的配置问题
Nov 10 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 cron中的批处理
2008/09/16 PHP
php 将excel导入mysql
2009/11/09 PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
2014/06/23 PHP
yii操作session实例简介
2014/07/31 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
2017/03/04 PHP
php传值方式和ajax的验证功能
2017/03/27 PHP
PDO::setAttribute讲解
2019/01/29 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
无语,javascript居然支持中文(unicode)编程!
2007/04/12 Javascript
jquery $(this).attr $(this).val方法使用介绍
2013/10/08 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
2014/10/16 Javascript
javascript实现类似超链接的效果
2014/12/26 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
JQuery中ajax方法访问web服务实例
2015/07/18 Javascript
微信小程序 animation API详解及实例代码
2016/10/08 Javascript
jQuery给指定的table动态添加删除行的操作方法
2016/10/12 Javascript
解决给dom元素绑定click等事件无效问题的方法
2017/02/17 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
vue.js模仿京东省市区三级联动的选择组件实例代码
2017/11/22 Javascript
Vuejs 实现简易 todoList 功能 与 组件实例代码
2018/09/10 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
Javascript表单序列化原理及实现代码详解
2020/10/30 Javascript
解决Python字典写入文件出行首行有空格的问题
2017/09/27 Python
pandas.DataFrame.to_json按行转json的方法
2018/06/05 Python
numpy返回array中元素的index方法
2018/06/27 Python
python 读取竖线分隔符的文本方法
2018/12/20 Python
python利用google翻译方法实例(翻译字幕文件)
2020/09/21 Python
宝拉珍选英国官网:Paula’s Choice英国
2019/05/29 全球购物
Linux操作面试题
2012/05/16 面试题
实习鉴定范文
2013/12/19 职场文书
测试工程师程序员求职信范文
2014/02/20 职场文书
不拖欠农民工工资承诺书
2014/03/31 职场文书
社会工作专业自荐信
2014/09/26 职场文书
幼儿园欢迎词范文
2015/01/26 职场文书
2016年社区党支部公开承诺书
2016/03/25 职场文书