Общий формат модуля для изоморфного / универсального 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"
        }
    }
})
Другие вопросы по тегам