![]() |
1
38
有点晚了,但我会尽力回答这个问题。这更像是一个架构问题,而不仅仅是路由级别的问题。
1、路由方式首先,你应该决定是否 HTML 5 history mode or hash mode 现在是2018年,我明确建议您使用HTML5历史模式。 如果使用历史记录模式,则意味着客户端路由器需要与服务器端路由器同步工作。 2、微型前端我不知道你是否知道,但是 micro-frontends 是您要查找的术语。基本上,这是你的第一条种族隔离线。您应该将应用程序拆分为多个较小的应用程序。每个应用程序都有其根组件, 路由器 ,模型,服务等。您将共享许多组件(当然,word 非常大 应用程序很重要。我是认真的。) 3、单一回购考虑事项如果您选择继续使用微型前端,那么您可以考虑 mono-repo setup 使用Lerna或Builder。 4、路由模块-初始化
无论微应用如何,你的应用都应该有一个起点-
您的路由模块将与任何组件分离。在此条目文件中导入路由模块并在此处初始化。 5、路由模块-实现
路由模块应进一步拆分为更小的模块。使用简单的函数和ES模块可以做到这一点。每个函数将负责返回
在路由级别,您应该考虑延迟加载模块。这将节省预先加载的许多字节:
除非使用像Webpack或Rollup这样的捆绑程序,否则无法执行此操作。 5、布线模块-防护这非常重要 警卫是你应该处理授权的地方。使用Vue。js,可以编写组件级路由保护。 但我的建议是不要这样做 .只有在绝对必要时才这样做。这基本上是一种关注的分离。您的路由模块应具备应用程序授权的知识。从技术上讲,授权存在/适用于路线,而不是组件。这就是为什么我们将路由创建为一个单独的模块的原因。 我假设您正在为非常大的应用程序使用某种类型的数据存储,如Redux或Vuex。如果要编写路由级防护,则需要咨询Redux/Vuex存储区的数据,以做出授权决策。这意味着您需要将存储注入路由模块。最简单的方法是将路由器初始化封装到如下函数中:
现在,您可以从入口点文件简单地调用此函数。 6、路由模块-默认路由记住要定义一个默认的全覆盖路由,以便向用户显示通用/智能404消息。 7、路由模块-路由数据既然我们真的在谈论 非常大 应用程序中,最好避免直接访问组件中的路由器。相反,保持路由器数据与数据存储同步,如 vuex-router-sync 。这样做可以避免大量令人痛苦的错误。 8、布线模块-副作用
您将经常使用
我希望这涵盖了 非常大 缩放应用程序。 |
![]() |
2
4
如果您使用SPA应用程序,请确保您正在使用以下做法:
|
![]() |
3
1
Nuxt可以帮助您做到这一点。它会将您的文件夹结构动态生成到路由器配置文件。看看 https://nuxtjs.org/guide/routing 它甚至比路由具有更多的帮助功能。但特别是对于大型应用程序,通常需要在nuxt上设置 |
![]() |
Bruno · Vue。js根据条件绑定到类 6 年前 |
![]() |
moh · 在angular 5 app的标头中设置JWT标记 7 年前 |
![]() |
espresso_coffee · 单页应用程序框架和登录页? 7 年前 |
|
Iqbal DP · SPA网站中的路由器堆叠组件 7 年前 |
![]() |
harsrawa · 关闭浏览器选项卡并退出Angular2应用程序 7 年前 |