将reactjs与requirejs一起使用

最近,我开始reactjsbackbonejs路由器一起使用来构建应用程序。

我通常将use requirejs用于依赖项和代码管理。但是,当我尝试包含包含jsx语法的文件时会出现问题。

这就是我目前所拥有的router.js

define(["backbone", "react"], function(Backbone, React) {

var IndexComponent = React.createClass({

render : function() {

return (

<div>

Some Stuff goes here

</div>

);

}

});

return Backbone.Router.extend({

routes : {

"": "index"

},

index : function() {

React.renderComponent(<IndexComponent />, document.getElementById('index'));

}

});

});

如何将IndexComponent放在其自己的文件中并在此文件中调用它?我尝试了通常的方法(与骨干和反应相同),但是由于jsx语法错误。

回答:

所以我自己弄清楚了。

我从此仓库获得了必要的文件和说明:jsx-

requirejs-plugin。

一旦有了jsx插件和JSXTransformer的修改版本,就按照存储库中的说明更改了代码:

require.config({

// ...

paths: {

"react": "path/to/react",

"JSXTransformer": "path/to/JSXTransformer",

"jsx": "path/to/jsx plugin"

...

}

// ...

});

然后,我可以通过jsx!插件语法引用JSX文件。例如,要加载组件目录中的Timer.jsx文件,请执行以下操作:

require(['react', 'jsx!components/Timer'], function (React, Timer) {

...

React.renderComponent(<Timer />, document.getElementById('timer'));

...

});

我还可以使用相同的代码访问.js其中包含jsx语法的文件:

require(['react', 'jsx!components/Timer'], function (React, Timer) {

...

React.renderComponent(<Timer />, document.getElementById('timer'));

...

});

另外,我不需要/** @jsx React.DOM */使用jsx语法将文件放在顶部。

希望能帮助到你。

以上是 将reactjs与requirejs一起使用 的全部内容, 来源链接: utcz.com/qa/423649.html

回到顶部