Как импортировать файлы без 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';})());