# vue-multipage **Repository Path**: xuae/vue-multipage ## Basic Information - **Project Name**: vue-multipage - **Description**: Vue 多页应用配置 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 3 - **Created**: 2020-08-17 - **Last Updated**: 2023-06-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Vue 多页应用配置 > 以下均是使用 vue cli v3.0 及其以上版本脚手架搭建的 vue 项目。 > > 因多页应用的场景不同,因此分了以下几种写法。 Vue CLI v3.0及以上脚手架搭建的 vue 项目的目录结构大致如下: ``` ├─package.json #依赖包 ├─vue.config.js #vue配置(创建项目时无此文件,需要自己手动添加) │ ├─dist #项目默认打包文件夹 │ ├─public #静态资源主目录,打包时,该目录下资源不会做特殊处理,copy到输出目录 │ ├─favion.ico #网站小图标 │ └─index.html #入口html文件 │ └─src #项目资源主目录 ├─App.vue ├─main.js #vue实例化 │ ├─assets #静态文件 │ └─logo.png #logo图片 │ ├─components #公用组件 │ └─HelloWorld.vue #HelloWorld组件 │ ├─router #路由 │ └─index.js │ ├─store #状态管理 │ └─index.js │ └─views #视图 ├─About.vue #About页面 └─Home.vue #Home页面 ``` ## 在当前项目的基础上,仅需要添加几个静态页面 > 我是把静态页面放在`views`文件夹下的,有需要的可以自行放置在其他文件夹下。 新建一个 `login` 页面,步骤如下(这里仅展示最基础的用法): 1. 在 `views` 下新建 `login` 文件夹。 1. 在 `login` 文件夹下,新建 `App.vue`, `index.html`, `main.js` 文件。 > 如需扩展 router、vuex,按照vue项目中的用法在静态页面的main.js内添加即可。 > 新建的静态页面文件夹下的目录结构可以和一个完整的vue项目内src目录下的文件一致。 更改后`views`文件夹的目录结构如下: ``` └─views #视图 ├─About.vue #About页面 ├─Home.vue #Home页面 │ └─login #新加的静态页面 ├─App.vue ├─index.html #入口html文件,根据需要,此文件可与 public/index.html 文件共用 └─main.js #Login页面的 vue 实例 ``` 1. `vue.config.js` 中添加 `pages` 配置(若没有此文件,请自行添加) > 文件路径不同的,请注意修改配置 ```javascript module.exports = { // 其他代码... pages: { index: { // page 的入口 entry: 'src/main.js', // 模板来源 template: 'public/index.html', // 在 dist/index.html 的输出 filename: 'index.html', // 当使用 title 选项时, // template 中的 title 标签需要是 <%= htmlWebpackPlugin.options.title %> title: 'Index Page', // 在这个页面中包含的块,默认情况下会包含 // 提取出来的通用 chunk 和 vendor chunk。 chunks: ['chunk-vendors', 'chunk-common', 'index'] }, login: { // page 的入口 entry: 'src/views/login/main.js', // 模板来源,若共用 public/index.html, 请把 template 的值改为 'public/index.html' template: 'src/views/login/index.html', // 在 dist/login.html 的输出 filename: 'login.html', // 当使用 title 选项时, // template 中的 title 标签需要是 <%= htmlWebpackPlugin.options.title %> title: 'Login Page', // 在这个页面中包含的块,默认情况下会包含 // 提取出来的通用 chunk 和 vendor chunk。 chunks: ['chunk-vendors', 'chunk-common', 'login'] }, }, } ``` 1. 执行 `npm run serve` 即可访问 `login` 页面,访问地址是 `http://localhost:端口号/login` 或者 `http://localhost:端口号/login.html` 1. 若需要从其他页面跳转至 `login` 页面,请使用 `跳转至登录页` 或者 `跳转至登录页` 1. 构建后的文件目录结构如下: ``` └─dist #构建后的主文件夹 ├─index.html #入口html文件 ├─login.html #登录页html ├─favicon.ico #网站图标 │ ├─js #js文件夹 │ ├─index.js │ ├─login.js │ └─... #其他js文件 │ └─css #css文件夹 ├─index.css ├─login.css └─... #其他css文件 ``` ## 纯多页应用 > 在以上的基础上做修改 1. 删除多余的文件:`main.js`, `App.vue`, 删除文件夹:`views` 1. 新建 `pages` 文件夹,此文件夹下放置应用的页面,一个文件夹即是一个页面,目录结构大致如下: ``` └─src #项目资源主目录 ├─... #其他文件 │ └─pages #页面 ├─index #首页 │ ├─App.vue │ ├─index.html #入口html文件,根据需要,此文件可与 public/index.html 文件共用 │ └─main.js #vue实例 │ └─login #登录页 ├─App.vue ├─index.html #入口html文件,根据需要,此文件可与 public/index.html 文件共用 └─main.js #vue实例 ``` 1. 在根目录下新建 `config` 文件夹,新建 `page.js`, `page.js` 文件内容请在源码中查看。 1. `vue.config.js` 配置如下: ```javascript const page = require('./config/page.js'); module.exports = { // 其他代码... pages: page.pages(), } ``` 1. 构建后的文件目录结构如下: ``` └─dist #构建后的主文件夹 ├─index.html #入口html文件 ├─login.html #登录页html ├─favicon.ico #网站图标 │ ├─js #js文件夹 │ ├─index.js │ ├─login.js │ └─... #其他js文件 │ └─css #css文件夹 ├─index.css ├─login.css └─... #其他css文件 ``` ## 多项目 > 共用组件工具类函数,分开打包 1. 新建 `projects` 文件夹,此文件夹下放置应用的页面,一个文件夹即是一个项目,目录结构大致如下: ``` └─src #项目资源主目录 ├─... #其他文件 │ └─projects #项目 ├─a #a项目 │ ├─App.vue │ ├─index.html #入口html文件 │ └─main.js #vue实例 │ ├─b #b项目 │ ├─App.vue │ ├─index.html #入口html文件 │ └─main.js #vue实例 │ └─c #c项目 ├─App.vue ├─index.html #入口html文件 └─main.js #vue实例 ``` 1. 在根目录下新建 `config` 文件夹,新建 `project.js`, `project.js` 文件内容请在源码中查看。 1. `vue.config.js` 配置如下: ```javascript const project = require('./config/project.js'); module.exports = { // 其他代码... outputDir: `dist/${project.name}`, pages: project.pages(), } ``` 1. 构建后的文件目录结构如下: ``` └─dist #构建后的主文件夹 ├─a #a项目 │ ├─index.html #入口html文件 │ ├─favicon.ico #网站图标 │ │ │ ├─js #js文件夹 │ │ └─... #js文件 │ │ │ └─css #css │ └─... #css文件 │ ├─b #b项目 │ └─... #和a目录结构一致 │ └─c #c项目 └─... #和a目录结构一致 ``` ### 启动项目 - 启动单个项目:`npm run serve -- --project=项目名`,访问地址:`http://localhost:端口` - 启动全部项目:`npm run serve`,访问地址:`http://localhost:端口/项目名` ### 打包项目 - 打包单个项目:`npm run build 项目名` - 打包全部项目:`npm run build:all`