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 相关文章推荐
经典的解除许多网站无法复制文字的绝招
Dec 31 Javascript
JQuery文本框高亮显示插件代码
Apr 02 Javascript
表头固定(利用jquery实现原理介绍)
Nov 08 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
Aug 13 Javascript
解析jquery中的ajax缓存问题
Dec 19 Javascript
jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
Jan 21 Javascript
jquery中validate与form插件提交的方式小结
Mar 26 Javascript
前端JS面试中常见的算法问题总结
Dec 23 Javascript
layui扩展上传组件模拟进度条的方法
Sep 23 Javascript
浅谈element中InfiniteScroll按需引入的一点注意事项
Jun 05 Javascript
JavaScript代码实现微博批量取消关注功能
Feb 05 Javascript
react 项目中引入图片的几种方式
Jun 02 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 中执行系统外部命令
2006/10/09 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
详解PHP处理字符串类似indexof的方法函数
2017/06/11 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
2020/05/02 PHP
PHP时间相关常用函数用法示例
2020/06/03 PHP
javascript知识点收藏
2007/02/22 Javascript
javascript Select标记中options操作方法集合
2008/10/22 Javascript
利用JQuery为搜索栏增加tag提示
2009/06/22 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
2014/06/19 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
JS随机打乱数组的方法小结
2016/06/22 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
jQuery实现的tab标签切换效果示例
2016/09/05 Javascript
微信小程序 视图层(xx.xml)和逻辑层(xx.js)详细介绍
2016/10/13 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
详解vue模拟加载更多功能(数据追加)
2017/06/23 Javascript
JavaScript条件判断_动力节点Java学院整理
2017/06/26 Javascript
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
create-react-app 修改为多入口编译的方法
2018/08/01 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
python中的多线程实例教程
2014/08/27 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
Python编程中flask的简介与简单使用
2018/12/28 Python
python3实现指定目录下文件sha256及文件大小统计
2019/02/25 Python
Python3 列表,数组,矩阵的相互转换的方法示例
2019/08/05 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
2020/05/19 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
2020/06/30 Python
Python3实现英文字母转换哥特式字体实例代码
2020/09/01 Python
计算机科学系职业生涯规划书
2014/03/08 职场文书
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
物资采购方案
2014/06/12 职场文书
市政工程技术专业自荐书
2014/07/06 职场文书
房屋过户委托书范本
2014/10/07 职场文书
基层党员群众路线整改措施及努力方向
2014/10/28 职场文书
企业法人代表证明书
2015/06/18 职场文书