Javascript 如何定义新路由器?

Javascript 如何定义新路由器?,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,对于这个问题,我指的是来自 这个模板是最适合我的模板。然而,我想做一些改变。确切地说,我想添加一个新页面,但不想在侧边栏中显示此页面。为此,我需要定义新的路由器。我的问题是:我不太明白如何添加新的路由器 这就是我所做的: 首先,我在组件/contact/contact.vue中创建了一个.vue文件。其代码: <template> <div class="contact"> <div class="row"> <div class

对于这个问题,我指的是来自

这个模板是最适合我的模板。然而,我想做一些改变。确切地说,我想添加一个新页面,但不想在侧边栏中显示此页面。为此,我需要定义新的路由器。我的问题是:我不太明白如何添加新的路由器

这就是我所做的:

首先,我在
组件/contact/contact.vue
中创建了一个
.vue
文件。其代码:

<template>
  <div class="contact">
    <div class="row">
      <div class="col-md-12">
        <p>contact</p>
      </div>
    </div>
  </div>
</template>

<script>
  export default { name: 'contact' }
</script>

<style lang="scss"></style>
import lazyLoading from './lazyLoading'

export default {
  name: 'Contact',
  path: '/contact',
  component: lazyLoading('contact/Contact'),

  meta: {
    default: false,
    title: 'menu.contact',
    iconClass: 'vuestic-icon vuestic-icon-extras'
  }
}
第三
store/modules/menu/index.js
文件中,我通过添加
页面
更改了
状态
定义:

import contact from './contact'

const state = {
  pages: [
    contact
  ],

  items: [
    dashboard,
    statistics,
    forms,
    tables,
    ui,
    extra,
    auth
  ]
}
路由器/index.js
文件中,我做了以下更改:

export default new Router({
  routes: [
    ...generateRoutesFromMenu(menuModule.state.items),
    {path: '*', redirect: { name: getDefaultRoute(menuModule.state.items).name }},
    ...generateRoutesFromMenu(menuModule.state.pages),
    {path: '*', redirect: { name: getDefaultRoute(menuModule.state.pages).name }}
  ]
})
通过编译上面的更改,我得到了控制台错误:
uncaughttypeerror:无法读取未定义的属性“name”

根据我的知识(和我的猜测),问题应该在第四步

谁能告诉我解决这个问题的方法吗?非常感谢

查看
getDefaultRoute()
的源代码

函数getDefaultRoute(菜单=[]){ 让默认路径 menu.forEach((项目)=>{ if(item.meta.default){ defaultRoute=项目 }else if(项。子项){ 让defaultChild=item.children.find((i)=>i.meta.default) defaultRoute=defaultChild | | defaultRoute } }) 返回默认路线 } 我想说你不需要电话线

{path:'*',重定向:{name:getDefaultRoute(menuModule.state.pages).name}
因为对于联系人,您已经设置了
默认值:false
,并且没有子项,这意味着函数返回null(因此您收到了错误消息)

该框架似乎假定一个菜单项列表,并将其中一个设置为默认值。但我认为你的方法应该奏效

唯一的潜在问题是,看起来您正在更改框架代码,这意味着在升级到框架的下一个版本时需要做更多的工作


关于升级的说明 我刚刚运行了基本的安装,看看这个项目,我不得不修改我关于潜在升级问题的评论

本质上,这是一个模板,而不是一个框架。不同之处在于安装程序在项目的src文件夹中创建启动程序代码,您可以自由修改并保存到github存储库中

当您将来在项目上运行
npm install
时,node_modules下没有任何包会覆盖您的路由器更改


如果epicmaxco创建了您希望使用的模板的新版本,您只需创建一个新项目,并将您以前在src中所做的更改复制到新项目中(可能会运行新旧src文件夹的差异)。

您说您不希望路线出现在菜单中,但您正在采取所有步骤使其出现。你看过路由器了吗?这就像使用字符串键指向component@sklingler93谢谢你的回复。对于一般添加路由器,我可能知道如何做。我实际上不知道如何添加路由器到这个模板。此外,在第三步中,我制作了包含我不想显示的页面的页面。非常感谢!实际上这个模板有很多我第一眼就喜欢的特性。一开始我还没有意识到诸如“单一菜单项列表”或“升级”之类的问题。现在,这对我来说真的是一个非常烦人但也是一个挑战性的任务。我是否应该问你是否有任何关于模板的建议,以避免“单一菜单项列表”或“升级”问题?我必须等待获得15个声誉才能给你repu分数。:-)事实上,这是我第一次看到这个模板,但我也喜欢它。我会看看没有升级问题的最佳定制方法,如果我发现了什么,我会发布。那太好了。提前谢谢你!