需要原型内部还是外部的函数?

我经常使用这样的原型:

在不同的文件中要求相同或相似的function。 要求Element在范围内还是在范围之外,这样做会更好吗?

我想这应该是在外面,否则我会在我的代码中创build大量元素的副本, 不是吗?

 var Element = require("./Element.js") var _ = function(){ this.element = new Element(); this.stuff; } _.prototype.setStuff = function(stuff){ this.stuff = stuff } _.prototype.doStuff = function(){ this.stuff(); } module.exports = _; 

谢谢。

由于这是一个node.js模块,这里有几个注意事项:

  1. require()是同步的。 因此,您不希望在活动服务器请求中使用它,因为这会阻止服务器的可伸缩性。 当模块被初始化并且你的服务器正在被初始化的时候,你通常会想要使用require()一次。

  2. 在node.js模块中声明的variables仅限于模块。 从技术上说,模块范围在模块函数内部,因此任何声明的variables都已经存在局部variables,因此不需要额外的范围保护。

  3. 模块被caching。 所以,如果你在同一条path上多次require()速度会非常快。 在第一次模块实际加载和初始化之后,所有后续的调用都只返回相同的caching模块句柄。 所以,不要试图弄乱你的代码结构来减less你调用require()的地方的数量。 写干净的代码,如果这需要在同一个模块上调用require()几次,这没什么大不了的。

在不同的文件中要求相同或相似的function。 要求Element在范围内还是在范围之外,这样做会更好吗?

您通常希望在您的node.js模块中将require()语句放在最高级别,因为您希望在模块第一次初始化时将其初始化,并且希望与模块中的所有代码共享该模块句柄。 如果你的代码足够复杂以至于你想在几个不同的地方为同一个模块调用require()来保持你的代码更多的分区,那么你可能应该把你的代码分解成单独的模块,让每个模块require()它需要自己。

我想这应该是在外面,否则我会创build大量的元素的所有在我的代码的副本,

在模块的最高范围之外。 没有什么理由不加载模块一次,并与模块中可能想要使用它的所有代码共享模块句柄。


有一些特殊情况下,只有在需要模块时才可以在运行时只在某些特定条件下dynamic加载模块。 这很less见,并且由于加载模块的同步特性而导致性能下降,所以很less这样做。 所以,我不想在我之前的build议中保持绝对的态度,但也想解释一下,只有按需加载的东西是非常罕见的,并且有后果。

这里元素应该在_函数范围内定义,除非它是在一个IIFE中定义的。 如果它是在IIFE中定义的,那么就不会有任何问题,否则元素将暴露在窗口范围内,并使用控制台我们可以覆盖Element函数。

希望这可以帮助你。