博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue-cli多页面工程实践
阅读量:6328 次
发布时间:2019-06-22

本文共 2201 字,大约阅读时间需要 7 分钟。

src目录结构

因为是自定义的设置,src下的目录结构需要固定,约定大于配置嘛。

src目录结构:

src/  components/  modules/     # 多页面    index/     # index 单页面      index.html      main.js  # 入口文件    page1/      index.html      main.js    group/      page2/        index.html        main.js

build中的配置

utils.js 增加:

// match fileslet glob = require('glob');/** * globPath 获取泛路径下的特定文件 */exports.getEntities = function (path) {  let entities = {};  glob.sync(path).forEach(function (entity) {    let moduleName = entity.split('/').slice(-2,-1);    entities[moduleName] = entity  });  // eg: { main: './src/module/index/main.js', test: './src/module/group/test/main.js' }  return entities;};

webpack.base.conf.js 修改输入和输出:

module.exports = {  // 遍历获取入口文件  entry: utils.getEntities("./src/modules/**/main.js"),  ...  plugins:[]};/*** * 生成 
/index.html */let utils = require('./utils')let pages = utils.getEntities("./src/modules/**/index.html");for (let page in pages) { let filename = "index.html"; if(page!=='index'){ filename = page+"/index.html"; } module.exports.plugins.push(new HtmlWebpackPlugin({ filename: filename, template: pages[page], inject: true, minify: { removeComments: true, collapseWhitespace: true, removeAttributeQuotes: true // more options: // https://github.com/kangax/html-minifier#options-quick-reference }, // necessary to consistently work with multiple chunks via CommonsChunkPlugin chunksSortMode: 'dependency', chunks: ['manifest','vendor',page] }));}

同时,webpack.dev.conf.js和webpack.prod.conf.js中的HtmlWebpackPlugin删除。

这时,访问localhost:8080/和localhost:8080/page1即可看到效果。

vue-router history模式下的多页面支持

vue-router history模式需要web server支持,这里演示dev环境下的express支持多页面的history模式。

build/dev-server.js 在原来require('connect-history-api-fallback')地方修改:

// handle fallback for HTML5 history API// rewrite的时候注意 js文件也会被rewritelet utils = require("./utils");let history = require('connect-history-api-fallback');let pages = utils.getEntities("./src/modules/**/index.html");let rewrites = [];for(let page in pages){  // match: /page/*  or /page  rewrites.push({from: new RegExp('\/'+page+'\/|^\/'+page+'$'), to: '/'+page+'/index.html'})}app.use(history({  rewrites: rewrites}));

转载地址:http://lnwoa.baihongyu.com/

你可能感兴趣的文章
项目管理原则搜集
查看>>
计算机加电后操作系统启动过程
查看>>
Java日志框架-Logback手册中文版以及官方配置文档教程
查看>>
Residual Networks
查看>>
WiFi安全那些事儿,整理推荐~
查看>>
Highcharts X轴纵向显示
查看>>
windows 注册表讲解
查看>>
【算法】论平衡二叉树(AVL)的正确种植方法
查看>>
35.angularJS的ng-repeat指令
查看>>
看不见的攻击面:查看 SQLite 数据库就中招?
查看>>
一些泛函分析题目
查看>>
基于DDD的现代ASP.NET开发框架--ABP系列之1、ABP总体介绍
查看>>
k8s 重要概念 - 每天5分钟玩转 Docker 容器技术(117)
查看>>
mysql优化-----多列索引的左前缀规则
查看>>
jQuery 中 is() 函数常见使用方法
查看>>
Smalltalk
查看>>
C# mongodb 类库
查看>>
系统调用(一)
查看>>
WCF 设计和实现服务协定(01)
查看>>
【原】东拼西凑PBR(1):PBR基础
查看>>