我们正在运行一个设置,其中在后端的CommonJS / ES5中编写的React组件也需要在前端可用,以便在服务器和客户端上进行React渲染。
我试图弄清楚如何将React组件从JSX转换为JS以及从CommonJS到AMD。
现在,很可能没有真正的方法可以从CommonJS“转移”到AMD。所以我们可以在ES6中编写它。如果我们在ES6中编写React组件代码,我们如何将其转换为AMD?我无法找到这样做的gulp插件。
我试过了:
http://www.sitepoint.com/transpiling-es6-modules-to-amd-commonjs-using-babel-gulp/
但我相信babel({modules:'AMD'})
风格很旧,我不认为Babel知道模块属性是什么。
答案 0 :(得分:2)
您可以使用Browserify的独立模式创建Universal Module Definitions。
browserify module-name.js -o bundle.js --standalone moduleName
这将捆绑的模块包装在一个代码块中,该代码块将其导出为CommonJS模块,AMD模块和后备到名为moduleName
的全局变量。
如果您也想在ES6和JSX中编写模块,请记住包含适当的变换。
browserify module-name.js -o bundle.js --standalone moduleName -t [ babelify --presets [ es2015 react ] ]
答案 1 :(得分:2)
如果您拥有所有ES6模块,您可以通过添加
告诉Babel 6编译为AMDplugins: [
"babel-plugin-transform-es2015-modules-amd"
}
到您已有的预设/插件的Babel配置。如果您有一些CommonJS模块,其他答案更好。
答案 2 :(得分:0)
我目前解决这个问题的方法是使用这些Gulp任务
在我的项目中我们有
EXTRA_OECONF = "--enable-cups"
我们想做两件事:
这是目前有效的方法:
+DEPENDS += " cups "
答案 3 :(得分:0)