2010-11-11 72 views
1

我寫了很多Javascript代碼這些天,我很好地使用JQuery。我想知道是否被認爲是邪惡的創建奇怪的全局變量名稱。我知道很多JavaScript框架(如JQuery)使用美元字符; $,但這大大簡化了代碼,因爲它可以做很多事情。

我想創造我的代碼$$全局變量將被定義爲如下的:

function $$(tagName) 
{ 
    return $('<' + tagName + ' />'); 
} 

這樣做的好處是,我的代碼(1)抽象出來創建一個新的邏輯元素,(2)使代碼更簡潔,最後(3)我幾乎可以作爲簡明創建中的JavaScript的HTML元素HTML本身因爲jQuery有這麼多的其他選擇,以鏈斷:

$$('div').attr({ id : 'myDiv', 'class' : 'MyDivClass' }).append(
    $$('ul').append(
     $$('li').text('first'), 
     $$('li').text('second'), 
     $$('li').text('third') 
    ); 
); 

你相信以上創建0123的方法是合法的,或者你認爲它是否定的?

+0

這顯然是一個意見問題,我個人反對:http://enterprise-js.com/14 – 2010-11-11 14:34:02

回答

2

我更喜歡明確,有意義,自我記錄名稱在JQuery風格$年的任何一天。

此外,我發現它的混淆,相同的名稱具有不同的含義,具體取決於它使用的上下文。像javascript中的$或JavaScript中的this,並將儘可能避免使用它們。

編輯:在我看來,這應該是由用戶來決定他是否要使用速記名他所使用的框架。它只需要一行代碼:

var $ = jQuery; 

當我看到它使用jQuery的網頁,我看到的是一個很大的混亂與美元的跡象表明,在不同的地方做不同的事情淹沒。如果圖書館爲其提供的功能使用了有意義的名稱,那麼解讀其他人的代碼將會容易得多。作爲一種語言本身,Javascript已經很難並且不可讀。

+0

將一個框架的整個命名空間掛在一個簡單易記的,易於使用的 - 識別符號對我來說並不壞。無論如何,替換「$」(或「jQuery」)如何作爲整個框架的自我記錄名稱? – Pointy 2010-11-11 14:33:23

+0

也許我使用的其他框架使用'$'。至少通過使用'jQuery'來確定代碼中使用的框架。 – Jan 2010-11-11 14:37:44

+0

是的,的確如此。畢竟只有一個「$」:-)然後是「Underscore.js」庫,爲此選擇的符號「_」實際上是自我記錄的! – Pointy 2010-11-11 14:46:44

1

我個人不認爲它補充說,許多功能,以佔「命名空間污染」,更何況人閱讀你的代碼是不是你熟悉的方法可能的混淆。

這只是節省了方法的每次調用一個微不足道的幾個字符,所以在這方面,它只能被認爲是語法糖的形式。在我看來,利弊大於專業人士。

0

我不認爲這是一般的「邪惡」的,但如果你要彈出的東西到全局命名空間與「尊貴」的名字,如果它是一些更有趣的可能會更好。出於您的目的,鑑於您的示例代碼,jQuery微模板系統無論如何都可能是更好的方法。

+0

我與所有不同的JQuery模板產品的問題是,除了模板之外,您必須在頁面上同時包含JavaScript。 – 2010-11-11 14:41:12

2

這當然是有意見的,但如果我是新來的應用程序,我會去查找以瞭解該代碼的功能是什麼。此外,該功能很簡單,其他開發人員可能不會使用它,所以你最終會混淆技術混淆。實際上,這是如此糟糕?

$('<div/>').attr({ id : 'myDiv', 'class' : 'MyDivClass' }).append(
    $('<ul/>').append(
     $('<li/>').text('first'), 
     $('<li/>').text('second'), 
     $('<li/>').text('third') 
    ) 
); 
1

如果你看看建築的例子,這將是一件好事。 jQuery。 它不能與幾個全局變量/函數一起工作,只有一個全局對象需要「jQuery」。 其他的一切都是這個對象的屬性,所以他們已經縮小了命名衝突。

在$$的特殊情況下:可能有時您需要使用prototypejs,但是您無法使用,因爲prototypejs已經使用$$。

所以我的建議是:創建一個全局對象,你自己的「庫」,給它一個獨特的名字,讓你的函數/變量成爲這個對象的成員。