繁体   English   中英

如何在Blazor项目中分隔JavaScript文件?

[英]How to separate JavaScript files in a Blazor project?

我有一个超过10个模块的大项目,每个模块都有自己的javascript文件,我们一次只能处理一个模块,不需要全部javascript内容,因此应该全部加载还是分开他们每个模块? 为每个模块使用单独的.cshtml文件托管.razor组件可能是一种解决方案,这是线索吗?

在.NET Core 3.0的初始发行版中,Blazor本身不支持它。请参阅https://github.com/aspnet/AspNetCore/issues/5465

变体1

如果要动态加载部件中的JS文件,则必须假定Blazor应用程序使用的JS不是Blazor应用程序本身的一部分,而是某个可以加载每个JS模块的外部环境。 Blazor组件必须自己手动加载JS模块。

// Include that file in the index.html, but not inside Razor Components Project.
function loadModule(moduleName) {
   // load module somehow, via Ajax probably.
   // This function likely has to make sure that module would not be loaded twice.
}
protected override Task OnInitializedAsync() {
   // Component load JS module.
   await jsRuntime.InvokeVoidAsync("loadModule", "component1");
}

同样,应该在Blazor项目之外管理JS文件component1.js

版本2

使用Assembly.Load加载组件装配,并以某种方式手动将组件注入UI。 反思是您的朋友。

// Component1 assumed to be present in the `dist/_framework/_bin` folder where all Blazor stuff is located.
var assembly = Assembly.Load("Component1");
foreach (var type in assembly.GetTypes())
{
    if (!type.FullName.EndsWith("ModuleLoader"))
        return;

    var moduleInstance = Activator.CreateInstance(type);
    // And now all regular .NET plugin stuff.
}

暂无
暂无

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

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