기여하기

이 문서 편집

문서를 번역하거나 컴퓨터에서 전체 프로젝트를 여세요.

작업을 제출하기 전까지는 아무것도 게시되지 않습니다.

블로그

macOS용 Wails v2 베타

Wails 릴리스 노트 및 공지

leaanthony읽는 데 4분

wails-mac 스크린샷

오늘 Mac용 Wails v2의 첫 번째 베타 버전을 출시합니다! 여기까지 오는 데 꽤 오랜 시간이 걸렸으며, 오늘 출시한 버전이 제법 유용하게 쓰이기를 바랍니다. 이 지점에 도달하기까지 여러 우여곡절이 있었습니다. 여러분의 도움을 받아 남아 있는 문제를 해결하고, 최종 v2 릴리스에 맞춰 Mac 포트를 완성도 높게 다듬을 수 있기를 바랍니다.

그렇다면 아직 프로덕션에서 사용할 준비가 되지 않았다는 뜻인가요? 사용 사례에 따라서는 충분히 준비되었을 수도 있지만, 알려진 문제가 아직 여럿 있으므로 이 프로젝트 보드를 계속 확인해 주세요. 기여하고 싶으시다면 언제든 환영합니다!

그렇다면 Mac용 Wails v2에는 v1과 비교해 어떤 새로운 기능이 있을까요? 힌트: Windows 베타와 상당히 비슷합니다 :wink:

새로운 기능

wails-menus-mac 스크린샷

네이티브 메뉴 지원에 대한 요청이 많았습니다. 마침내 Wails에서 이를 지원합니다. 이제 애플리케이션 메뉴를 사용할 수 있으며, 대부분의 네이티브 메뉴 기능을 지원합니다. 여기에는 표준 메뉴 항목, 체크박스, 라디오 그룹, 하위 메뉴 및 구분선이 포함됩니다.

v1에서는 창 자체를 더 세밀하게 제어할 수 있게 해 달라는 요청이 매우 많았습니다. 이를 위한 새로운 런타임 API가 추가되었다는 소식을 기쁘게 전합니다. 기능이 풍부하며 다중 모니터 구성을 지원합니다. 대화 상자 API도 개선되었습니다. 이제 다양한 구성 옵션을 제공하는 최신 네이티브 대화 상자를 사용해 필요한 모든 대화 상자를 구현할 수 있습니다.

Mac 전용 옵션

일반적인 애플리케이션 옵션 외에도 Mac용 Wails v2는 다음과 같은 Mac 전용 기능을 제공합니다.

  • 멋진 Swift 앱처럼 창을 개성 있고 반투명하게 만들어 보세요!
  • 고도로 사용자 지정 가능한 제목 표시줄
  • 애플리케이션에서 NSAppearance 옵션 지원
  • “정보” 메뉴를 자동으로 만드는 간단한 구성

에셋을 번들로 묶을 필요 없음

v1의 매우 큰 불편 중 하나는 애플리케이션 전체의 JS와 CSS를 각각 하나의 파일로 합쳐야 한다는 점이었습니다. v2에서는 어떤 방식으로든 에셋을 번들로 묶을 필요가 없다는 소식을 기쁘게 전합니다. 로컬 이미지를 불러오고 싶으신가요? 로컬 src 경로가 지정된 <img> 태그를 사용하세요. 멋진 글꼴을 사용하고 싶으신가요? 글꼴을 복사한 뒤 CSS에 해당 경로를 추가하세요.

와, 웹 서버처럼 들리네요…

맞습니다. 웹 서버는 아니지만 웹 서버와 똑같이 작동합니다.

그렇다면 에셋은 어떻게 포함하나요?

모든 에셋이 들어 있는 단일 embed.FS만 애플리케이션 구성에 전달하면 됩니다. 에셋이 최상위 디렉터리에 있을 필요조차 없습니다. Wails가 알아서 처리합니다.

새로운 개발 경험

이제 에셋을 번들로 묶을 필요가 없어지면서 완전히 새로운 개발 환경을 제공할 수 있게 되었습니다. 새로운 wails dev 명령은 애플리케이션을 빌드하고 실행하지만, embed.FS에 있는 에셋을 사용하는 대신 디스크에서 직접 불러옵니다.

또한 다음과 같은 추가 기능을 제공합니다.

  • 핫 리로드 - 프런트엔드 에셋이 변경되면 애플리케이션 프런트엔드가 자동으로 다시 로드됩니다.
  • 자동 재빌드 - Go 코드가 변경되면 애플리케이션을 다시 빌드하고 재실행합니다.

이와 함께 포트 34115에서 웹 서버가 시작됩니다. 이 서버는 연결하는 모든 브라우저에 애플리케이션을 제공합니다. 연결된 모든 웹 브라우저는 에셋 변경 시 핫 리로드와 같은 시스템 이벤트에 반응합니다.

Go 애플리케이션에서는 구조체를 자주 다룹니다. 구조체를 프런트엔드로 보내 애플리케이션의 상태로 사용하면 유용한 경우가 많습니다. v1에서는 이 과정이 대부분 수동이어서 개발자에게 다소 부담이 되었습니다. v2에서는 개발 모드로 실행되는 모든 애플리케이션이 바인딩된 메서드의 입력 또는 출력 매개변수로 사용되는 모든 구조체에 대해 TypeScript 모델을 자동으로 생성합니다. 이를 통해 두 환경 간에 데이터 모델을 원활하게 교환할 수 있습니다.

이와 함께 바인딩된 모든 메서드를 래핑하는 또 하나의 JS 모듈이 동적으로 생성됩니다. 이 모듈은 메서드용 JSDoc을 제공하여 IDE에서 코드 완성과 힌트를 사용할 수 있게 합니다. Go 코드를 래핑하는 자동 생성 모듈에서 Tab 키를 누를 때 데이터 모델이 자동으로 임포트되는 모습은 정말 멋집니다!

원격 템플릿

remote-mac 스크린샷

애플리케이션을 신속하게 실행할 수 있도록 하는 것은 언제나 Wails 프로젝트의 핵심 목표였습니다. 프로젝트를 처음 출시할 당시에는 React, Vue, Angular 등 당시의 여러 최신 프레임워크를 지원하려고 했습니다. 프런트엔드 개발 세계는 선호하는 방식이 매우 뚜렷하고 빠르게 변화하며, 최신 동향을 따라가기도 어렵습니다! 그 결과 기본 템플릿이 상당히 빨리 낡았고, 이는 유지보수에 골칫거리가 되었습니다. 또한 최신 기술 스택을 위한 세련된 최신 템플릿을 제공하지 못한다는 뜻이기도 했습니다.

v2에서는 Wails 프로젝트에 의존하는 대신 커뮤니티 여러분이 직접 템플릿을 만들고 호스팅할 수 있도록 하여 커뮤니티의 역량을 강화하고자 했습니다. 이제 커뮤니티에서 지원하는 템플릿으로 프로젝트를 만들 수 있습니다! 이를 계기로 개발자들이 활기찬 프로젝트 템플릿 생태계를 만들기를 바랍니다. 개발자 커뮤니티가 무엇을 만들어 낼지 정말 기대됩니다!

네이티브 M1 지원

Mat Ryer의 훌륭한 지원 덕분에 이제 Wails 프로젝트에서 M1 네이티브 빌드를 지원합니다.

build-darwin-arm 스크린샷

darwin/amd64을 대상으로 지정할 수도 있습니다.

build-darwin-amd 스크린샷

아, 깜빡할 뻔했네요…. darwin/universal도 가능합니다…. :wink:

build-darwin-universal 스크린샷

Windows로 크로스 컴파일

Windows용 Wails v2는 순수 Go로 작성되었으므로 docker 없이 Windows 빌드를 대상으로 지정할 수 있습니다.

build-cross-windows 스크린샷 bu

WKWebView 렌더러

V1은 현재는 사용이 권장되지 않는 WebView 컴포넌트에 의존했습니다. V2는 최신 WKWebKit 컴포넌트를 사용하므로 Apple의 가장 뛰어난 최신 기능을 기대하셔도 좋습니다.

맺음말

Windows 릴리스 노트에서 말씀드렸듯이 Wails v2는 프로젝트의 새로운 기반을 마련합니다. 이번 릴리스의 목표는 새로운 접근 방식에 대한 의견을 수렴하고 정식 릴리스 전에 모든 버그를 해결하는 것입니다. 여러분의 의견을 기다리겠습니다! 피드백은 v2 베타 토론 게시판에 남겨 주세요.

마지막으로, 보이지 않는 곳에서 여러 방면으로 프로젝트를 이끌어 주는 지원을 제공해 주신 JetBrains를 비롯한 모든 프로젝트 후원자 여러분께 특별히 감사드립니다.

프로젝트가 새롭고 흥미진진한 다음 단계로 접어든 만큼, 여러분이 Wails로 무엇을 만들어 낼지 기대하겠습니다!

Lea.

추신: Linux 사용자 여러분, 다음은 여러분 차례입니다!

추신 2: 여러분이나 여러분의 회사에서 Wails를 유용하게 사용하고 있다면 프로젝트 후원을 고려해 주세요. 감사합니다!