Reactjs:我们的应用程序中是否有类/原型?

时间:2015-12-22 03:57:29

标签: javascript module reactjs flux reactjs-flux

O.O开发人员将他转变为模块世界

我的几乎所有JavaScript编码经验都在React中,几乎所有我构建的都严格使用React Components,Stores,Actions和Dispatcher。

除此之外,我尝试抽象的所有内容都已放入辅助模块中。(XUtils,YUtils WebAPIUtils等)

我感到困惑的地方

但是昨天我遇到了一个问题,这个问题向我展示了我对React的理解,因为我发现自己想要创建一个帮助器类/原型(但是你想要封装你的代码)来添加到组件,因为典型的导入模块只有方法,而我需要一些可以封装变量的东西。

感觉不对,但我无法解释为什么我觉得我无法将类/原型插入到我的React代码的任何部分。

问题:

我们所有的抽象/委托代码的助手类是否应仅限于模块?如果是这样,你能解释一下为什么React编程是一个模块世界背后的哲学吗?

1 个答案:

答案 0 :(得分:1)

  

典型的导入模块只有方法,而我需要一些可以封装变量的东西

模块可以导出任何内容。这是故意的。

export const someConstant = 4;
export class SomeClass {}
export function someFunction() {}

想要在模块中保留一堆变量,以便在一堆其他模块之间共享它们吗?听起来像配置文件/商店,去吧。这是一个坚实的模式。

想要创建一个带有返回类实例的工厂函数的模块吗?好主意,扎实的模式。

想要从模块导出类吗?这就是React推荐的组件。 React明确鼓励这种模式,并且通常是一种很好的做法。去吧。

  

我们所有的抽象/委托代码的助手类是否应仅限于模块?

您可以将任何放入模块中,将其导出,然后将其导入另一个模块。这是一个很好的做法,因为它创建了封装并允许代码重用。但是,这段代码应该限制到模块吗?这是一个奇怪的问题。

  • 你的意思是你想抽象代码而不重用它吗?我不知道那是什么样的。
  • 你的意思是你想抽象代码并分享它而不是模块吗?你是如何分享的?

将代码抽象到应用程序其余部分使用的模块中并不是限制。它是一个超级大国

  

你能解释一下为什么React编程是一个模块世界背后的哲学吗?

因为编程是一个模块世界。模块为我们提供了代码重用(DRY pattern)和encapsulation(面向对象程序设计的一个关键特性)。模块通过限制代码的范围和表面区域来鼓励可测试性。经过测试的模块为开发人员提供了置信度。模块都有好处。