繁体   English   中英

ASP.Net Core JavaScript引擎

[英]ASP.Net Core JavaScript Engine

我正在使用ASP.Net Core.NetCoreApp 1.1 )+ SpaServices + React + Redux + Webpack React的真正功能是服务器端JS渲染。 当您将IIS / Kestrel与流行的JS库一起使用时,一切工作都很好,但是当您尝试使用某些UI库时,服务器端呈现会中断。

我在项目中使用react-planner ,它依赖于提供WebGL和canvas渲染器的“三个”库。 问题在于,Asp.Net Core默认JS引擎没有客户端浏览器中可用的“窗口”环境,因此服务器无法呈现某些JS库。 .Net有一个名为JavaScriptEngineSwitcher的库,但不支持.NetCoreApp 我现在看到3种方式:

  1. 找到一种方法来切换默认的JS引擎。
  2. 禁用服务器端渲染。
  3. 寻找一种仅针对react-planner关闭服务器端渲染的方法。

有什么想法吗?

.Net有一个名为JavaScriptEngineSwitcher的库,但不支持.NetCoreApp。

JavaScript Engine Switcher版本2.X和React.NET版本3.X解决了此问题。

从文档引用:

如果基于“ ASP.NET Core Web应用程序(.NET Core)”模板创建Web应用程序,则将只有四个JS引擎: JavaScriptEngineSwitcher.ChakraCoreJavaScriptEngineSwitcher.Msie (仅在JsRT模式下有效), JavaScriptEngineSwitcher。 JintJavaScriptEngineSwitcher.Vroom

现在关于window对象:

问题在于,Asp.Net Core默认JS引擎没有客户端浏览器中可用的“窗口”环境,因此服务器无法呈现某些JS库。

window对象不是ECMAScript规范的一部分,因为它是DOM对象。 最有可能的是,您的代码中包含以下类型的行:

var root = typeof global !== 'undefined' ? global : window;

要在服务器上执行代码,可以将此行替换为以下代码:

var global = this; // this line should be placed at the beginning of script
…
var root = global

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM