VUE.CLI4.0配置多页面入口的实现


Posted in Javascript onNovember 25, 2019

为何需要配置多页面?

在实际工作中,肯定会遇到大型项目,往往一个架构里面会开发多个应用,而这些应用又没有太大的关联,但有可能会共用一些组件或者是样式表等,那么就会出现一个问题,打包的时候会将这些互不相关的应用全部打包。

而因为脚手架VueCli所以构建的项目属于单页面应用,因此我们就需要手动去配置,搭建一个多入口,多应用的体系

需求

首页显示各个应用名称,点击进去各自应用

实现

使用vue/cli生成一个vue项目

npm install -g @vue/cli 个人不建议直接全局安装,因为可能会对其他项目造成影响,所以会选择加上 -D 来进行本地安装

然后 vue create project-name (使用本地安装的记得加上 npx

VUE.CLI4.0配置多页面入口的实现 

成功创建之后,我们看看当前的目录结构

VUE.CLI4.0配置多页面入口的实现 

这里我们需要重构一下我们的目录 让他更可观

VUE.CLI4.0配置多页面入口的实现 

配置vue.config.js

let path = require('path')
let glob = require('glob') // 用于筛选文件

// 工厂函数 - 配置pages实现多页面获取某文件夹下的html与js
function handleEntry(entry) {
 let entries = {}
 let entryBaseName = ''
 let entryPathName = ''
 let entryTemplate = ''
 let applicationName = ''

 glob.sync(entry).forEach(item => {
  console.log('!!!', item)
  entryBaseName = path.basename(item, path.extname(item))
  console.log('entryBaseName:', entryBaseName)
  entryTemplate = item.split('/').splice(-3)
  console.log('entryTemplate:', entryTemplate)
  entryPathName = entryBaseName // 正确输出js和html的路径
  console.log('entryPathName', entryPathName)

  entries[entryPathName] = {
   entry: 'src/' + entryTemplate[0] + '/' + entryTemplate[1] + '/' + entryTemplate[1] + '.js',
   template: 'src/' + entryTemplate[0] + '/' + entryTemplate[1] + '/' + entryTemplate[2],
   title: entryTemplate[2],
   filename: entryTemplate[2]
  }
 })

 return entries
}

let pages = handleEntry('./src/applications/**?/*.html')
console.log(pages)

// 以下开始配置
module.exports = {
 lintOnSave: false, // 关掉eslint
 /**
  * baseUrl 从 3.3起废用,使用pubilcPath代替
  * 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上,例如 https://www.my-app.com/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.my-app.com/my-app/,则设置 publicPath 为 /my-app/。
  * 这个值也可以被设置为空字符串 ('') 或是相对路径 ('./'),这样所有的资源都会被链接为相对路径,这样打出来的包可以被部署在任意路径,也可以用在类似 Cordova hybrid 应用的文件系统中。
  */
 publicPath: process.env.NODE_ENV === "production" ? "./" : "/",
 productionSourceMap: false,
 // 入口设置
 pages,
 devServer: {
  index: '/', // 运行时,默认打开application1页面
  // 告诉dev-server在服务器启动后打开浏览器,将其设置true为打开默认浏览器
  open: true,
  host: 'localhost',
  port: 8080,
  https: false,
  hotOnly: false,
  // 配置首页 入口链接
  before: app => {
   app.get('/', (req, res, next) => {
    for (let i in pages) {
     res.write(`<a target="_self" href="/${i}">/${i}</a></br>`);
    }
    res.end()
   });
  }
 }
}
application1.js
import Vue from 'vue'
import Application1 from './application1.vue'
import router from './router'
import store from './vuex'

Vue.config.productionTip = false

new Vue({
 router,
 store,
 render: h => h(Application1)
}).$mount('#app')
application1.vue

<template>
 <div id="app">
  <a class='tips' href='application2.html'>
  Hello Im Application1,Clike me can go to Application2
  </a>
 </div>
</template>

<style lang="less">
#app {
 font-family: 'Avenir', Helvetica, Arial, sans-serif;
 -webkit-font-smoothing: antialiased;
 -moz-osx-font-smoothing: grayscale;
 text-align: center;
 color: #2c3e50;
}

