2013-01-03 47 views
6

Tôi đã cố gắng sắp xếp bao gồm các tệp js khác trong node.js.Nút js và mới khi sử dụng yêu cầu

Tôi đã đọc tất cả về chức năng yêu cầu và các lựa chọn thay thế khác và quyết định sử dụng hàm require (vì mã sẽ chỉ được sử dụng trên node.js, không phải trong trình duyệt).

Trong mã của tôi, tôi đang sử dụng các nguyên mẫu để tạo ra một 'đối tượng' mà sau này tôi muốn tạo một thể hiện.

Để có được nó để làm việc tôi đã viết code như sau (cho phép gọi nó là vehicle.js):

var util = require('util'); 
var EventEmitter = require('events').EventEmitter; 

module.exports = Vehicle; 

util.inherits(Vehicle, EventEmitter); 

function Vehicle(options) { 
    EventEmitter.call(this); 
    options = options || {}; 
    ... 
} 

Vehicle.prototype._doStartEvent = function(data) { 
    this.emit('start', data); 
}; 

Vehicle.prototype.testRun = function() { 
    this._doStartEvent(); 
}; 

Sau đó, trong js chính của tôi (cho phép gọi nó là server.js), tôi có như sau:

var test = exports; 
exports.Vehicle = require('./vehicle.js'); 

var remoteVehicle = new test.Vehicle({address: "192.168.1.3"}); 

remoteVehicle.on('start', function(d) {console.log('started');}); 

remoteVehicle.testRun(); 

Bây giờ tất cả đều hoạt động tốt, nhưng tôi không hiểu rõ những gì đang diễn ra.

Mối quan tâm chính của tôi là sử dụng var test = exports; và sau đó exports.Vehicle = require(...).

Tôi đã thử thực hiện một cái gì đó như var vehicle = require(...).Vehiclevar vehicle = require(...), với mục tiêu chỉ sử dụng new Vehicle hoặc tương tự, nhưng tôi không thể làm cho nó hoạt động.

Tôi có bị buộc phải sử dụng hàng xuất khẩu không và nếu có thì tại sao?

Xin lưu ý rằng tôi đã sử dụng dự án AR Drone làm ví dụ, mã trên được dựa trên cách họ đã thực hiện mô-đun của họ trong nội bộ. Tham khảo Client.jsindex.js.

+0

này Mastering Node eBook tốt: http://visionmedia.github.com/masteringnode/book. html – Alex

+0

@LeonidBeschastny Làm thế nào điều này là một bản sao? Câu hỏi này được hỏi trước (điều này đã được hỏi vào ngày 3 tháng 1 năm 2013, câu hỏi mà bạn cho rằng đó là bản sao của câu hỏi được yêu cầu vào ngày 11 tháng 7 năm 2013). Nếu bạn cho rằng chúng trùng lặp thì câu hỏi khác là bản sao chứ không phải câu hỏi này. – Metalskin

+0

@Metalskin xin lỗi, tôi đã nhầm lẫn với tiêu đề. Tôi tái đỏ câu hỏi của bạn cẩn thận hơn, và tôi nghĩ rằng tôi đã nhầm lẫn về nó là một bản sao. –

Trả lời

6

kết quả của require là tham chiếu đến đối tượng xuất khẩu có chức năng trong trường hợp của bạn. Chỉ cần gán cho một biến có cùng tên như lớp (hoặc bất kỳ khác) và sử dụng như một tham số để new

var Vehicle = require('./vehicle.js'); 

var remoteVehicle = new Vehicle({address: "192.168.1.3"}); 

remoteVehicle.on('start', function(d) {console.log('started');}); 

remoteVehicle.testRun(); 
+0

Cảm ơn Andrey, đã làm việc. Không chắc bây giờ những gì tôi đang làm không hiệu quả, vì tôi nghĩ tôi đã thử những gì bạn gợi ý. Tôi nghi ngờ tôi đã nhận được bối rối và làm 'var Vehicle = require ('./ vehicle.js'). Xe;' do một số googling tôi đã làm. – Metalskin

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