我正在尝试使用 Babel 调用浏览器内的 JSX 转换。
我使用以下命令在浏览器中加载 AMD JS 模块:
require(["nbextensions/ht"] function(ext){});
最终导入这个“ui”模块,该模块调用一个函数来渲染 JSX。 然而,这似乎并没有触发 Babel 的浏览器内 JSX 转换器。 是否可以在 RequireJS 上下文中调用 Babel 的 JSX Transformer?
var BOWER = '/nbextensions/ht/bower_components'
var COMPONENTS = '/nbextensions/ht/components'
var NODE_MODULES = '/nbextensions/ht/node_modules'
requirejs.config({
paths: {
es6: NODE_MODULES + "/requirejs-babel/es6",
babel: NODE_MODULES + "/requirejs-babel/babel-5.8.22.min"
}
})
define([
BOWER + '/react/react.min.js',
"es6!" + COMPONENTS + "/App.jsx"
],function(React, App){
console.log("Loaded React v" + React.version)
var ui = {}
ui.render = function() {
React.render(<App/>, document.getElementById("ht_main"))
}
return ui
})
最佳答案
嗯,明白了。这里使用的方法https://github.com/podio/requirejs-react-jsx确实有效,但 RequireJS JSX 转换仅适用于导入的模块(main.js 不能混合 JSX)。
因此,Component 模块应该简单地包装在一个向 React.render 公开 render() 方法的函数原型(prototype)中。
请参阅 github 页面上的示例。
关于RequireJS + Babel + JSX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32654523/