vue实现多页面的一些问题解决

最近有做一个项目,然后需要实现多页面的,一个员工界面一个用户界面,因为配置的时候遇到了挺多问题,所以记录加深自己的印象
首先,配置多页面肯定需要vue.config.js,这个文件放在根目录

然后vue.config.js的配置如下:

module.exports = {
	publicPath: './',
	outputDir: 'dist',
	assetsDir: 'static',
	productionSourceMap: false,
	runtimeCompiler: true,//运行时是否启动模板编译
	pages: {
		index: {
			// page 的入口
			entry: "src/main.js",
			// 模板来源
			template: "public/index.html",
			// 在 dist/index.html 的输出
			filename: "index.html",
		},
		user: {
			entry: "src/views/User/User.js",
			template: "public/user.html",
			filename: "user.html"
		}
	},
	devServer: {
		proxy: {
			//反向代理的api地址
			'/api': {
				target: 'http://localhost:8181',
				//secure: true, //http带s开启
				changeOrigin: true,//允许跨域
				pathRewrite: {
					'^/api': '/'
				}
			},
		}
	},
}

这么一看还挺抽象的,再慢慢看下去,首先pages里面就是配置多页面的,index和user,我这里的话index就是员工界面,user是用户界面
然后看一下我的文件结构应该会清楚很多:
vue实现多页面的一些问题解决_第1张图片
然后那个index里的entry就是文件入口,这个一般是你的main.js的路径,因为员工界面的引入内容我放在根目录的main.js里面,但是我的用户那个是放在一个单独文件夹里面配置引入的,所以他就用他自己的main.js就好了,我那里取名是User.js,所以文件名字一定要对应,然后是template的书写,这个肯定是放在public下的文件,要几个页面,就写几个html文件,然后对应的到就行了,filename这个就是你打包后的文件放在dist里面的文件名,就是这么简单就可以了

再看User的文件夹,他相当于是一个单独的小项目,所以他也得有main.js和App.vue,但是和外面的重名又不太好,所以就用这个的界面名称来命名问题也不大,这里的User.js和User.vue有一个特别需要注意的东西
User.vue

<template>
  <div id="user">
    <keep-alive>
      <router-view/>
    </keep-alive>
  </div>
</template>

<style>
</style>

User.js

import Vue from 'vue'
import User from './User.vue'
import router from './router'
import { Notify, Toast } from 'vant';

import 'vant/lib/index.css';
import axios from 'axios'
import VueAxios from 'vue-axios'
Vue.use( Notify,Toast);

Vue.use(VueAxios, axios);
Vue.config.productionTip = false
axios.interceptors.response.use(
  response => {
    return response.data
  },
  error => {
    Toast({
      type: 'warning',
      message: '网络异常,请稍后重试'
    })
    return Promise.reject(error.response);
  }
)
new Vue({
  router,
  render: h => h(User),
}).$mount('#user')

User.js的$mount(''#user")的#user一定要与User.vue的id名称一样,然后render:h=>h(User)里的User一定要与引入的名称相同,就是import User from './User.vue'这个我刚写的时候找了好久的一个问题,真的是粗心害死人

然后这里面还有一个大坑
就是当运行的时候,会发现这样只能够访问到员工端,但是用户端不管输入什么都进不去,直到我将publicpath:'./'改成publicpath:'/',就只是把/前面的点去掉之后就可以正常的访问用户界面了,这个我一直没有找到具体的原因,希望有明白的大佬告诉一下我愿意,感激不尽

你可能感兴趣的:(vue实现多页面的一些问题解决)