这可能是一个愚蠢的问题。但是我试图阅读有关Blazor的更多信息,但是我对@code
始终感到困惑。据我了解,当您在客户端设备中使用@code
时,一切都在客户端浏览器上本地运行。
所以我有几个问题:
@code
块内部的代码是否在服务器或静态客户端上运行? @code
块内的代码是否实际上在blazor中转换为JS?答案 0 :(得分:3)
在Blazor Server应用程序和Blazor WebAssembly App中都使用@code块,以在组件的视图(混合的C#+ HTML标记)部分及其代码部分之间进行分隔。这两个部分都被编译到单个ComponentBase类中。
在服务器端使用blazor时,@ code块内部的代码是否在服务器或静态客户端上运行?
您的Blazor服务器应用程序仅在服务器上运行。它发出Html差异,并通过SignalR连接传递到客户端浏览器,并且客户端SignalR代码(JavaScript)使用传递给它的Html差异更新DOM元素。
请注意,与Blazor Server App的客户端(浏览器)的每次交互都在服务器上执行。因此,如果单击按钮,则在服务器上执行附加到按钮的click事件的事件处理程序。
@code块内的代码是否实际上在blazor中转换为JS?
不。它是C#中的代码,现在仍然如此。如果您的应用程序在Blazor Server App中,则再次在服务器上执行。如果在Blazor WebAssembly App中,则在浏览器中以C#、. Net程序集执行。它甚至没有编译成wasm。在浏览器上是.Net。但是,执行这些.Net程序集的mono运行时将被编译为WebAssembly。
是否可以在服务器端blazor应用程序的客户端上本地运行C#代码?
从我在上面的内容中可以明显看出事实并非如此。同样,Blazor Server App在服务器上执行。您的用例不是问题,可以轻松解决...
希望这对您有帮助...