Requirejs를 언제 사용하고 번들 자바 스크립트를 언제 사용해야합니까?
웹 사용자에게는 멍청한 질문 일 수 있습니다. 그러나 나는 이것에 대해 약간 혼란 스럽습니다. 이제 다른 작업을 수행하기 위해 몇 개의 Javascript 파일을 사용하는 응용 프로그램이 있습니다. 이제 Javascript 번 들러 를 사용하여 모든 파일을 결합하고 축소합니다. 따라서 런타임에는 app.min.js 파일이 하나만 있습니다. 이제 Requirejs 는 런타임에 모듈 또는 파일을로드하는 데 사용됩니다. 따라서 문제는 이미 하나의 파일에 모든 것이있는 경우 requirejs가 필요합니까? 또는 requirejs 및 / 또는 번 들러를 사용할 수있는 사용 사례 시나리오는 무엇입니까?
더 자세한 정보가 필요하면 알려주세요.
이것은 많은 능숙한 자바 스크립트 개발자들 사이에서 뜨거운 논쟁 거리입니다. 다른 많은 언어에는 배포를 위해 전체 프로그램이 번들로 제공되는 "컴파일"단계가 있습니다 (JBoss의 .WAR 파일이 떠 오릅니다). 보다 전통적인 배경에서 온 프로그래머는 종종이 접근 방식을 선호합니다.
Javascript는 최근 몇 년 동안 그러한 성장을 보아 정확한 모범 사례를 차트로 작성하기 어렵지만 Javascript의 기능적 특성을 인식하는 사람들은 종종 require.js 사용과 같은 모듈 로딩 방식을 선호합니다.
require.js와 매우 유사한 Frame.js 를 작성 했으므로 내 편견은 모듈 로더 접근 방식에 있습니다.
귀하의 질문에 직접 대답하려면 예, 둘 중 하나입니다.
스크립트를 단일 파일로 압축해야한다고 주장하는 대부분의 사람들은 더 많은 압축이 가능하므로 더 효율적이라고 생각합니다. (1) 모듈로드 시간이 전체 세션에 걸쳐 분산되고, (2) 개별 모듈을 거의 동일한 비율로 압축 할 수 있고, (3) 개별 모듈을 다음과 같이 캐시 할 수 있기 때문에 대부분의 경우 패키징의 효율성 이점은 무시할 수 있다고 생각합니다. 서버와 라우터를 따로 분리하고 (4) 필요한 경우에만 스크립트를로드하면 궁극적으로 일부 사용자에게는 더 적은 코드를로드하고 전체적으로 더 많은 코드를로드 할 수 있습니다.
장기적으로 동적 스크립트 로딩의 이점을 볼 수 있다면 그것을 사용하십시오. 그렇지 않은 경우 스크립트를 단일 파일로 묶습니다.
일반적으로 개발 중에는로드 형식으로 만 RequireJS를 사용합니다. 사이트가 완료되고 배포 할 준비가되면 코드를 축소합니다. 여기서 장점은 RequireJS가 종속성이 무엇인지 정확히 알고 있으므로 올바른 순서로 코드를 쉽게 축소 할 수 있다는 것입니다. 다음은 RequireJS 웹 사이트 에있는 내용입니다 .
개발을 마치고 최종 사용자를 위해 코드를 배포하려는 경우 최적화 프로그램을 사용하여 JavaScript 파일을 함께 결합하고 축소 할 수 있습니다. 위의 예에서 main.js와 helper / util.js를 하나의 파일로 결합하여 결과를 축소 할 수 있습니다.
응용 프로그램에 따라 다릅니다. 겸손한 자바 스크립트 (최소화 된 100kb 미만) 만 사용하여 서버 측 앱을 만들고 있다면 전체 번들링으로 이동하면 아마 괜찮을 것입니다.
하지만 자바 스크립트 앱을 만들고 있고 그 안에 많은 코드가 있다면, 당신의 요구는 달라질 것입니다.
예를 들어, 내 앱에서 모든 핵심 파일을 번들로 제공합니다. jQuery, 밑줄, 백본, 내 메인 앱 파일, 내 사용자 로그인 시스템, 내 레이아웃 시스템, 내 알림 및 채팅 시스템이 모두 내 큰 초기 파일의 일부입니다.
그러나 나는 초기 번들의 일부가 아닌 다른 많은 모듈도 가지고 있으며 그 이후에로드됩니다.
포럼, 위키, wysiwyg, 색상 선택기, 끌어서 놓기, 달력 및 일부 애니메이션 파일은 두 번째 범주의 일부입니다. 일반적으로 사용되는 것과 즉시 필요한 것과 지연 될 수있는 것에 대해 합리적인 결정을 내려야합니다.
즉시 모든 것을 포함하면 자바 스크립트의 메가 그 이상을 얻을 수 있습니다. 이는 제정신이 아니고 초기 부팅을 허용 할 수 없을 정도로 느리게 만듭니다.
두 번째 범주 initSuccess
는 초기 파일에서 이벤트가 발생한 후 다운로드를 시작 합니다.
그러나 두 번째 범주는 더 중요한 것을 먼저로드한다는 점에서 첫 번째 범주보다 더 지능적입니다. 예를 들어 위키를보고 있다면 색상 선택기를로드하기 전에 위키를로드합니다.
'program story' 카테고리의 다른 글
android sdk 관리자의 인텔 x86 아톰 시스템 이미지는 무엇입니까? (0) | 2020.10.22 |
---|---|
동일한 서비스에서 AngularJS 서비스의 함수를 호출합니까? (0) | 2020.10.22 |
Task.Factory.StartNew ()는 호출 스레드가 아닌 다른 스레드를 사용하도록 보장됩니까? (0) | 2020.10.22 |
Windows에서 동시에 실행되는 여러 Java 버전 (0) | 2020.10.22 |
커스텀 Python 목록 정렬 (0) | 2020.10.21 |