2011-01-11 8 views
22

Jak załadować zewnętrzne pliki js, które nie pasują do formatu node.js. Próbuję zaimportować bibliotekę serializowaną json. Jak mogę to zrobić?Jak importować pliki non-node.js?

+0

wbudowana obsługa json (np. JSON.stringify (obj)), czy szukasz czegoś poza już obsługiwanym zestawem funkcji? – davin

+0

@david Tylko na teraz i na przyszłość. Nie chcę szukać wszystkich wersji node.js. – Will03uk

+0

Zdecydowanie nie importuj drugiej biblioteki JSON (zakładam, że patrzysz na json2.js?). JSON.parse() i JSON.stringify() są wbudowane w węzeł od samego początku. –

Odpowiedz

33

2 odpowiedzi ...

1) przedmiot JSON jest wbudowany w node.js, więc można po prostu zadzwonić JSON.parse() i JSON.stringify(), nie ma potrzeby importowania kod zewnętrzny dla tego konkretnego przypadku.

2) do importu kodu zewnętrznego, node.js następująco specyfikację modułu CommonJS i można użyć require()

więc jeśli masz plik o nazwie external.js (w tym samym katalogu, co resztę swojego kod):

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

i od węzła zrobić:

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

widać wyjście hi there

+1

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

3

Napisz opakowania lub zmień kod.

Co powinno automagicznie sprawdzi? W jaki sposób Node powinien wiedzieć, które funkcje powinny zostać wyeksportowane, czy nie?

Wszystko, co możesz zrobić, to dopasować kod do standardu Common JS, ale zanim to zrobisz, sprawdź na Wiki Node.js na Wiki Node.js i sprawdź, czy ktoś już wykonał zadanie:)

Jeśli napisać kod siebie, że powinien działać w przeglądarce i node.js można użyć opakowanie jak na następujący:

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

    } else { 
     window.foo = ... 
    } 

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

Jeśli ufasz kodu (to znaczy, naprawdę zaufanie kod), możesz wtedy eval it:

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

Nie polecam robić tego ze zdalnym kodem (bo może się to zmienić bez twojej wiedzy), ale jeśli masz lokalną kopię czegoś, to powinno być dobrze.

+4

To jest straszna odpowiedź. I kocham to. –

+0

Proste wymaganie, ponieważ w zaakceptowanej odpowiedzi działa lepiej niż czytanie JSON. Również jest korzystne, jeśli JSON jest plikiem konfiguracyjnym i chcesz go wprowadzić do pliku .js za pomocą pakietu internetowego, plecaka itp. – Ozil