Как импортировать файлы без node.js?

Как загрузить внешние js файлы, которые не соответствуют формату node.js. Я пытаюсь импортировать библиотеку сериализации json. Как я могу это сделать?

Ответ 1

2 ответа...

1) объект JSON встроен в node.js, поэтому вы можете просто вызвать JSON.parse() и JSON.stringify(), нет необходимости импортировать внешний код для этого конкретного случая.

2) для импорта внешнего кода node.js следует спецификации модуля CommonJS, и вы можете использовать require()

поэтому, если у вас есть файл с именем external.js(в том же каталоге, что и остальная часть вашего кода):

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

и node:

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

вы увидите вывод hi there

Ответ 2

Если вы доверяете коду (я имею в виду действительно доверяю коду), вы можете eval его:

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

Я бы не рекомендовал делать это с помощью удаленного кода (потому что он может измениться без вашего ведома), но если у вас есть локальная копия чего-то, тогда это должно быть хорошо.

Ответ 3

Напишите обертки или измените код.

Что должно автоматизировать работу? Как Node должен знать, какие функции должны экспортироваться или нет?

Все, что вы можете сделать, это настроить код в соответствии со стандартом Common JS, но прежде чем вы это сделаете, проверьте Документы API и Страницы модулей в wiki Node.js, чтобы убедиться, что кто-то уже выполнил эту работу для вас:)

Если вы сами пишете код, который должен работать в браузере и Node.js, вы можете использовать обертку, например следующую:

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

    } else {
        window.foo = ...
    }

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