【问题标题】:ReactJs.NET - ScriptBundling with Server-side component renderingReactJs.NET - ScriptBundling 与服务器端组件渲染
【发布时间】:2016-07-04 00:10:12
【问题描述】:

我刚刚学习了教程here,这很好,但最后两节分别讨论了捆绑和缩小以及服务器端渲染。不幸的是,它似乎没有描述如何让这两者很好地发挥作用,例如将脚本包传递给服务器端渲染函数。

这是我目前所拥有的:

BundleConfig.RegisterBundles 我有以下内容:

bundles.Add(New BabelBundle("~/bundles/main").Include(
                        "~/Scripts/showdown.js", 
                        "~/Scripts/Tutorial.jsx"))

BundleTable.EnableOptimizations = True

我可以在视图中轻松轻松地渲染该包,因此如果该包最终包含大量文件,我只需更新BundleConfig 中的列表。

@Scripts.Render("~/bundles/main")

但在ReactConfig.Configure 中我似乎无法使用捆绑包,我必须重复我传递给BundleConfig 的脚本列表:

//This doesn't work and throws the following error:
//Could not find a part of the path '\\pathToMyProject\bundles\main'
ReactSiteConfiguration.Configuration
.AddScript("~/bundles/main")

//This does, but it's basically a repeat of BundleConfig
ReactSiteConfiguration.Configuration
.AddScript("~/Scripts/showdown.js")
.AddScript("~/Scripts/Tutorial.jsx") 

有没有一种简单的好方法可以让它使用即将为正在加载的视图渲染的同一个包?

【问题讨论】:

  • 您在 Web 浏览器控制台中遇到的错误是什么?当您说But in ReactConfig.Configure I can't seem to use the bundle 时,您观察到了什么?可能是你的包中缩小后的脚本顺序或损坏的变量名?
  • 我在浏览器中没有收到错误,它可以很好地捆绑视图,但我无法将~/bundles/main 传递给ReactConfig,因为它在该位置查找文件而不是生成来自BundleConfig的缩小包
  • 我在使用.AddScript("~/bundles/main")时从服务器得到的错误是Could not find a part of the path '\\pathToMyProject\bundles\main'

标签: asp.net-mvc reactjs


【解决方案1】:

FWIW,您现在可能已经有了解决方案,这是您可以尝试的,前两个步骤您可能已经执行,第三个步骤是您所追求的...

  1. 注释掉 ReactConfig.cs 顶部的 [assembly: WebActivatorEx.PreApplicationStartMethod(typeof(YourApp), "Configure")]
  2. 在您的Application_Start() 中,在RegisterBundles() 之后,您现在可以插入对ReactConfig.Configure(); 的调用,这样可以确保您的捆绑包在尝试对其执行任何操作之前已实际注册。
  3. 最后在Re​​actConfig.cs中,添加这一行

    var myBabelBundlePath = BundleTable.Bundles.ResolveBundleUrl("~/myBabelBundleName"); 
    ReactSiteConfiguration.Configuration.AddScript(myBabelBundlePath);
    

【讨论】:

  • 很好,我想我最终为 webpacked 脚本包解雇了整个事情,但这看起来确实可以解决这个问题。
  • 嗨 CodeReaper,我m getting issue with reference one component to my app.jsx file. How to use my component in app.jsx ? eg. I have checkbox.jsx component and how to import in app.jsx file. Im 使用 bundles.Add(new BabelBundle("~/bundles/main").Include("~/Scripts/react/Checkbox.jsx", "~/脚本/react/App.jsx"));
猜你喜欢
  • 2015-09-16
  • 2016-08-20
  • 1970-01-01
  • 2016-10-17
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 2017-11-05
相关资源
最近更新 更多