【发布时间】:2020-11-14 04:23:28
【问题描述】:
我目前正在开发一个 .NET Standard 2.1 Blazor WebAssembly 应用程序。我尝试根据环境变量在我的 index.html 中包含或排除 JavaScript 文件。
Blazor WebAssembly 应用程序不是 Asp.NET Core 托管的。
在 .NET Core 中通常有 Environment Tag Helpers,如下例所示:
<environment include="Development">
<script src="js/app.js"></script>
<script src="js/helpers.js"></script>
</environment>
<environment exclude="Development">
<script src="js/site.min.js"></script>
</environment>
正如在这个问题 Blazor WebAssembly Environment Variables 中已经讨论过的,环境标记帮助程序是服务器端代码,因此在 Blazor WASm 中不起作用。
现在我尝试根据 Blazor WebAssembly 中的环境变量找到包含/排除 JavaScript 文件的好解决方案。
第一个想法是,类似于 CSS,创建一个名为 <Scripts> 的组件来加载 index.html 上的不同脚本文件,如下所示:
@using Microsoft.AspNetCore.Components.WebAssembly.Hosting
@inject IWebAssemblyHostEnvironment hostEnv
@*Check the environment value*@
@if (hostEnv.IsDevelopment())
{
<script src="js/app.js"></script>
<script src="js/helpers.js"></script>
}
else
{
<script src="js/site.min.js"></script>
}
@code {}
很遗憾,这不起作用,因为 <script> 元素不允许在 Blazor 组件(.razor 文件)中使用。
出现以下错误:脚本元素允许作者在其文档中包含动态脚本和数据块。该元素不代表用户的内容。 ...脚本标签不应放置在组件内,因为它们无法动态更新。要解决此问题,请将脚本标记移动到“index.html”文件或其他静态位置。 ...https://go.microsoft.com/fwlink/?linkid=872131
如何根据环境变量加载不同的脚本,即 Blazor Webassembly 中的开发、生产或暂存?
你知道如何解决这个问题吗?
【问题讨论】:
标签: javascript c# asp.net-core blazor webassembly