簡體   English   中英

要求原型內部還是外部的功能?

[英]require function inside or outside of 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 = _;

謝謝。

由於這是一個node.js模塊,因此這里有幾個注意事項:

  1. require()是同步的。 因此,您不希望在實時服務器請求中使用它,因為這會阻止服務器的可伸縮性。 在初始化模塊並初始化服務器時,通常需要使用require()一次。

  2. 在node.js模塊中聲明的變量僅限於模塊。 從技術上講,模塊范圍在模塊函數內部,因此在那里聲明的任何變量都已經是局部變量,因此不需要任何額外的范圍保護。

  3. 模塊被緩存。 因此,如果在同一路徑上多次執行require() ,則速度非常快。 在第一次實際加載和初始化模塊之后,所有后續調用都會返回相同的緩存模塊句柄。 因此,不要試圖弄亂代碼的結構以減少調用require()的位置數量。 編寫干凈的代碼,如果require()在同一模塊上調用require()幾次,那沒什么大不了的。

在不同的文件中反復要求相同或相似的功能。 是否更好地要求范圍內或范圍之外的元素如下所述?

您通常希望在node.js模塊中的最高級別放置require()語句,因為您希望在模塊首次初始化時初始化它們,並且您希望與模塊中的所有代碼共享該模塊句柄。 如果你的代碼足夠復雜,你想在幾個不同的地方為同一個模塊調用require()來保持你的代碼更加分區,那么你可能應該將你的代碼分解成單獨的模塊,讓每個模塊require()它需要自己。

我想它應該在外面,否則我將在我的代碼中創建大量的Element副本,

在模塊的最高范圍之外。 沒有理由不加載模塊一次並與模塊中可能想要使用它的所有代碼共享模塊句柄。


在某些特殊情況下,您可能希望僅在需要模塊時才在運行時在某些特定條件下動態加載模塊。 這很少見,並且由於加載模塊的同步特性而導致性能影響,因此很少這樣做。 因此,我不想在我之前的建議中保持絕對,但也想解釋只按需加載某些內容很少並且會產生后果。

這里的元素應該在_函數范圍內定義,除非它是在IIFE中定義的。 如果它是在IIFE中定義的那么就不存在任何問題。其他元素將暴露在窗口范圍內並使用控制台我們可以覆蓋Element函數。

希望這對你有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM