블레이저 라이브러리 문의

블래이저 개발시 ui라이브러는 어떤것사용하시나요?

기존에는 제이쿼리기반 라이브러리를 많이사용했는데 블레이저용은 모르겠네요

자바스크립트를 전혀 사용안하시나요?

개발조언부탁합니다

4 Likes

부트스트랩이나 라드젠, 머드블레이저 아니면 유료로는 데브익스프레스가 있구요… 일반 리엑트 라이브러리도 데이터만 잘 넘겨주면 사용할 수 있더라구요

4 Likes

제이쿼리로 만든 라이브러리도 사용하시나요?
일반적으로 스크립트기반은 사용안하나요
나중에 maui도 고려중이라서요

3 Likes

많은 분들이 UI 프레임워크의 편리함과 커스터마이징 불편함 사이 어디 쯤인가에 계시더군요.

이는 아마도, 블레이저의 레이저 요소는 자바스크립트가 아닌 C#으로 제어하기 위한 것이기 때문인 것 같습니다.

저 또한, 다른 UI 프레임워크를 쓰는 것 보다, 기본으로 장착된 부트스트랩을 쓰고, 모자라는 부분은 FluentUI 스타일을 사용합니다.

Fluent UI - Styles (microsoft.com)

참고로, 이름이 비슷한 Fluent Components 라는 UI 프레임웍이 있는데, 별개의 것입니다.

9 Likes

추가적으로…

제가 (그리고, 많은 분들이) 블레이저 앱에서 UI프레임워크 보다 css 를 선호하는 이유는, 블레이저의 독특한 구조때문입니다.

블레이저는 돔 객체를 관리하고, 우리는 C# 코드를 통해 객체의 상태를 제어하게 됩니다.
물론, 자바 스크립트(나 제이쿼리)의 실행도 막지 않습니다.

문제는 자바 스크립트 실행 코드 중 일부가 돔 객체를 변경했는데, 블레이저가 이를 통지받지 못하면, 그로 인해 블레이저가 오동작을 하게 된다는 점입니다.

일례로 제가 직접 겪은 바를 말씀드리면, 부트 스트랩의 체크 박스인데, 아래 글의 예제 코드에서 사용했었습니다.

블레이저 - 양 방향 바인딩이 가능한 Flag Enum 입력 콘트롤. - :man_teacher: 튜토리얼, 팁, 강좌 - 닷넷데브 (dotnetdev.kr)

부트 스트랩 체크 박스의 체크 상태(bool)는 자바스크립트에서 관리합니다.

그런데, 간혹 가다가 코드 변수가 가진 상태와 자바스크립트가 가진 상태가 불일치되는 경우가 있더군요. (실력이 안되서 이유는 못 밝혔지만요)

즉, UI는 체크 상태인데, 코드는 해제 상태로 남아 있는 등.

그런 이유로 예제는 코드의 상태 값이 변하면, 체크 박스가 전체가 다시 렌더링되는 구조로 변경했습니다. 문제는, 예제에서는 체크 박스가 10개도 안되기에 리렌더링의 비용이 쌀지는 몰라도, 몇 백개가 되면 무시할 수 없는 수준이 됩니다.

그래서, 실제 사용 코드에서는 체크 박스를 html 로 정의하고, 체크 상태를 css 를 통해 제어하는 방식으로 변경했습니다.

문제의 소지가 있는 자바스크립트에는

  • JSInterop 을 위해서 사용자가 정의하거나 import 해 온 것.
  • 부트스트랩을 포함한 외부 CSS 프레임워크에 포함된 것.
  • UI 프레임워크에 포함된 것

등, 돔 객체를 건드리는 한 모두 잠재적 위험 요소가 됩니다.

대부분의 UI 프레임워크는 자바스크립트 친화적입니다. 그쪽에 계신 분들이야 맘 편하겠지만, 블레이저 사용자 입장에서는 언제 어디서 어떻게 문제가 나타날 지 불안을 떨칠 수 없습니다.

닷넷 전용의 UI 프레임워크라도 용의선 상에서 내려오기란 쉽지 않습니다.
프로젝트 템플릿에 끼워 있는 부트스트랩에도 문제되는 부분이 있을 정도니까요.

아래는 같은 내용을 설명해주는 닷넷 문서입니다.

이 글을 처음 읽었을 땐 뭔 말인가 했는데, 문제를 겪은 후에 읽으니 아주 그냥 가슴을 후벼팝니다.

많은 유튜브 강좌나 인터넷 튜토리얼에서도 가급적 자바 스크립트를 안 쓰고, C# 코드로만 UI를 제어하려는 경향과도 무관하지는 않은 것 같습니다. 그들의 가슴에도 패인 흔적이 몇 군데 있을 듯 합니다.

물론 돔 객체와 무관한, 특히 브라우저가 제공하는 웹 API 호출 스크립트는 아직까지 문제를 발견하지 못 했습니다.

8 Likes

너무 공감 되는 말씀입니다.
차라리, UI 키트에서 쓰는 예쁜 css만 받아서 껍데기만 씌워서,
JS로 내부에서 돌아갈 로직들을 죄다 C# 으로 다시 만드는게 훨씬 정신건강과 프로젝트 진행율[…]에도 편한 것 같아요.
저도 부트스트랩 끼워쓰고 그러는데 ㅠㅠㅠㅠㅠ 가끔 Carousel같은거 안 돌아가먼 가슴이 철렁…

4 Likes

글로만 봐도 가슴이 철렁!!

4 Likes

mud블레이저 쓰긴하는데 쓰다보니 쓸필요가 전혀 없는거 같습니다

그냥 css 쓰고 자바스크립트용 라이브러리들 쓰는게 더 속편한거 같습니다

3 Likes