2016-07-26 5 views
0

Ich bin neu in Nodejs, ich weiß, $ ist in jQuery verwendet, aber das Tutorial, das ich lerne zeigt mir das folgende Stück Code, der verwirrte mich durch es $

var $ = cheerio.load(res.text); 
    $('#topic_list .topic_title').each(function (idx, element) { 
     var $element = $(element); 
     var href = url.resolve(cnodeUrl, $element.attr('href')); 
     topicUrls.push(href); 
    }); 

kann jemand versuchen, die 5 $ s hier zu erklären? Vielen Dank im Voraus.

+2

_ [Cheerio eine Teilmenge der Kern jQuery implementiert ...] (https://github.com/cheeriojs/cheerio) _ –

+1

Sie können Funktion von etwas zurückgeben und nennen es dann. Wäre das "doc_fn" sinnvoller? – tadman

Antwort

7

So wie Sie eine Variable namens a haben können, können Sie eine Variable namens $ oder _ haben. Google auf Variablennamen in Javascript, die Suche wird weitere Informationen zur Verfügung stellen, aber auf den Punkt Ihrer Frage, betrachten Sie dieses:

var a = 1; //creates a variable named a, value is one 
var $ = 1; //creates a variable named $, value is one 

weil es Javascript ist, kann eine Variable halten auch eine Funktion:

var a = function(){return 1;} // calling a() will return one 
var $ = function(){return 1;} // $ is a var whose value is a function. 

nun, wenn Sie eine Funktion, die Sie sehr häufig anrufen, forexample JQuery Bibliothek eine Funktion namens JQuery(), die Elemente und enthält alles andere wickelt, macht es Sinn, eine Verknüpfung zu haben für sie:

function JQuery(){...} //everything that JQuery does 
var $ = JQuery; //now $() is the shorthand for JQuery() 

Auch, weil es Javascript ist, kann eine Funktion einen Wert zurückgeben, oder eine andere Funktion:

var cheerio = { 
    load: function(start){ 
      return function(end){ return start + " " + end } 
    } 
} 

var $ = cheerio.load("hello"); 
$("world"); // will return "hello world" 
$("my friend"); //will return "hello my friend" 

In Ihrem Beispielcode hat $ für ther Rückgabewert von cheerio.load als Abkürzung() Funktion verwendet . so ist $('#topic_list .topic_title') entspricht

cheerio.load(res.text)('#topic_list .topic_title') 

was bedeutet, dass cheerio.load(res.text) wird erwartet, dass eine Funktion zurück, die später aufgerufen werden kann. In der zweiten Zeile des Beispielcodes ist $ also nichts anderes als diese Funktion. Wenn Sie zuvor JQuery verwendet haben, können Sie weiterhin JQuery() anstelle von $() verwenden.

$ Element ist nur ein Variablenname, ein visueller Hinweis, dass es das Ergebnis von $ (Element) ist. Sie könnten genauso leicht gesagt haben var froggy=$(element) aber $ Element ist lesbarer.

+0

Danke Reza, ich fühle mich jetzt besser :) –

1

Sie müssen nicht mit $ verwechselt werden. Hier $ ist nur variabel und nichts, was Sie sonst noch zuweisen können, wenn Sie möchten. Wir verwenden $, weil cheerio jquery ähnlich und einfach zu verstehen ist, die über jquery wissen. Sie können schreiben, wie

var cheerText = cheerio.load(res.text); 
cheerText('#topic_list .topic_title').each(function (idx, element) { 
    var element = cheerText(element); 
    var href = url.resolve(cnodeUrl, element.attr('href')); 
    topicUrls.push(href); 
}); 
Verwandte Themen