2012-04-15 29 views
10

Trước hết tôi mới làm quen với các nút và thứ hai bên dưới là câu hỏi của tôi. Làm thế nào để bao gồm mô-đun mạng nodejs trong js được nạp trong html ??Làm thế nào để bao gồm các mô-đun nodejs trong các tập tin html?

Tệp js của tôi trông như thế này.

net = require('net'); 
var client = net.createConnection(8000, '192.168.15.59'); 
client.on('connect',function(){ 
console.log('Connected To Server'); 
}); 
client.on('data',function(data){ 
console.log('Incoming data:; ' + data); 
}); 

Và tập tin html của tôi là dưới

<html> 
<head> 
<script type="text/javascript" src="sample.js"></script> 
<script type="text/javascript"> 
function displaymessage(message) 
{ 
alert(message); 
client.write(message, encoding='utf8') 
} 
</script> 
</head> 

<body> 
<form> 
<input type="text" id="msg"></input> 
<input type="button" value="Click me!" onclick="displaymessage(document.getElementById('msg').value)" /> 
</form> 
</body> 
</html> 

Khi tôi chạy các tập tin HTML trong trình duyệt của nó mang lại cho dưới đây lỗi

Uncaught ReferenceError: require is not defined

trong khi nếu tôi chạy file js trực tiếp trong nodejs (như thế này "node sample.js) sử dụng dòng lệnh thì nó hoạt động tốt.

Cảm ơn trước.

+7

NodeJS chạy trên máy chủ ** **. Tập lệnh bên trong các tệp HTML chạy trên ** client **. Bạn không bao gồm mã máy chủ trên máy khách. Thay vào đó, bạn gửi * tin nhắn * đến mã máy chủ từ máy khách và diễn giải kết quả. –

Trả lời

2

Để làm rõ những gì @ T.J.Crowder đã nói trong nhận xét: Những gì bạn đang cố gắng làm là không thể.

NodeJS là khung công tác phía máy chủ. Javascript bạn viết trong NodeJS được thực hiện trên máy chủ. Javascript bạn viết cho các trang HTML của bạn được thực thi trên máy khách. Máy khách và máy chủ không thể gọi trực tiếp các phương thức của nhau. Đây là những gì AJAX và các kỹ thuật giao tiếp máy khách-máy chủ không đồng bộ khác được sử dụng cho.

+2

Tôi sẽ biết ơn nếu bạn có thể cung cấp bất kỳ liên kết nào đến các ví dụ như vậy, nơi tôi có thể tìm thấy sự giao tiếp như vậy giữa máy chủ/máy khách. –

+2

https://www.google.com/search?q=ajax+with+node+js –

11

NodeJS chạy trên máy chủ . Tập lệnh bên trong các tệp HTML chạy trên máy khách . Bạn không bao gồm mã máy chủ trên máy khách. Thay vào đó, bạn gửi thư đến mã máy chủ từ máy khách và diễn giải kết quả. Vì vậy, cách tiêu chuẩn để thực hiện điều này là xác định tài nguyên trên máy chủ tạo nội dung hoặc dữ liệu bạn muốn tạo và truy xuất nội dung hoặc dữ liệu đó từ ứng dụng khách, chỉ sử dụng tải trang bình thường hoặc "ajax" (mặc dù những ngày này , hầu hết mọi người không sử dụng "x" [XML] trong "ajax" [một số vẫn làm], họ sử dụng JSON, văn bản hoặc HTML).

+0

Bạn có thể cung cấp bất kỳ liên kết nào đến các ví dụ như vậy mà tôi có thể tìm thấy thông tin liên lạc đó giữa máy chủ/ứng dụng khách –

+1

@FarooqArshed: Thật khó để thực hiện tìm kiếm liên quan đến lập trình web mà không vấp phải các ví dụ về ajax. Nó có nghĩa đen sẽ là một sự bất hòa với anh đào-chọn chúng cho bạn. –

+0

@ tj-crowder Nếu bạn có một mô-đun mà bạn muốn sử dụng trên chương trình phụ trợ (thông qua node.js) và cũng trên giao diện người dùng (với tập lệnh bằng html), bạn không muốn duy trì hai phiên bản - bạn chỉ muốn có một tệp .js duy nhất cho cả hai trường hợp. Vấn đề là phiên bản nút có xuất/yêu cầu kích hoạt lỗi trên mã máy khách. Xem [câu hỏi này] (http: // stackoverflow.com/questions/14532071/include-js-files-với-html-và-node-js) – wcochran

1

Lý do "yêu cầu không được xác định" là do "yêu cầu" là từ khóa của node.js, nhưng đó không phải là từ khóa trong trình duyệt.

Node.js là một máy ảo (hoặc ngữ cảnh chạy) cho javascript, trình duyệt cũng là một máy ảo cho javascript. Nhưng chúng cực kỳ khác biệt. Bạn không thể sử dụng một từ khóa được hỗ trợ trong một máy ảo trong một máy ảo khác, giống như bạn có thể sử dụng C/C++ trên cả Windows và Linux, nhưng có nhiều thư viện chỉ có trong Linux hoặc Windows.

Các vấn đề liên quan