要求原型内部还是外部的功能?

时间:2016-05-15 06:39:32

标签: javascript node.js prototype

我经常使用这些原型:

在不同的文件中反复要求相同或类似的功能。 在范围内或范围之外要求Element会更好吗?

我想它应该在外面,否则我将在我的代码中创建大量的Element副本,否?

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 = _;

感谢。

2 个答案:

答案 0 :(得分:3)

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

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

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

  3. 模块已缓存。因此,如果您在同一路径上多次执行require(),则速度非常快。在第一次实际加载和初始化模块之后,所有后续调用都会返回相同的缓存模块句柄。因此,不要试图弄乱代码结构以减少调用require()的位置数量。编写干净的代码,如果需要在同一个模块上调用require()几次,那没什么大不了的。

  4.   

    在不同的情况下反复要求相同或相似的功能   文件。在范围内要求Element还是更好?   超出范围,如下所述?

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

      

    我想它应该在外面,否则我会创造很多   我的代码遍布元素的副本

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

    在某些特殊情况下,您可能希望仅在需要模块时才在运行时在某些特定条件下动态加载模块。这很少见,并且由于加载模块的同步特性而导致性能影响,因此很少这样做。因此,我不想在我之前的建议中保持绝对,但也想解释只按需加载某些内容很少并且会产生后果。

答案 1 :(得分:0)

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

希望这会对你有所帮助。