Mar*_*iev 17 html javascript vue.js vue-cli multi-page-application
我无法弄清楚如何在Vue CLI项目中拥有多个页面.现在我的主页上有一些组件,我想创建另一个页面,但我不知道该怎么做.我应该创建多个html文件,默认情况下index.html是?在一个简单的文件结构中,css js img文件夹和html文件作为页面,我知道创建另一个html文件意味着创建另一个页面.但我不明白它如何与Vue CLI项目一起使用.
我在Vue文档中看到了诸如vue-router和"pages"之类的内容,但我对它们并不了解.我有什么选择?是否有一个指南详细解释,因为我找不到任何,更不用说详细了.如果你能提供帮助,我们将非常高兴!谢谢!
PJ.*_*son 39
第一:始终阅读官方文档.使用Vue,你也可以建立一个SPA:MPA没问题.只需按照指南:
使用Vue CLI 3,您可以使用vue create youProject创建一个新项目,并设置为手动配置它.然后,不要选择SPA选项.Vue将使用MPA方法创建一个不错的"开始"项目.之后,只需在vue.config.js上重复配置.
更新了#1
似乎Vue Cli上的一些更新改变了构建MPA应用程序的方式,因此:
vue create test
创建的样板将是SPA.但是,做出这样的改变:
在src
named 下创建一个文件夹pages
(可选)
进入此文件夹创建自己的页面:Home,About等.
App.vue
为此文件夹,就像您一样下面,我有三张图片展示了这一点:
您不需要创建pages
文件夹,只需了解想法.
链接到GitHub:构建MPA应用程序
编辑:Vue有这个内置.跳到底部了解更多信息.
原始答案:
有两种方法可以解释您的问题,因此可以回答它.
第一种解释是:"我如何支持在同一单页应用程序中路由到不同页面,例如localhost:8080/about和localhost:8080/report等?".答案是使用路由器.它相当简单,效果很好.
第二种解释是:"我的应用程序很复杂,我有多个单页面应用程序,例如一个应用程序用于'网站'部分,一个应用程序供消费者登录和工作,一个应用程序用于管理员等 - 如何vue这样做,没有制作三个完全独立的存储库?"
后者的答案是具有多个单页面应用程序的单个存储库.这个演示看起来就像你正在追求的:
https://github.com/Plortinus/vue-multiple-pages/
请特别注意:https://github.com/Plortinus/vue-multiple-pages/blob/master/vue.config.js
更新的答案:
事实证明,vuejs有内置多个顶级页面的想法.我的意思是,这是有道理的 - 尽管许多不正确的答案都在说"不,这是单页应用程序",但它会非常普遍!
您想要文件中的pages
选项vue.config.js
:
https://cli.vuejs.org/config/#pages
如果您的项目在根目录中没有该文件,请创建它,vuejs将发现它.
定义每个页面有很长很短的方法.我在这里使用了简短形式:
module.exports = {
pages: {
index: 'src/pages/index/main.ts',
experiment: 'src/pages/experiment/main.ts'
}
}
Run Code Online (Sandbox Code Playgroud)
您不必将您的工作放在"页面"下.它可能是"/src/apps/index/index.ts"或其他什么.
移动代码并更改一些导入后:
import HelloWorld from './components/HelloWorld'
Run Code Online (Sandbox Code Playgroud)
至
import HelloWorld from '@/components/HelloWorld'
Run Code Online (Sandbox Code Playgroud)
该应用程序工作 - 但我的回购中的"实验"应用程序必须像这样加载:
http://localhost:8080/experiment.html
Run Code Online (Sandbox Code Playgroud)
非常难看,甚至更糟糕,因为它使用导致URL的路由器,如:
http://localhost:8080/experiment.html/about
Run Code Online (Sandbox Code Playgroud)
啊.
幸运的是,这个stackoverflow的答案解决了它.更新vue.config.js
文件以包含devServer
选项(确保它位于导出对象的顶层:
devServer: {
historyApiFallback: {
rewrites: [
{ from: /\/index/, to: '/index.html' },
{ from: /\/experiment/, to: '/experiment.html' }
]
}
}
Run Code Online (Sandbox Code Playgroud)
然后还修改router.ts
文件以附加额外路径(在我的情况下为"experiment /":
export default new Router({
mode: 'history',
base: process.env.BASE_URL + 'experiment/',
...
Run Code Online (Sandbox Code Playgroud)
然后URL很好地解决,例如:http:// localhost:8080/experiment/about
Hip*_*yol -9
注意向用户指出应该接受的答案
在发布我最初的答案时,我并不知道在 VueJS 中实际构建 MPA 的可能性。我的回答没有解决所提出的问题,因此我建议您查看 PJ.Wanderson 提供的答案,这应该是公认的答案
初始答案
Vue.js 项目是 SPA(单页应用程序)。.html
整个项目中只有一个文件,即index.html
您提到的文件。您想要在 vue.js 中创建的“页面”被称为组件。它们将被插入到index.html
文件中并在浏览器中呈现。vue.js 组件由 3 部分组成:
<template>
</template>
<script>
export default {
}
</script>
<style>
</style>
Run Code Online (Sandbox Code Playgroud)
您可以查看本教程以获取快速入门Vue.js 2 快速入门教程 2017
它解释了 vue.js 项目结构以及各个文件如何相互关联