RequireJS + Babel + JSX

标签 requirejs amd babeljs reactjs

我正在尝试使用 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/

相关文章:

node.js - 如何在 Angular 2 组件中使用 require ('os' ) 来获取 IP 地址?

javascript - 如何使用 requireJS 访问模块变量?

module - typescript + AMD : how to declare anonymous class inside a module?

javascript - ES6 中的一行解构和重新分配?

javascript - ReactJS 和继承

javascript - getElementsByTagName 等效?

javascript - 使用 RequireJS 加载 Youtube Iframe API

ios - 在 AMD 笔记本上调试 IOS 应用程序

import - 带有 Babel 延迟加载模块的 Webpack 使用 ES6 推荐的 Import() 方法不起作用

javascript - 在 require.js 中使用 Define()