Самый простой способ - добавить файл js в проект Blazor, как вы сказали. Для более подходящего решения рассмотрите возможность создания библиотеки классов Razor ("RCL") вместо библиотеки классов. Net, поскольку она поддерживает ссылки на ресурсы stati c (см. в этой статье). и более конкретно здесь для инструкций).
Существует также гораздо более сложный способ "потоковой передачи" вашего js файла из файла ресурсов вашего. Net Библиотека. Преимущество в том, что подойдет обычная стандартная библиотека классов. Net, и вам не нужно ссылаться на скрипт с тегом script
. Вы можете реализовать это, ссылаясь на ваш файл js как на встроенный ресурс, подобный этому (в .csproj вашей библиотеки классов. Net):
<ItemGroup>
<EmbeddedResource Include="wwwroot\script\MyJs.js"
LogicalName="blazor:js:%(RecursiveDir)%(Filename)%(Extension)" />
</ItemGroup>
, а затем вызывайте js с содержимым вашего файла, используя eval:
// Get contents of resource
string scriptContent;
using (var stream = this.GetType().Assembly.GetManifestResourceStream("blazor:js:MyJs.js"))
{
using (var sr = new StreamReader(stream))
{
scriptContent = await sr.ReadToEndAsync();
}
}
JSRuntime.InvokeAsync<T>("eval", scriptContent)
Полноценный пример последней стратегии здесь (и здесь ) (Отказ от ответственности: я сопровождающий).