Общий формат модуля для изоморфного / универсального javascript-приложения
Я пытаюсь написать изоморфное / универсальное приложение, и есть много сложностей, чтобы связать все вещи вместе.
Что мне нужно, так это общий (не путать с commonjs) формат модулей для клиента и сервера с возможностью динамической загрузки и сценариев es6/7 (например, async / await и т. Д.)
Также я хочу, чтобы он выполнялся во время выполнения без каких-либо инструментов упаковки, таких как веб-пакет
Я пробовал systemjs, но проблема в том, что Systemjs не может загрузить модули nodejs так же, как это требует узел, например
System.import("express")
не работает так же, как
require("express")
Поэтому я пытаюсь использовать формат commonjs как на стороне сервера (+babel для переноса), так и в браузере.
В браузере я использую steal.js, он также использует systemjs изнутри и может загружать модули npm на стороне клиента и переносить его во время выполнения, но он не может автоматически переносить модули commonjs, потому что systemjs автоматически переносит только 'esm/es6 формат:(
Мне нужен способ принудительной транспортировки модулей cjs с помощью systemjs/stealjs или заставить System.import работать на сервере приемлемым способом
Или, может быть, я двигаюсь в неправильном направлении?
1 ответ
Система Js может импортировать модули CJS. Я в настоящее время создаю изоморфный express
/react
/system js
/jspm
приложение сам.
В документации справедливо сказано здесь: https://github.com/systemjs/systemjs/blob/master/docs/module-formats.md
попробуйте добавить что-то вроде этого в конфигурацию вашей системы:
System.config({
baseURL: "/",
defaultJSExtensions: true,
meta: {
"*js": {
format: "cjs"
}
}
})