2011-01-11 32 views
22

Làm cách nào để tải các tệp js bên ngoài không phù hợp với định dạng node.js. Tôi đang cố gắng nhập thư viện tuần tự json. Tôi có thể làm cái này như thế nào?Làm cách nào để bạn nhập tệp không phải node.js?

+0

được hỗ trợ sẵn sàng cho json (ví dụ: JSON.stringify (obj)), bạn đang tìm kiếm thứ gì đó ngoài bộ tính năng đã được hỗ trợ chưa? – davin

+0

@david Chỉ cần bây giờ và tham khảo trong tương lai. Tôi không muốn phải tìm phiên bản node.js của mọi thứ. – Will03uk

+0

Chắc chắn không nhập thư viện JSON thứ hai (tôi giả sử bạn đang xem json2.js?). JSON.parse() và JSON.stringify() đều được tích hợp vào nút ngay từ đầu. –

Trả lời

33

2 câu trả lời ...

1) đối tượng JSON là built-in để Node.js, vì vậy bạn chỉ có thể gọi JSON.parse() và JSON.stringify(), không có nhu cầu nhập khẩu mã bên ngoài cho trường hợp cụ thể này.

2) để nhập mã bên ngoài, Node.js theo đặc điểm kỹ thuật mô-đun CommonJS và bạn có thể sử dụng yêu cầu()

vì vậy nếu bạn có một tập tin gọi là external.js (trong cùng thư mục với phần còn lại của bạn code):

this.hi = function(x){ console.log("hi " + x); } 

và từ nút bạn làm:

var foo = require("./external"); 
foo.hi("there"); 

bạn sẽ thấy đầu ra hi there

+1

+1 cho this.hi = function (x) {console.log ("hi" + x); } – iwill

3

Viết trình bao bọc hoặc thay đổi mã.

Điều gì sẽ tự động làm cho nó hoạt động? Làm thế nào của Node nghĩa vụ phải biết chức năng nào nên được xuất khẩu hay không? Tất cả những gì bạn có thể làm là điều chỉnh mã để phù hợp với tiêu chuẩn JS chung, nhưng trước khi bạn làm điều đó, hãy kiểm tra API DocsModules Pages trên Wiki Node.js, để xem liệu ai đó đã thực hiện công việc cho bạn hay chưa:)

Nếu bạn viết mã cho mình mà nên làm việc trong một trình duyệt và Node.js bạn có thể sử dụng một wrapper như dưới đây:

(function(node) { 
    // Your Awesome code here 
    if (node) { 
     exports.foo = ... 

    } else { 
     window.foo = ... 
    } 

})((function(){return ('' + this).slice(8, -1) !== 'DOMWindow';})()); 
9

Nếu bạn tin tưởng vào mã (Ý tôi là, thực sự tin tưởng mã), sau đó bạn có thể eval nó:

eval(require('fs').readFileSync('somefile.js', 'utf8')); 

Tôi sẽ không khuyên bạn làm điều này với mã từ xa (vì nó có thể thay đổi mà bạn không biết) nhưng nếu bạn có bản sao cục bộ thì sẽ ổn thôi.

+4

Đây là một câu trả lời khủng khiếp. Và tôi yêu nó. –

+0

Một yêu cầu đơn giản như trong câu trả lời được chấp nhận hoạt động tốt hơn việc đọc JSON. Ngoài ra nó là có lợi nếu JSON là một tập tin cấu hình và bạn muốn tiêm nó vào tập tin .js của bạn bằng cách sử dụng webpack, ba lô, vv – Ozil

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