将reactjs与requirejs一起使用
最近,我开始reactjs
与backbonejs
路由器一起使用来构建应用程序。
我通常将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