Reactjs:classes/prototypes 在我们的应用程序中有任何位置吗?
Reactjs: Do classes/prototypes have any place in our applications?
一位 O.O 开发人员将他的 T运行 定位到模块世界
我几乎所有的 JavaScript 编码经验都在 React 中,而且我构建的几乎所有内容都严格使用 React Components、Stores、Actions 和 Dispatcher。
除此之外,我尝试抽象的所有内容都已放入辅助模块中。(XUtils、YUtils WebAPIUtils 等)
我哪里搞糊涂了
但是昨天我 运行 遇到了一个问题,这表明我对 React 的理解存在差距,因为 我发现自己想要创建一个助手 class/prototype(无论你喜欢封装什么你的代码)添加到组件中,因为典型的导入模块只有方法,而我需要一些可以封装变量的东西。
感觉不对,但我无法解释为什么我觉得我无法将 classes/prototypes 插入到我的 React 代码的任何部分。
问题:
我们所有的助手 类 是否应该将抽象 away/delegate 代码限制在模块中?如果是这样,你能解释一下为什么 React 编程是一个模块世界背后的哲学吗?
the typical imported module would only have methods whereas I would need something that I could encapsulate variables
模块可以导出任何东西。这是故意的。
export const someConstant = 4;
export class SomeClass {}
export function someFunction() {}
想在一个模块中保留一堆变量,以便您可以在一堆其他模块之间共享它们吗?听起来像一个配置 file/store,去做吧。这是实心图案。
想要创建一个带有 returns class 实例的工厂函数的模块?好主意,立体图案。
想要从模块中导出 class?这就是 React 对其组件的推荐。 React 明确鼓励这种模式,并且通常是一种很好的做法。加油吧。
Should all of our helper classes to abstract away/delegate code be limited to modules?
您可以将任何东西 放入一个模块中,将其导出,然后将其导入到另一个模块中。这是一个值得遵循的好做法,因为它创建了封装并允许代码重用。但是,这段代码是否应该 限于 模块?这是一个奇怪的问题。
- 你的意思是你想抽象代码而不重用它?我不知道那是什么样子。
- 你的意思是你想抽象代码并在不作为模块的情况下共享它?你是怎么分享的?
将代码抽象到一个模块中供应用程序的其余部分使用并不是限制。它是超能力。
can you explain a little bit of the philosophy behind why React programming is a world of modules?
因为编程是一个模块的世界。模块为我们提供了代码重用(DRY pattern), and encapsulation(面向对象编程的一个关键特征)。模块通过限制代码的范围和表面积来鼓励可测试性。经过测试的模块给开发人员 信心 在他们的重用中。模块都是上行的。
一位 O.O 开发人员将他的 T运行 定位到模块世界
我几乎所有的 JavaScript 编码经验都在 React 中,而且我构建的几乎所有内容都严格使用 React Components、Stores、Actions 和 Dispatcher。
除此之外,我尝试抽象的所有内容都已放入辅助模块中。(XUtils、YUtils WebAPIUtils 等)
我哪里搞糊涂了
但是昨天我 运行 遇到了一个问题,这表明我对 React 的理解存在差距,因为 我发现自己想要创建一个助手 class/prototype(无论你喜欢封装什么你的代码)添加到组件中,因为典型的导入模块只有方法,而我需要一些可以封装变量的东西。
感觉不对,但我无法解释为什么我觉得我无法将 classes/prototypes 插入到我的 React 代码的任何部分。
问题:
我们所有的助手 类 是否应该将抽象 away/delegate 代码限制在模块中?如果是这样,你能解释一下为什么 React 编程是一个模块世界背后的哲学吗?
the typical imported module would only have methods whereas I would need something that I could encapsulate variables
模块可以导出任何东西。这是故意的。
export const someConstant = 4;
export class SomeClass {}
export function someFunction() {}
想在一个模块中保留一堆变量,以便您可以在一堆其他模块之间共享它们吗?听起来像一个配置 file/store,去做吧。这是实心图案。
想要创建一个带有 returns class 实例的工厂函数的模块?好主意,立体图案。
想要从模块中导出 class?这就是 React 对其组件的推荐。 React 明确鼓励这种模式,并且通常是一种很好的做法。加油吧。
Should all of our helper classes to abstract away/delegate code be limited to modules?
您可以将任何东西 放入一个模块中,将其导出,然后将其导入到另一个模块中。这是一个值得遵循的好做法,因为它创建了封装并允许代码重用。但是,这段代码是否应该 限于 模块?这是一个奇怪的问题。
- 你的意思是你想抽象代码而不重用它?我不知道那是什么样子。
- 你的意思是你想抽象代码并在不作为模块的情况下共享它?你是怎么分享的?
将代码抽象到一个模块中供应用程序的其余部分使用并不是限制。它是超能力。
can you explain a little bit of the philosophy behind why React programming is a world of modules?
因为编程是一个模块的世界。模块为我们提供了代码重用(DRY pattern), and encapsulation(面向对象编程的一个关键特征)。模块通过限制代码的范围和表面积来鼓励可测试性。经过测试的模块给开发人员 信心 在他们的重用中。模块都是上行的。