2014-11-02 20 views
6

Ich lernte Express/Node/Jade und jetzt in der Jade-Datei möchte ich eine Javascript-Datei aus dem öffentlichen Ordner nur für die Seite enthalten. Zum Beispiel in Jade Datei ich diesen Typ:Jade: externe Javascript laden und Funktion aufrufen

script(src='/javascripts/test.js') 

und innen test.js Ich habe eine Funktion

function check_test(){ 
    return "It's working!" 
} 

dann versuche ich die Funktion in Jade nennen von

- var test_response = check_test() 

als ich bekam den Fehler sagen, dass "undefined ist keine Funktion" und test.js wird überhaupt nicht geladen. Offenbar Jade lädt die Datei nicht, sie verwandeln sich nur in HTML-Code.

Ich schaue jemand anderen Frage und das ist die nächste, die ich finden kann, aber es bietet keine klare Antwort von was zu tun ist. In Jade, how can you call a function in an external Javascript

Also meine Frage ist: In diesem Fall, was soll ich tun, damit es funktioniert?

Ich möchte nicht die Datei in layout.js laden, da ich nur test.js nur von dieser Seite verwenden möchte.

Antwort

3

Nun ... In erster Linie ist es anders, was im Browser passiert, was auf dem Server passiert. Also Jade ist ein Rendering von HTML, also wenn du im Browser bist. Es ist was ExpressJS Versand, dh Rendering Jade. Wenn du anrufen willst, sollte dein HTML-Javascript (Rendering von Jade) dir zeigen, wo das Javascript ist. Für exmaple

in Server.js

// Get the Javascript in the browser 
app.use("/javascripts", express.static("./outJavascripts")); 
// Get the URL 
app.all("/", function(req, res){ 
    // Render the Jade and Send for the client (Browser) 
    req.render("myTemplate.jade"); 
}); 

In myTemplate.jade

script(src='/javascripts/test.js') 

In "./outJavascripts/test.js"

function check_test(){ 
    console.log("It's working! :D"); 
    return "It's working!"; 
} 

Wenn Sie dies tun, Sie werden feststellen, dass es ausgeführt wird, die Datei "./outJavascripts/test.js" im Browser. Und die Funktion "check_test" läuft nie auf dem Server.

1

Oder setzen Sie alle Ordner in einem gemeinsamen Ordner, zum Beispiel public

public -javascripts -stylesheets -images

und dann aussetzen, dass öffentliche Ordner

app.use(express.static(path.join(__dirname, 'public')));

das heißt, Sie können

script(src='/javascripts/script.js') link(rel='stylesheet', href='/stylesheets/style.css')

0

Ihre JS-Datei speichern und verknüpfen Sie es in Ihrer Jade als Datei:

script(src="filepath/yourJSfile.js") 

Dann rufen Sie die Funktion, ich bin eine Taste hier zum Beispiel mit:

button(class="btn", onclick='functionName()') 
Verwandte Themen