2016-12-19 13 views
11

Hiện tại, tôi có 4 Lớp con trong mỗi tệp riêng. Tôi đang yêu cầu tất cả chúng trong cùng một tệp. Tôi tự hỏi nếu tôi có thể chứa tất cả 4 của những lớp học trong một mô-đun duy nhất. Hiện nay, tôi đang nhập khẩu chúng như thế nàyBạn có thể xuất nhiều lớp từ một Mô-đun Nodejs không?

var Jack = require('./Jack.js'); 
var JackInstance = new Jack(); 
var Jones = require('./Jones.js'); 
var JonesInstance = new Jones(); 

Tôi muốn nhập chúng như thế này

var People = require('./People.js'); 
var JackInstance = new People.Jack(); 

Hoặc thậm chí

var Jack = require('./People.js').Jack; 
var JackInstance = new Jack(); 

lớp của tôi được định nghĩa như vậy

class Jack{ 
    //Memeber variables, functions, etc 
} 

module.exports = Jack; 

Trả lời

34

Có, bạn có thể xuất nhiều lớp.

ví dụ: People.js

class Jack{ 
    //Memeber variables, functions, etc 
} 

class John{ 
    //Memeber variables, functions, etc 
} 

module.exports = { 
    Jack : Jack, 
    John : John 
} 

Và, bạn có thể truy cập vào các lớp như bạn đã đề cập một cách chính xác.

var People = require('./People.js'); 
var JackInstance = new People.Jack(); 
var JohnInstance = new People.John(); 
+2

REALLY !? Tôi đã thử phương pháp này chính xác trước đó! Hãy để tôi thử lại. Tôi sẽ chấp nhận ass của bạn càng sớm càng tốt. –

+1

Khi nó quay ra, tôi chỉ có một lỗi đánh máy. Cảm ơn!! –

+1

Bạn được chào đón :) –

27

Bạn cũng có thể làm điều này trong một hình thức ngắn hơn, sử dụng destructuring assignments (được hỗ trợ natively bắt đầu từ Node.js v6.0.0):

// people.js 
class Jack { 
    // ... 
} 

class John { 
    // ... 
} 

module.exports = { Jack, John } 

Nhập khẩu:

// index.js 
const { Jack, John } = require('./people.js'); 

Hoặc thậm chí như thế này nếu bạn muốn có bí danh yêu cầu bài tập:

// index.js 
const { 
    Jack: personJack, John: personJohn, 
} = require('./people.js'); 

Trong trường hợp thứ hai personJackpersonJohn sẽ tham chiếu các lớp học của bạn.

Một lời cảnh báo:

Destructuring có thể nguy hiểm trong ý nghĩa đó nó dễ bị sản xuất lỗi bất ngờ. Nó tương đối dễ dàng để quên dấu ngoặc nhọn trên export hoặc vô tình bao gồm chúng trên require.

+0

Bạn xứng đáng nhận được nhiều điểm hơn. – John

+0

Cảm ơn bạn, John. – Nevertheless

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