Ссылка Javascript файла библиотеки классов (. net) на приложение Blazor - PullRequest
0 голосов
/ 03 марта 2020

В настоящее время я работаю над решением VS 2019, состоящим из двух проектов: Один - это библиотека классов, содержащая файл Javascript, другой - Blazor. Net Базовый проект (на стороне клиента).

Я ищу ссылку на скрипт в моей библиотеке классов на мое приложение для блейзоров, чтобы вызывать его функции со стороны клиента.

Мне известно, что я мог бы просто добавить файл непосредственно в проект Blazor, но я ищу другие способы реализации файла Js, в частности, из библиотеки классов. Net.

1 Ответ

1 голос
/ 03 марта 2020

Самый простой способ - добавить файл 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)

Полноценный пример последней стратегии здесь здесь ) (Отказ от ответственности: я сопровождающий).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...