얼마 전 한 네티즌이 프론트엔드에서 requireJs와 seajs를 사용하는 것에 대해 물었습니다. 저는 그에게 이전에 귀하의 회사에 자체 작성된 javascript 라이브러리나 javascript 프레임워크가 있는지 물었습니다. 그의 대답은 아무 것도 아니었습니다. requirejs나 seajs 같은 것들은 새로운 것, 새로운 기술이고 매우 가치가 높으니 꼭 써보고 싶습니다.
이 네티즌의 질문은 지난 글에서 제가 작성한 자바스크립트 라이브러리의 기본 구조에 대해 생각하게 만들었습니다. 사실 이 글을 쓰게 된 이유 중 하나는 제가 자바스크립트를 사용하고 싶어서였습니다. 또는 seajs와 같은 기술을 사용하여 JavaScript 라이브러리 작성을 위한 기본 모델을 재설계합니다. 이 기술에 대해 더 많이 알게 되었을 때 일반 코드와 비즈니스 코드를 분리하는 문제를 해결하기 위해 모듈 로딩 시스템을 사용하는 것이 올바르지 않다는 것을 알게 되었습니다. JavaScript 라이브러리에서 모듈 로딩 시스템의 범위는 JavaScript 라이브러리 개발 방법을 돕는 것이 아니라 서로 다른 JavaScript 라이브러리 간의 종속성 문제를 해결하는 것입니다.
그러면 자바스크립트 모듈 로딩 시스템이란 무엇일까요?
모듈 시스템은 주로 다양한 JavaScript 라이브러리에 있는 작업 개체의 이름 지정 충돌 문제와 다양한 JavaScript 라이브러리 간의 종속성 문제를 해결하기 위해 설계되었습니다. 모듈 로딩 시스템은 대규모 웹 프런트엔드 애플리케이션이나 거대 기업을 목표로 합니다. 웹 프런트엔드 애플리케이션.
일반적으로 거대한 웹 프런트엔드 애플리케이션 페이지에서는 페이지의 기능이 매우 풍부하고 비즈니스가 매우 복잡합니다. 게다가 시간이 지남에 따라 페이지의 기능이 자주 변경되므로 프런트엔드 개발자는 새로운 기능을 위해서는 새로운 기능을 개발해야 하는 경우가 많지만 실제 비즈니스에서는 다양한 기능 모듈의 기능이 서로 침투하고 서로 의존하며 복잡한 관계를 가질 수 있습니다. 프런트 엔드 라이브러리는 관리 및 제어가 어려워집니다. 이때 모듈 로딩 시스템이 유용합니다.
대부분의 프로그래머에게는 이러한 대규모 웹 프런트엔드 애플리케이션을 독립적으로 수행할 수 있는 기회가 많지 않습니다. 그러나 엔터프라이즈급 웹과 같은 중소 규모의 웹 프런트엔드 애플리케이션을 개발할 수 있는 기회는 더 많습니다. 사용되는 JavaScript 라이브러리 유형이 거의 없으며 각 라이브러리의 종속성을 제어하기가 쉽습니다. 많은 중소 인터넷 회사의 웹 페이지에서도 모듈 관리 시스템을 도입할 필요가 없습니다. 엔터프라이즈급 웹 애플리케이션의 프런트엔드만큼 훌륭하므로 모듈이나 JavaScript 라이브러리 간의 관계가 관리하기 쉽습니다. 실제로 위와 같은 중소형 애플리케이션은 모두 특정 또는 특정 시나리오를 대상으로 합니다. 따라서 이러한 웹 프런트 엔드 프로젝트에 직면하여 마침내 우리 스스로 독립적인 JavaScript 라이브러리를 구성할 수 있다고 개인적으로 생각합니다. 이 라이브러리의 특성은 jQuery의 특성과 유사해야 합니다. 기본 라이브러리와 여러 플러그인 라이브러리의 목적은 재사용 가능하고 마이그레이션되어야 합니다. 플러그인 라이브러리의 목적은 비즈니스 코드와 관련된 경우가 많지만, 메인 라이브러리와 플러그인 라이브러리의 범위 문제를 구분하기 위해 라이브러리에 네임스페이스 기능을 추가했습니다.
Javascript 모듈 로딩 기술과 Hadoop 기술은 몇 가지 유사점을 가지고 있습니다. 즉, 둘 다 매우 큰 시스템을 위한 기술이므로 특정 조건에서만 역할을 수행할 수 있으므로 이러한 기술은 대형 인터넷 회사에서 시작됩니다. 기업은 애플리케이션이 더 커지고 복잡해짐에 따라 문제를 해결해야 합니다. 시스템이 아직 초기 단계에 있을 때는 이러한 기술을 사용할 때 실제 문제를 해결하는 가장 간단하고 효과적인 방법을 찾아야 합니다. 이 시스템이 미래에 점점 더 커질 것이라고 생각한다면, 미래에 이러한 기술을 사용하기 위한 인터페이스를 유지해야 합니다. 너무 일찍 사용하면 시스템 규모가 확장될 때 리팩토링 비용이 발생할 가능성이 높습니다. 코드가 더 높아질 것입니다.
모듈 로딩 시스템의 경우 가장 적합한 시나리오는 대규모 웹 프론트엔드 애플리케이션 모듈 간의 디커플링 문제를 해결하는 것입니다. 새로운 자바스크립트 파일을 작성하고 즉시 모듈 로딩 기술을 사용한다면 이는 아닙니다. 약간의 기술 오용 글쎄, 우리는 특정 기술을 사용하기 전에 그것이 어떻게 사용되는지뿐만 아니라 그것을 사용하는 것이 가치 있는지도 고려해야 합니다.
마지막으로 말씀드리고 싶은 점은 중소 규모의 웹 프론트엔드 애플리케이션은 프로덕션 환경에 배포해야 한다고 생각합니다. JavaScript는 가장 복잡하지 않기 때문에 모든 외부 JavaScript 파일을 JavaScript로 패키징하는 것이 가장 좋습니다. 모듈 로딩 기술을 사용하면 파일을 패키징하는 것이 번거롭거나 불가능할 수도 있습니다(requirejs 및 seajs와 같은 모듈은 파일을 기반으로 하며 각 모듈은 독립적인 파일입니다). ) 이는 http를 줄이는 목적이 모순되는 것과 같습니다.