├── src
├── assets
│ ├── js
│ │ └── common.js
│ └── logo.png
├── api
│ └── wechat
│ │ └── index.js
├── config
│ ├── request.js
│ ├── app.js
│ └── page.js
├── pages
│ ├── index
│ │ ├── main.js
│ │ └── App.vue
│ └── model
│ │ ├── indexA
│ │ ├── main.js
│ │ └── App.vue
│ │ └── indexB
│ │ ├── main.js
│ │ └── App.vue
├── utils
│ ├── isTerminal.js
│ ├── checkUrlParams.js
│ ├── request.js
│ ├── buildApiCode.js
│ ├── common.js
│ └── wechat.js
└── components
│ └── HelloWorld.vue
├── .env.dev
├── .env.pro
├── public
├── favicon.ico
└── index.html
├── .env.pre
├── babel.config.js
├── .gitignore
├── jsconfig.json
├── vue.config.js
├── page.config.js
├── package.json
└── README.md
/src/assets/js/common.js:
--------------------------------------------------------------------------------
1 | import 'vant/lib/index.css';
2 |
--------------------------------------------------------------------------------
/.env.dev:
--------------------------------------------------------------------------------
1 | VUE_APP_ENV='Dev'
2 | VUE_APP_REQ_URL='https://xusenlin.com'
3 |
4 |
--------------------------------------------------------------------------------
/src/api/wechat/index.js:
--------------------------------------------------------------------------------
1 |
2 |
3 | export function wechatSignatureApi(){
4 |
5 | }
6 |
--------------------------------------------------------------------------------
/.env.pro:
--------------------------------------------------------------------------------
1 | NODE_ENV='production'
2 | VUE_APP_ENV='Pro'
3 | VUE_APP_REQ_URL='http://localhost:8080'
4 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xusenlin/vue-multiple-pages/HEAD/public/favicon.ico
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xusenlin/vue-multiple-pages/HEAD/src/assets/logo.png
--------------------------------------------------------------------------------
/.env.pre:
--------------------------------------------------------------------------------
1 | NODE_ENV='production'
2 | VUE_APP_ENV='Pre'
3 | VUE_APP_REQ_URL='http://localhost:8080'
4 |
5 |
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/src/config/request.js:
--------------------------------------------------------------------------------
1 |
2 | export const timeout = 2000
3 |
4 | export const requestRetry = 4
5 |
6 | export const requestRetryDelay = 800
7 |
8 | export const baseURL = process.env.VUE_APP_REQ_URL
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/config/app.js:
--------------------------------------------------------------------------------
1 |
2 | export const tokenKey = "ACCESS_TOKEN"
3 |
4 | export const userInfoKey = "USER_INFO"
5 |
6 | export const env = process.env.VUE_APP_ENV //Dev、Pre、Pro
7 |
8 | export const isDevEnv = env === "Dev"
9 |
10 | export const isPreEnv = env === "Pre"
11 |
12 | export const isProEnv = env === "Pro"
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 |
6 | # local env files
7 | .env.local
8 | .env.*.local
9 |
10 | # Log files
11 | npm-debug.log*
12 | yarn-debug.log*
13 | yarn-error.log*
14 | pnpm-debug.log*
15 |
16 | # Editor directories and files
17 | .idea
18 | .vscode
19 | *.suo
20 | *.ntvs*
21 | *.njsproj
22 | *.sln
23 | *.sw?
24 |
--------------------------------------------------------------------------------
/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "module": "esnext",
5 | "baseUrl": "./",
6 | "moduleResolution": "node",
7 | "paths": {
8 | "@/*": [
9 | "src/*"
10 | ]
11 | },
12 | "lib": [
13 | "esnext",
14 | "dom",
15 | "dom.iterable",
16 | "scripthost"
17 | ]
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/pages/index/main.js:
--------------------------------------------------------------------------------
1 | import App from './App.vue'
2 | import "@/assets/js/common"
3 | import {createApp} from 'vue'
4 | import {initPage} from "@/utils/checkUrlParams.js"
5 |
6 | initPage().then(({pageName, pageParams}) => {
7 | window.$pageName = pageName;
8 | window.$pageParams = pageParams;
9 | createApp(App).mount('#app')
10 | }).catch(e => {
11 | console.log(e);
12 | });
13 |
--------------------------------------------------------------------------------
/src/pages/model/indexA/main.js:
--------------------------------------------------------------------------------
1 | import App from './App.vue'
2 | import "@/assets/js/common"
3 | import {createApp} from 'vue'
4 | import {initPage} from "@/utils/checkUrlParams.js"
5 |
6 | initPage().then(({pageName, pageParams}) => {
7 | window.$pageName = pageName;
8 | window.$pageParams = pageParams;
9 | createApp(App).mount('#app')
10 | }).catch(e => {
11 | console.log(e);
12 | });
13 |
--------------------------------------------------------------------------------
/src/pages/model/indexB/main.js:
--------------------------------------------------------------------------------
1 | import App from './App.vue'
2 | import "@/assets/js/common"
3 | import {createApp} from 'vue'
4 | import {initPage} from "@/utils/checkUrlParams.js"
5 |
6 | initPage().then(({pageName, pageParams}) => {
7 | window.$pageName = pageName;
8 | window.$pageParams = pageParams;
9 | createApp(App).mount('#app')
10 | }).catch(e => {
11 | console.log(e);
12 | });
13 |
--------------------------------------------------------------------------------
/src/config/page.js:
--------------------------------------------------------------------------------
1 | //这里做页面参数约定和说明,如果url没有携带requiredParams的参数则无法初始化页面
2 | module.exports = {
3 | demo: {
4 | title: "演示",
5 | requiredParams: {},
6 | optionalParams: {
7 | userId: "url必须携带用户Id"
8 | }
9 | },
10 | index: {
11 | title: "首页",
12 | requiredParams: {}
13 | },
14 | indexA: {
15 | title: "首页A",
16 | requiredParams: {}
17 | },
18 | indexB: {
19 | title: "首页B",
20 | requiredParams: {}
21 | }
22 | };
23 |
--------------------------------------------------------------------------------
/src/utils/isTerminal.js:
--------------------------------------------------------------------------------
1 | const ua = window.navigator.userAgent;
2 |
3 | const isAndroid = /(Android);?[\s/]+([\d.]+)?/i.test(ua);
4 | const isIpad = /(iPad).*OS\s([\d_]+)/i.test(ua);
5 | const isIpod = /(iPod)(.*OS\s([\d_]+))?/i.test(ua);
6 | const isIphone = !isIpad && /(iPhone\sOS)\s([\d_]+)/i.test(ua);
7 | const isWechat = /micromessenger/i.test(ua);
8 | const isAlipay = /alipayclient/i.test(ua);
9 |
10 | export {isIphone,isWechat,isAlipay,isAndroid,isIpad,isIpod}
11 |
--------------------------------------------------------------------------------
/src/pages/index/App.vue:
--------------------------------------------------------------------------------
1 |
2 | 当前环境{{ env }} 当前环境的请求地址{{ baseURL }}
3 |
3 |
3 | {{ props.msg }}
4 |
参数:${errorMsg.map(r=>(r.desc)).join("、")}
27 |