南希的视图引擎是否有共识?

bbs*_*nbb 5 nancy

我有点惊讶地发现Nancy有自己的剃须刀实现,可能会或可能不会像剃刀一样.在实践中,这会导致问题吗?什么是"大多数人"用于南希视图引擎?为什么没有使用真正的剃须刀?

The*_*kie 14

首先是简单的答案.到目前为止,Razor引擎是Nancy最常下载的视图引擎https://www.nuget.org/packages?q=nancy.viewengines

现在为更复杂的问题

为什么没有使用真正的剃须刀?

因为"真实"(并且通过实际我将假设你的意思是ASP.NET堆栈使用的那个)Razor引擎与ASP.NET堆栈中内置的HTTP抽象相关联(HttpContext及其所有朋友们)所以没有直接的方式与南希一起使用它.

稍微长一点的答案是你必须明白Razor实际上是一个解析器而Razor视图引擎位于消费者和解析器的中间.

Nancy使用Razor解析器,但我们必须拥有自己的视图引擎,因为这是使Nancy能够解析和执行Razor模板的原因.

现在,它确实变得更加复杂.您在ASP.NET Razor视图引擎中看到的许多功能(例如母版页,部分,各种帮助程序,_ViewStart等)都不是Razor(解析器)功能,但它们是已构建的附加功能集进入视图引擎(你几乎可以把它当作中间件).

这意味着对于我们的引擎,我们必须重新实现其中的大部分功能,因为这是Razor视图引擎所期望的.

我想指出的是,如果有可能,那么我们很乐意放弃我们自己的实现并使用微软构建的实现(我们需要维护的代码少,这意味着我们将支持100%相同的功能集),但不幸的是,这不是我们做出的决定..我担心我们不能依赖他们的抽象

希望这可以解决问题

/一个