강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

naring님의 프로필 이미지
naring

작성한 질문수

[자바스크립트 GUI 개발 #1] Electron + React로 만드는 타이머 앱 (+ Zustand)

10-4. Firebase Hosting을 통해 React 프로젝트 배포하기

일렉트론 패키징 및 배포 관련 질문

해결된 질문

작성

·

12

·

수정됨

0

 

 

질문 내용

안녕하세요! 강의 너무 잘 들었습니다.

회사에서 electron으로 앱을 만들어야 해서 참고하게 되었는데 많은 도움이 되었습니다.

추가로 질문이 있는데, 강의에서 loadURL 방식으로 앱을 가져와서 돌리게 되어있는데,

혹시 해당 강의에서 loadFile로 빌드된 파일을 가져와서 동작시키지 않은 이유가 있으실까요?

찾아보니 빌드를 해서 사용하면 offline 지원이 가능하다, 대신 파일 경로를 수정해주어야 한다는 차이가 있던데, 관련해서 혹시 추가 차이점이나 주의사항이 있는지 궁금합니다.

좋은 강의 감사합니다!

 

답변 2

0

닭강정님의 프로필 이미지
닭강정
지식공유자

안녕하세요! 좋은 질문 감사합니다
말씀하신 대로 React 프로젝트를 정적 파일로 빌드 후 loadFile를 통해 온라인이 아닌 오프라인에서도 ElectronJS GUI 앱을 사용할 수 있습니다. 다만, Electron에서 loadURL()loadFile() 모두 React 앱을 불러오는 데 사용할 수 있지만, 두 방식은 용도와 특징이 조금 다릅니다.


loadURL() 방식

loadURL()개발 서버나 배포된 웹 주소를 불러오는 방식입니다.
예를 들어, 개발 중에는 http://localhost:3000으로,
배포 후에는 Firebase, Vercel, Netlify 등에 배포된 React 사이트 주소를 불러올 수 있습니다.

이 방식의 가장 큰 장점은 Electron 앱을 다시 패키징하지 않아도 된다는 점입니다.
React 쪽 코드만 수정하고 다시 배포하면, Electron 앱은 그대로 두고도 최신 버전의 웹 UI를 자동으로 반영할 수 있습니다.


loadFile() 방식

반면 loadFile()npm run build로 만들어진 정적 파일(index.html)을 직접 로드하는 방식입니다.
이 방법은 완전히 오프라인 환경에서도 동작 가능하다는 장점이 있습니다.
하지만 React 코드를 수정할 때마다 다시 빌드하고,
그 결과물을 Electron 안에 다시 넣어 앱을 재패키징해야 하는 번거로움이 있습니다.

 

강의에서 제가 loadURL() 방식으로 Firebase에 배포된 React 앱을 불러온 이유는,
Electron이 한 번 배포된 이후에도 React 웹사이트만 따로 수정하고 재배포할 수 있게 하기 위해서입니다.

loadFile()을 사용하면 정적 파일이 Electron 내부에 포함되기 때문에, UI를 조금만 수정해도 앱 전체를 다시 빌드하고 패키징해야 합니다.
하지만 loadURL()로 Firebase에 배포된 주소를 불러오면, Electron 앱은 그대로 두고 React만 수정해도 바로 변경 사항이 반영되기 때문에 운영과 유지보수 측면에서 훨씬 효율적입니다.

정리하자면, Electron 앱 배포 후에도 React UI를 자유롭게 업데이트할 수 있도록 하기 위해
loadURL() + Firebase 배포 방식을 강의에서 사용했습니다.

 

한 번 직접 React 프로젝트를 npm run build로 정적 파일로 빌드한 뒤,
loadFile()을 통해 타이머 앱을 오프라인 환경에서도 실행해보시는 것도 추천드립니다!

 

말씀하신 주의사항들 외에는 loadFile() 방식에도 크게 문제는 없습니다. 진행 하시면서 문제가 발생하거나 다른 어려움이 있으실 경우 언제든지 문의 바랍니다. 감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다. naring님.

Electron 애플리케이션을 개발할 때, loadURLloadFile 방법을 선택하는 것은 애플리케이션의 특성과 개발 목표에 따라 달라집니다. 두 방식 모두 각각 장단점이 있으며, 자주 나온 질문 중 하나입니다.

loadURL 방식

loadURL을 사용하면 외부 서버에서 페이지를 로드하기 때문에, 지속적인 온라인 연결이 필요합니다. 이는 보기 및 업데이트 적용의 편리함을 제공하지만, 네트워크 연결이 항상 필요하다는 단점이 있습니다. 또한, 앱의 콘텐츠를 실시간으로 제공해야 하는 애플리케이션에서 유리합니다.

loadFile 방식

반면에 loadFile은 로컬의 빌드된 파일을 앱에 로드하는 방식으로, 오프라인에서도 앱이 정상 작동하게 만드는 장점이 있습니다. 이 방식은 다음과 같은 고려사항이 필요합니다:
- 파일 경로 설정: 전역 경로 또는 상대 경로 설정에 주의해야 합니다. 잘못된 경로 설정은 앱 구동에 문제를 일으킬 수 있습니다.
- 오프라인 모드: 외부 네트워크가 없어도 동작해야 하는 앱에 적합합니다.
- 배포의 용이성: 네트워크에 상관없이 항상 동일한 버전이 사용되므로, 버전별 관리가 필요합니다.

두 방식 간의 차이 외에도, 빌드 과정에서 주의해야 할 사항은 파일 경로나 환경 변수 처리 등입니다. Electron의 패키징 및 배포 과정은 앱 특성에 따라 차이가 있으니, 사용 환경에 맞는 방식을 선택하는 것이 중요합니다.

관련 내용을 이해하는 데 도움이 될 수 있는 링크는 다음과 같습니다:
- Electron 애플리케이션의 패키징과 배포

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

naring님의 프로필 이미지
naring

작성한 질문수

질문하기