[英]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种方式:
react-planner
关闭服务器端渲染的方法。 有什么想法吗?
.Net有一个名为JavaScriptEngineSwitcher的库,但不支持.NetCoreApp。
JavaScript Engine Switcher版本2.X和React.NET版本3.X解决了此问题。
从文档引用:
如果基于“ ASP.NET Core Web应用程序(.NET Core)”模板创建Web应用程序,则将只有四个JS引擎: JavaScriptEngineSwitcher.ChakraCore , JavaScriptEngineSwitcher.Msie (仅在JsRT模式下有效), JavaScriptEngineSwitcher。 Jint和JavaScriptEngineSwitcher.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.