.tips{
 display: flex;
 justify-content: center;
 align-items:center;
 color:lightsalmon;
 font-size:20px;
 font-weight:bold;
}

</style>
application1.html

<!DOCTYPE html>
<html lang="en">

<head>
 <meta charset="utf-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width,initial-scale=1.0">
 <link rel="icon" href="<%= BASE_URL %>favicon.ico">
 <title>Application1</title>
</head>

<body>
 <noscript>
  <strong>We're sorry but test-my-ui doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
 </noscript>
 <div id="app"></div>
 <!-- built files will be auto injected -->
</body>

</html>

同理 application2应用也这样配置 运行

npm run serve

运行

VUE.CLI4.0配置多页面入口的实现 

VUE.CLI4.0配置多页面入口的实现

VUE.CLI4.0配置多页面入口的实现

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS常用正则表达式总结
Nov 12 Javascript
JS判断文本框内容改变事件的简单实例
Mar 07 Javascript
使用jQuery判断Div是否在可视区域的方法 判断div是否可见
Feb 17 Javascript
使用vue.js制作分页组件
Jun 27 Javascript
深入解析桶排序算法及Node.js上JavaScript的代码实现
Jul 06 Javascript
Javascript动画效果(1)
Oct 11 Javascript
bootstrap table动态加载数据示例代码
Mar 25 Javascript
js 索引下标之li集合绑定点击事件
Jan 12 Javascript
js实现左右两侧浮动广告
Jul 09 Javascript
element-ui使用导航栏跳转路由的用法详解
Aug 22 Javascript
vue项目中使用lib-flexible解决移动端适配的问题解决
Aug 23 Javascript
js实现随机点名程序
Sep 17 Javascript
用Golang运行JavaScript的实现示例
Nov 25 #Javascript
JS插入排序简单理解与实现方法分析
Nov 25 #Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
Nov 25 #Javascript
python实现迭代法求方程组的根过程解析
Nov 25 #Javascript
JS桶排序的简单理解与实现方法示例
Nov 25 #Javascript
JavaScript交换两个变量方法实例
Nov 25 #Javascript
three.js利用gpu选取物体并计算交点位置的方法示例
Nov 25 #Javascript
You might like
PHP 如何利用phpexcel导入数据库
2013/08/24 PHP
Yii2隐藏frontend/web和backend/web的方法
2015/12/12 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
php中字符串和整数比较的操作方法
2019/06/06 PHP
兼容多浏览器的字幕特效Marquee的通用js类
2008/07/20 Javascript
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
2010/01/12 Javascript
基于jQuery架构javascript基础体系
2011/01/01 Javascript
jquery 滚动条事件简单实例
2013/07/12 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
js设置function参数默认值(适合没有传参情况)
2014/02/24 Javascript
给html超链接设置事件不使用href来完成跳
2014/04/20 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
Backbone.js的Hello World程序实例
2015/06/19 Javascript
jquery实现从数组移除指定的值
2015/06/24 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
2015/12/23 Javascript
jQuery实现网页顶部固定导航效果代码
2015/12/24 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
2015/12/31 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
一个Python最简单的接口自动化框架
2018/01/02 Python
pandas 按照特定顺序输出的实现代码
2018/07/10 Python
python简单实现AES加密和解密
2019/03/28 Python
python 函数的缺省参数使用注意事项分析
2019/09/17 Python
pytorch torch.expand和torch.repeat的区别详解
2019/11/05 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
tensorflow 模型权重导出实例
2020/01/24 Python
pycharm实现在虚拟环境中引入别人的项目
2020/03/09 Python
使用Python获取当前工作目录和执行命令的位置
2020/03/09 Python
意大利网上药房:Farmacia 33
2020/01/27 全球购物
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
村干部承诺书
2014/03/28 职场文书
党支部组织生活会整改方案
2014/09/30 职场文书
2015年学生管理工作总结
2015/05/26 职场文书
Typescript类型系统FLOW静态检查基本规范
2022/05/25 Javascript
Java Spring Boot请求方式与请求映射过程分析
2022/06/25 Java/Android