Using reactjs with requirejs(将 reactjs 与 requirejs 一起使用)
问题描述
最近,我开始使用 reactjs
和 backbonejs
路由器来构建应用程序.
我通常使用 requirejs
进行依赖和代码管理.但是,当我尝试包含包含 jsx
语法的文件时出现问题.
这就是我目前所拥有的 router.js
:
define(["backbone", "react"], function(Backbone, React) {var IndexComponent = React.createClass({渲染:函数(){返回 (一些东西在这里</div>);}});返回 Backbone.Router.extend({路线:{: 指数"},索引:函数(){React.renderComponent(<IndexComponent/>, document.getElementById('index'));}});});如何将 IndexComponent 放在它自己的文件中并在这个文件中调用它?我已经尝试过通常的方法(与我在主干和反应中使用的方法相同)但由于 jsx
语法而出现错误.
解决方案 所以我自己想通了.
我从这个 repo 获得了必要的文件和说明:jsx-requirejs-plugin.
一旦我有了 jsx 插件 和 的修改版本href="https://raw.github.com/alirussell/jsx-requirejs-plugin/master/js/JSXTransformer-0.10.0.js">JSXTransformer,我按照存储库中的说明更改了代码:
require.config({//...路径:{反应":路径/到/反应","JSXTransformer": "路径/到/JSXTransformer",jsx":路径/到/jsx 插件"...}//...});
然后,我可以通过 jsx!
插件语法来引用 JSX 文件.例如,要加载组件目录中的 Timer.jsx 文件:
require(['react', 'jsx!components/Timer'], function (React, Timer) {...React.renderComponent( , document.getElementById('timer'));...});
我还可以使用相同的代码访问具有 jsx
语法的 .js
文件:
require(['react', 'jsx!components/Timer'], function (React, Timer) {...React.renderComponent( , document.getElementById('timer'));...});
另外,我不需要使用 jsx
语法将 /** @jsx React.DOM */
放在文件的顶部.
希望对你有帮助.
Recently, I started using reactjs
along with a backbonejs
router to build an application.
I usually use use requirejs
for dependency and code management. But, problem arises when I try to include files that contain jsx
syntax.
This is what I have so far as my 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'));
}
});
});
How do I put IndexComponent in its own file and call it in this file ? I have tried the usual method (the same that I have used with backbone and react) but got an error due to jsx
syntax.
解决方案 So I figured it out myself.
I got the necessary files and instructions from this repo: jsx-requirejs-plugin.
Once I had jsx plugin and modified version of JSXTransformer, I changed my code as instructed in the repository :
require.config({
// ...
paths: {
"react": "path/to/react",
"JSXTransformer": "path/to/JSXTransformer",
"jsx": "path/to/jsx plugin"
...
}
// ...
});
Then, I could reference JSX files via the jsx!
plugin syntax. For example, to load the Timer.jsx file that is in a components directory:
require(['react', 'jsx!components/Timer'], function (React, Timer) {
...
React.renderComponent(<Timer />, document.getElementById('timer'));
...
});
I could also access .js
files that had jsx
syntax in them using the same code:
require(['react', 'jsx!components/Timer'], function (React, Timer) {
...
React.renderComponent(<Timer />, document.getElementById('timer'));
...
});
Also, I did not need to put /** @jsx React.DOM */
at the top of files using jsx
syntax.
Hope it helps.
这篇关于将 reactjs 与 requirejs 一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:将 reactjs 与 requirejs 一起使用
基础教程推荐
- 如何使用TypeScrip将固定承诺数组中的项设置为可选 2022-01-01
- 如何使用JIT在顺风css中使用布局变体? 2022-01-01
- html表格如何通过更改悬停边框来突出显示列? 2022-01-01
- 用于 Twitter 小部件宽度的 HTML/CSS 2022-01-01
- Vue 3 – <过渡>渲染不能动画的非元素根节点 2022-01-01
- 我可以在浏览器中与Babel一起使用ES模块,而不捆绑我的代码吗? 2022-01-01
- Electron 将 Node.js 和 Chromium 上下文结合起来意味着 2022-01-01
- 直接将值设置为滑块 2022-01-01
- Chart.js 在线性图表上拖动点 2022-01-01
- 自定义 XMLHttpRequest.prototype.open 2022-01-01