【问题标题】:Mvc manage context and reusable componentsMvc 管理上下文和可重用组件
【发布时间】:2015-05-17 17:40:48
【问题描述】:

我正在尝试为 Web 应用程序创建一个带有分层路由器的 MVC 架构。 目标是以清晰的模式管理所有业务逻辑和视图。

让我举个例子:

  1. 调用路径索引
  2. 索引控制器调用;它负责将视图插入页面。

现在的问题是:

  1. 如何管理所需的模型和集合或服务实例?它们必须存放在哪里?如果我将它们存储在控制器中,如何从外部资源访问它们?

  2. 如何管理所有没有专用路由的 UI 组件(例如随处可见的登录覆盖调用)及其业务逻辑和所需的对象实例?

我正在使用带有 Flux 模式的 React。 我发现的一种解决方案是创建控制器而不将它们直接映射到路由。通过这种方式,我们可以在路由处理程序和另一个控制器中使用控制器。 在这种情况下,我们怎样才能让 Controller 可以从任何地方访问?

我知道这取决于使用案例,但我正在努力寻找最佳实践,以便拥有清晰的管理模式。

提前致谢!

【问题讨论】:

    标签: javascript reactjs hmvc reactjs-flux


    【解决方案1】:

    这是一个非常开放的问题,但我会尽力回答。

    1. 在 React 中管理依赖项的方法是将它们作为 props 传递。通过将它们作为 props 传递或传递它们作为 props 管理的数据,接收组件不必知道它们来自哪里。你将这种类型的决策尽可能地推到层次结构中。这样一来,您最终将所有布线集中在一个地方,这很好。如果你使用react-router,你需要设置一个路由handler组件到一个只获取依赖的组件,然后渲染另一个传入所需依赖的组件。

    2. 最明显的方式是将登录组件需要的依赖传递给渲染登录组件的组件。它的好处是清晰和具体,但缺点是您需要将这些依赖关系传递到所有地方,并且很容易错过一些。 React 中有一个叫做context 的东西,它可以让组件树共享一个上下文,而无需传递它。您可以在此处找到更多信息:https://www.tildedave.com/2014/11/15/introduction-to-contexts-in-react-js.html。另一种选择当然是将登录组件与其所需的服务耦合,只需直接导入即可。好处是更容易理解,缺点是您将组件与其依赖项耦合在一起。

    【讨论】:

    • 感谢您的回复!我不喜欢反应路由器,它给反应更多的责任。 React 是 ViewModel,它不能管理路由。我会瞥一眼以反应上下文!现在谢谢!
    • 我不太同意。 React 不是 ViewModel,它是 View,它需要一个 ViewModel/Model 来渲染一些东西。但是 React 并不关心你使用什么 Model 或 ViewModel 实现。
    • 有责任的不是 React,而是 React Router。两个独立的库。 React Router 只是使用熟悉的 JSX 语法来声明(可能是嵌套的)路由,我觉得这非常好。
    • 对不起,我喜欢把所有的对象分开。我发现很难通过外部配置使用反应路由器,如果我想创建片段,如果代码动态添加路由,这可能很难!恕我直言
    • 我并不是要说服你使用 React Router,我相信你的担忧是有道理的。只是想为您和其他读者发表我的意见。
    猜你喜欢
    • 2018-05-23
    • 2014-07-10
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多