vue cli多个html,vue-cli3多页面配置

本文介绍如何使用 Vue CLI 3 构建多页面项目,详细展示了项目结构和配置方法,包括如何通过自定义脚本来生成多页面入口文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用vue-cli3的多页面项目,项目结构如下

9385e801703b

即所有的项目都放置在src/modules里

简单的配置成下面这样

vue.config.js

const entryConfig = require('./build/entry-config'); // 生成入口文件对象

const prodConfig = require('./build/webpack.prod.conf'); // 生产配置

const devConfig = require('./build/webpack.dev.config');// 开发模式配置

const productionMode = process.env.NODE_ENV === 'production';

module.exports = {

pages: entryConfig.getEntries(),

assetsDir: 'static',

productionSourceMap: false,

configureWebpack: config => {

if (productionMode) {

config.mode = 'production';

return prodConfig;

} else {

return devConfig;

}

}

};

entry-config.js

const fs = require('fs');

var moduleRootPath = 'src/modules'; //模块根目录(这个可以根据自己的需求命名)

let moduleInfo = null;

exports.getEntries = function getEntries() {

//初始化模块列表

this.getModuleInfo();

console.log(

'*********************************** entries ***********************************'

);

console.log(JSON.stringify(moduleInfo));

return moduleInfo;

};

exports.getModuleInfo = function getModuleInfo() {

//判断是否为空,不为空则直接返回

if (moduleInfo) {

return moduleInfo;

} else {

//为空则读取列表

moduleInfo = {};

readDirSync(moduleRootPath, '', true);

return moduleInfo;

}

};

/**

* 深度遍历目录,并整理多页面模块

* @param path 需要变量的路径

* @param moduleName 模块名称

*/

function readDirSync(path, moduleName, nextLevel) {

//缓存模块对象

var moduleObj = {

entry: '',

template: '',

filename: ''

};

//获取当前模块ID

var moduleID = path.replace(moduleRootPath + '/', '');

if (path == moduleRootPath) {

moduleID = '';

}

//获取目录下所有文件及文件夹

var pa = fs.readdirSync(path);

pa.forEach(function(ele, index) {

var info = fs.statSync(path + '/' + ele);

if (info.isDirectory()) {

// console.log("dir: "+ele)

nextLevel && readDirSync(path + '/' + ele, ele, false);

} else {

//判断当前模块的html是否存在

if ('index.html' == ele) {

moduleObj.template = path + '/' + ele;

moduleObj.filename = moduleID + '/' + 'index.html';

}

//判断当前模块的js是否存在

if ('index.js' == ele) {

moduleObj.entry = path + '/' + ele;

}

// console.log("file: "+ele)

}

});

//判断模块是否真实(可能只是个分级目录)

if (

(moduleObj.moduleID != '' && moduleObj.moduleHTML != '') ||

(moduleObj.moduleID != '' && moduleObj.moduleJS != '')

) {

if (moduleID) {

moduleInfo[moduleID] = moduleObj;

}

}

}

// exports.getEntries();

开发模式下有个坑,项目放置在static里不被webpack管理的静态资源,在开发模式一直没引用到资源。

解决方法:把整个static文件夹拖进public文件夹里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值