Browserify和ReactJs.Net服务器端渲染
Browserify and ReactJs.Net Server Side Rendering
我一直在尝试使用ReactJS在MVC项目中运行Flux Todo List教程。网
我使用Gulp和Browserify来捆绑文件,然后调用以在我的视图中呈现React组件。gullfile.js:的相关部分
gulp.task('build', function(){
browserify({
entries: [path.ENTRY_POINT],
transform: [reactify]
})
.bundle()
.pipe(source(path.NON_MINIFIED_OUT))
.pipe(gulp.dest(path.DEST_BUILD));
});
我已经更改了App.js文件来全局定义我的组件:
global.React = require('react');
global.TodoApp = require('./components/TodoApp.react');
我正试图在我的视图中这样使用:
<div id="app">
@Html.React("TodoApp", new {})
</div>
<script src="http://fb.me/react-0.13.3.min.js"></script>
@Scripts.Render("~/bundles/reactApp")
@Html.ReactInitJavaScript()
但它在运行时抛出以下错误:
找不到名为"TodoApp"的组件。您是否忘记将其添加到App_Start''ReactConfig.cs?
我已经将Browserify的输出添加到我的ReactConfig.cs:
public static void Configure()
{
ReactSiteConfiguration.Configuration
.AddScript("~/dist/build.js"); // Have also tried .AddScriptWithoutTransform
}
但这似乎没有帮助。
如果我只是在客户端渲染,效果会很好:
<div id="app">
</div>
@Scripts.Render("~/bundles/reactApp")
<script>
React.render(
React.createElement(TodoApp, null),
document.getElementById('app')
);
</script>
查看此博客:
http://janekk.github.io/tech/2014/07/25/aspnet-mvc-reactjs-browserify.html
ReactJs就是一个很好的例子。Net、Gulp和Browserify:
https://github.com/Janekk/ReactDotNetBrowserify
希望有帮助:)
Browserify默认情况下不会公开绑定的对象,因此TodoApp对象不存在。您需要通过browserify-require公开/导出TodoApp,然后在浏览器中使用TodoApp之前需要TodoApp。
服务器还需要在全局空间中公开的组件。我最终使用了类似于以下的东西:
gulp.task("bundle", function () {
var exposure = new Readable();
var b = browserify({
transform: babelify
});
exposure.push('var React = require("react");'n');
b.require(paths.components + "/Component1.jsx", { expose: 'Component1' });
exposure.push('var Component1 = require("Component1");'n');
b.require(paths.components + "/Component2.jsx", { expose: 'Component2' });
exposure.push('var Component2 = require("Component2");'n');
exposure.push(null);
b.require("react");
new StreamQueue()
.queue(b.bundle()).queue(exposure)
.pipe(source("bundle.js"))
.pipe(gulp.dest(paths.componentJsDest));
});
相关文章:
- 如何从jQuery对象文本正确调用服务器端ASP.NET并将数据返回给jQuery
- ASP.NET-具有客户端和服务器端的通用脚本
- 使用C#将在JavaScript中创建的变量值传递给ASP.Net中的服务器端(代码隐藏)
- 使用HTML和任何服务器端语言(PHP,.net,ruby)制作的网站是否可以在每个具有浏览器的设备上工作
- 如何在 asp.net 中从 javascript 调用服务器端代码
- ASP.net自定义控件,下拉值必须在服务器端填充,所选值在返回时丢失
- 使用c#在asp.net中使用JavaScript在服务器端调用TextChange Event
- ASP.NET 从 JQuery 设置时,服务器端的文本框值为空
- 是否可以在 asp.net 中使用 JavaScript 创建服务器端列表框控件
- 如何在服务器 ASP.NET 上请求客户端 Cookie
- 如何将服务器端类型传递给 asp.net Web 表单以供 JavaScript 使用
- 如何在 ASP.NET Web 表单中填补服务器端和客户端之间的空白
- 如何使用 ASP.NET 在服务器端发送 FormData 并对其进行处理
- 如何在 asp.net 中更新服务器端执行的 UI 按钮文本
- 我需要进行 Ajax 调用以使用 C# 从服务器端获取图像源 ASP.NET
- 无法使用 asp.net 获取服务器端的javascript返回的国家/地区名称
- 加载 DOM 并使用 .Net 在服务器端执行 javascript
- 从 ASP.NET Web 窗体中的服务器端属性创建 JavaScript 条件
- 如何从服务器端 asp.net 调用 Javascript 函数
- 客户端或服务器端 (asp.net) 图像映射都不会弹出 html 表单