
마침내 Linux용 Wails v2 베타를 발표하게 되어 기쁩니다! v2의 첫 실험이 Linux에서 이루어졌는데도 결국 Linux 버전이 가장 늦게 출시되었다는 점은 다소 역설적입니다. 하지만 현재의 v2는 초기 실험 버전과 매우 다릅니다. 이제 바로 새로운 기능을 살펴보겠습니다.
새로운 기능

네이티브 메뉴 지원에 대한 요청이 많았습니다. 마침내 Wails에서 이를 지원합니다. 이제 애플리케이션 메뉴를 사용할 수 있으며, 대부분의 네이티브 메뉴 기능을 지원합니다. 여기에는 표준 메뉴 항목, 체크박스, 라디오 그룹, 하위 메뉴 및 구분선이 포함됩니다.
v1에서는 창 자체를 더 세밀하게 제어할 수 있게 해 달라는 요청이 매우 많았습니다. 이를 위한 새로운 런타임 API가 추가되었다는 소식을 기쁘게 전합니다. 이 API는 다양한 기능을 제공하며 다중 모니터 구성을 지원합니다. 대화 상자 API도 개선되었습니다. 이제 모든 대화 상자 요구 사항에 맞게 세부적으로 구성할 수 있는 최신 네이티브 대화 상자를 사용할 수 있습니다.
에셋을 번들로 묶을 필요 없음
v1의 큰 불편 중 하나는 전체 애플리케이션을 단일 JS 및 CSS 파일로 압축해야 한다는 점이었습니다. v2에서는 어떤 방식으로도 에셋을 번들로 묶을 필요가 없습니다. 로컬 이미지를 불러오고 싶으신가요? 로컬 src 경로와 함께 <../../../assets/blog-images> 태그를 사용하면 됩니다. 멋진 글꼴을 사용하고 싶으신가요? 글꼴을 복사한 후 CSS에 해당 경로를 추가하면 됩니다.
와, 웹 서버처럼 들리는데요…
맞습니다. 웹 서버처럼 작동하지만, 웹 서버는 아닙니다.
그러면 에셋은 어떻게 포함하나요?
모든 에셋이 들어 있는 단일 embed.FS을 애플리케이션 구성에 전달하기만 하면 됩니다. 에셋이 최상위 디렉터리에 있을 필요도 없습니다. Wails가 알아서 처리합니다.
새로운 개발 환경
이제 에셋을 번들로 묶을 필요가 없어지면서 완전히 새로운 개발 환경을 사용할 수 있게 되었습니다. 새로운 wails dev 명령은 애플리케이션을 빌드하고 실행하지만, embed.FS의 에셋을 사용하는 대신 디스크에서 직접 불러옵니다.
또한 다음과 같은 추가 기능을 제공합니다.
- 핫 리로드 - 프런트엔드 에셋을 변경하면 애플리케이션 프런트엔드가 자동으로 다시 로드됩니다.
- 자동 재빌드 - Go 코드를 변경하면 애플리케이션이 다시 빌드되고 재실행됩니다.
이와 더불어 포트 34115에서 웹 서버가 시작됩니다. 이 서버는 접속하는 모든 브라우저에 애플리케이션을 제공합니다. 연결된 모든 웹 브라우저는 에셋 변경 시의 핫 리로드와 같은 시스템 이벤트에 반응합니다.
Go 애플리케이션에서는 구조체를 흔히 사용합니다. 구조체를 프런트엔드로 보내 애플리케이션의 상태로 사용하면 유용한 경우가 많습니다. v1에서는 이 과정을 대부분 수동으로 처리해야 해서 개발자에게 다소 부담이 되었습니다. v2에서는 개발 모드로 실행되는 모든 애플리케이션이 바인딩된 메서드의 입력 또는 출력 매개변수로 사용되는 모든 구조체에 대해 TypeScript 모델을 자동으로 생성합니다. 이를 통해 두 환경 간에 데이터 모델을 원활하게 주고받을 수 있습니다.
이와 더불어 바인딩된 모든 메서드를 래핑하는 또 하나의 JS 모듈이 동적으로 생성됩니다. 이 모듈은 메서드에 대한 JSDoc을 제공하므로 IDE에서 코드 자동 완성과 힌트를 사용할 수 있습니다. Go 코드를 래핑하는 자동 생성 모듈에서 Tab 키를 눌렀을 때 데이터 모델이 자동으로 임포트되는 모습은 정말 멋집니다!
원격 템플릿

애플리케이션을 빠르게 구성하고 실행할 수 있도록 하는 것은 언제나 Wails 프로젝트의 핵심 목표였습니다. 처음 출시할 당시에는 그 시점의 여러 최신 프레임워크인 react, vue 및 angular를 지원하려고 했습니다. 프런트엔드 개발 세계에서는 각자의 선호가 뚜렷하고 변화가 빠르기 때문에 최신 흐름을 따라가기가 어렵습니다! 그 결과 기본 템플릿이 상당히 빠르게 구식이 되었고, 이를 유지 관리하기도 까다로웠습니다. 또한 최신 기술 스택을 위한 멋진 최신 템플릿도 제공하지 못했습니다.
v2에서는 Wails 프로젝트에 의존하는 대신 커뮤니티가 직접 템플릿을 만들고 호스팅할 수 있도록 하고 싶었습니다. 이제 커뮤니티에서 지원하는 템플릿으로 프로젝트를 만들 수 있습니다! 이를 계기로 개발자들이 활기찬 프로젝트 템플릿 생태계를 구축하기를 바랍니다. 개발자 커뮤니티가 무엇을 만들어 낼지 정말 기대됩니다!
Windows로 크로스 컴파일
Windows용 Wails v2는 순수 Go로 작성되었으므로 docker 없이 Windows용으로 빌드할 수 있습니다.

맺음말
Windows 릴리스 노트에서 말씀드렸듯이 Wails v2는 프로젝트의 새로운 기반입니다. 이번 릴리스의 목표는 새로운 접근 방식에 대한 의견을 수렴하고 정식 릴리스 전에 버그를 해결하는 것입니다. 여러분의 의견을 적극 환영합니다! 피드백은 v2 베타 토론 게시판에 남겨 주세요.
Linux는 지원하기 어려운 플랫폼입니다. 베타 버전에는 여러 특이한 문제가 있을 것으로 예상합니다. 자세한 버그 보고서를 제출해 주시면 문제를 해결하고 여러분을 지원하는 데 큰 도움이 됩니다!
마지막으로, 보이지 않는 곳에서 여러 방면으로 프로젝트를 뒷받침해 주시는 모든 프로젝트 후원자 여러분께 특별히 감사드립니다.
프로젝트의 흥미진진한 다음 단계에서 사람들이 Wails로 무엇을 만들지 기대하겠습니다!
Lea.
추신: 이제 v2 릴리스가 머지않았습니다!
추신 2: 여러분이나 여러분의 회사에서 Wails를 유용하게 사용하고 있다면 프로젝트 후원을 고려해 주세요. 감사합니다!