同构/通用javascript应用程序的通用模块格式

时间:2015-11-06 17:07:49

标签: javascript node.js systemjs isomorphic-javascript stealjs

我试图编写同构/通用应用程序,将所有内容组合在一起有很多复杂功能。

我需要的是常见的(不要与commonjs混淆)客户端和服务器的模块格式,具有动态加载和es6 / 7脚本的可能性(如async / await等)

此外,我希望它在运行时不需要任何打包工具(如webpack

我已经尝试过systemjs,但问题是Systemjs无法以与节点需要相同的方式加载nodejs模块,例如

System.import("express")

的工作方式不同
require("express")

所以我试图在服务器端(+ babel用于转换)和浏览器中使用commonjs格式

在使用steal.js的浏览器中,它还使用了系统内的systemjs,可以在客户端加载npm模块并在运行时进行转换,但它不能自动转换commonjs模块,因为systemjs自动转换为esm / es6'格式:(

我需要用systemjs / stealjs强制转换cjs模块的方法,或者让System.import以可接受的方式在服务器上工作

或许我朝错误的方向前进?

1 个答案:

答案 0 :(得分:0)

系统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"
        }
    }
})