Blazor 앱에서 다운로드할 수 있는 또 다른 라이브러리를 만든 3가지 이유
3643 단어 blazor
소개
며칠 전 Blazor 앱에서 다운로드 기능을 구현하는 기능을 제공하는 라이브러리를 만들어 nuget.org에 게시했습니다.
그러나 동일한 기능을 제공하는 다른 라이브러리를 nuget.org에서 쉽게 찾을 수 있으며 이러한 라이브러리는 몇 년 전에 이미 게시되었다는 사실을 이미 알고 계실 것입니다.
그렇다면 이미 같은 종류의 라이브러리가 있는데 왜 또 다른 새로운 라이브러리를 만들었을까요?
내가 한 이유는 세 가지입니다.
1. 그들은 "eval()"을 사용하고 있습니다.
그 이유 중 하나는 다른 라이브러리가
eval()
JavaScript 함수를 사용하여 도우미 JavaScript 코드를 웹 브라우저에 로드하기 때문입니다.하지만 최근 자바스크립트 코드의 엄격한 수준이 높아져 CSP(Content-Security-Policy) HTTP 헤더에 의해 자바스크립트 기능
eval()
의 사용을 금지하는 사이트를 종종 보게 된다.그래서
eval()
JavaScript 기능을 사용하지 않는 라이브러리를 구하고 싶다고 느꼈습니다.2. 그들은 서비스입니다
또 다른 이유는 다른 라이브러리가 해당 기능을 "서비스"로 제공하기 때문입니다. 이 컨텍스트에서 "서비스"는 DI 컨테이너에서 생성되는 개체입니다. 따라서 해당 라이브러리 사용자는 "Program.cs"내의 시작 코드에서 수동으로 해당 라이브러리의 서비스 유형을 DI 컨테이너에 등록해야 합니다.
그런데 그런 스타트업 세리머니를 추가하는 게 지루하다고 느꼈어요.
3. 최적화된 성능
마지막 이유는 다른 라이브러리에는 문서화되지 않은 API를 사용하여 다운로드 기능의 성능을 한계까지 최적화하는 수많은 코드가 포함되어 있기 때문입니다. 이러한 훌륭한 작업과 코드는 상을 받을 자격이 있습니다.
그러나 그것은 도서관의 크기를 증가시켰습니다. 그리고 일반 사용자와 사용 사례는 다운로드 작업의 속도를 추구하지 않는다고 생각합니다. 그리고 .NET 6 이상에서 다운로드 작업을 위해 바이트 배열을 전송하는 기본 구현은 충분히 빠르다고 생각합니다.
그래서 단순하지만 작은 패키지 크기의 라이브러리를 갖고 싶다고 느꼈습니다.
그래서 직접 새로 만들었어요
그래서 제가 직접 새로 만들었습니다.
"Toolbelt.Blazor.InvokeDownloadAsync"
https://www.nuget.org/packages/Toolbelt.Blazor.InvokeDownloadAsync
1. 100% eval() 무료
ES 모듈로 작성된 도우미 JavaScript 코드를 가져오기 위해 호출하는 표준
InvokeAsync("import",...)
메서드를 사용합니다. 100%eval()
무료입니다. (대신 .NET Core 3.x의 앱에는 사용할 수 없습니다.)2. 최소한의 설정
IJSRuntime
인터페이스의 확장 방법입니다. 자바스크립트 런타임 객체가 있으면 바로 다운로드 기능을 사용할 수 있습니다. 시작 시 코드를 작성할 필요가 없습니다.3. 작은 패키지 크기
성능에 최적화된 대규모 코드가 없습니다. 간단하고 작은 콘텐츠 크기입니다.
용법
Blazor 앱 프로젝트에 패키지를 추가한 후
dotnet add package Toolbelt.Blazor.InvokeDownloadAsync
다음과 같이
InvokeDownloadAsync()
인터페이스에 대한 IJSRuntime
확장 방법을 사용하여 콘텐츠 바이트 다운로드를 시작할 수 있습니다.@using Toolbelt.Blazor.Extensions
@inject IJSRuntime JSRuntime
...
@code
{
private async Task BeginDownloadAsync()
{
...
// 👇"InvokeDownloadAsync()" ex method
// starts to download the contents bytes.
await this.JSRuntime.InvokeDownloadAsync(
"Foo.png",
"image/png",
pictureBytes);
}
}
그게 다야. 👍
결론
2022년 중반인데도 불구하고 새로운 도서관을 만든 이유입니다.
즐거운 코딩하세요! :)
Reference
이 문제에 관하여(Blazor 앱에서 다운로드할 수 있는 또 다른 라이브러리를 만든 3가지 이유), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/j_sakamoto/3-reasons-why-ive-created-yet-another-library-for-the-downloading-on-blazor-apps-2cpk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)