2014-11-02 9 views
6

Uczyłem się Express/Node/Jade, a teraz w pliku Jade Chcę dołączyć plik javascript z folderu publicznego tylko dla strony. Na przykład w pliku jade I wpisz:Jade: załaduj zewnętrzne javascript i wywołanie funkcji

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

i wewnątrz test.js Mam funkcji

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

następnie staram się wywołać funkcję w Jade przez

- var test_response = check_test() 

niż otrzymałem komunikat, że "niezdefiniowana nie jest funkcją", a test.js w ogóle nie jest załadowany. Wygląda na to, że Jade nie ładuje pliku, tylko przekształca się w kod HTML.

patrzę pytanie kogoś innego i jest to najbliżej można znalazłem, ale to nie daje jasnej odpowiedzi, co zrobić. In Jade, how can you call a function in an external Javascript

Moje pytanie brzmi: w tym przypadku, co powinienem zrobić, aby działało?

nie chcę, aby załadować plik w layout.js ponieważ chcę tylko test.js być jedynie korzystanie przez strony.

Odpowiedz

3

Cóż ... Po pierwsze, dzieje się w przeglądarce to, co dzieje się na serwerze. Więc Jade jest renderowaniem HTML, więc jeśli jesteś w przeglądarce. To właśnie przesyłka ExpressJS, czyli renderowanie Jade. Jeśli chcesz zadzwonić, twój HTML Javascript (Rendering of Jade), powinien pokazać ci, gdzie JavaScript. Dla exmaple

w 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"); 
}); 

W myTemplate.jade

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

w "./outJavascripts/test.js"

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

Jeśli to zrobisz, zdasz sobie sprawę, że jest uruchamiany, plik "./outJavascripts/test.js" w przeglądarce. A funkcja "test_test" nigdy nie działa na serwerze.

1

Albo umieścić wszystkie foldery we wspólnym folderze, na przykład public

public -javascripts -stylesheets -images

a następnie wystawiać tego folderu publicznego

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

który oznacza, że ​​można

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

0

Zapisz plik JS i połączyć je w swojej Jade jak plik:

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

Następnie wywołać funkcję, używam przycisku tu na przykład:

button(class="btn", onclick='functionName()') 
Powiązane problemy