2014-11-02 18 views
6

Tôi đã học Express/Node/Jade và bây giờ trong tập tin Jade tôi muốn bao gồm một tập tin javascript từ thư mục công cộng chỉ cho trang. Ví dụ, trong tập tin ngọc Tôi gõ này:Jade: tải javascript bên ngoài và chức năng gọi

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

và test.js bên trong tôi có một hàm

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

sau đó tôi cố gắng để gọi hàm trong Jade bởi

- var test_response = check_test() 

hơn tôi nhận được lỗi nói rằng "undefined không phải là một hàm" và test.js không tải gì cả. Rõ ràng Jade không tải tệp, chúng chỉ chuyển thành mã HTML.

Tôi xem câu hỏi của người khác và đây là câu hỏi gần nhất tôi có thể tìm thấy nhưng không cung cấp câu trả lời rõ ràng về việc cần làm. In Jade, how can you call a function in an external Javascript

Vì vậy, câu hỏi của tôi là: Trong trường hợp này, tôi nên làm gì để làm cho nó hoạt động?

Tôi không muốn tải tệp trong layout.js vì tôi chỉ muốn sử dụng test.js bởi trang này.

Trả lời

3

Vâng ... Trong trường hợp đầu tiên, nó là khác nhau những gì xảy ra trong trình duyệt của những gì xảy ra trên máy chủ. Vì vậy, Jade là một kết xuất của HTML, do đó nếu bạn đang ở trong trình duyệt. Đó là những gì ExpressJS vận chuyển, tức là rendering Jade. Nếu bạn muốn gọi, Javascript HTML của bạn (Rendering of Jade), sẽ cho bạn thấy nơi Javascript. Đối với exmaple

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

Trong myTemplate.jade

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

Trong "./outJavascripts/test.js"

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

Nếu bạn làm điều này, bạn sẽ nhận ra rằng nó đang chạy, tệp "./outJavascripts/test.js" trong trình duyệt. Và chức năng "check_test" không bao giờ chạy trong máy chủ.

1

Hoặc đặt tất cả các thư mục trong một thư mục chung, ví dụ public

public -javascripts -stylesheets -images

và sau đó phơi bày rằng Public Folder

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

có nghĩa là bạn có thể

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

0

Lưu tập tin JS của bạn và liên kết nó trong Jade bạn nộp như:

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

Sau đó gọi hàm, tôi đang sử dụng một nút ở đây ví dụ:

button(class="btn", onclick='functionName()') 
Các vấn đề liên quan