목표를 정리하십시오 : 라이브러리 구축을 시작하기 전에 해결하고자하는 특정 문제를 명확히하고 집중하고 유용성을 보장합니다.
사용자 중심 API 설계 : 최종 사용자 센터를 사용하여 라이브러리를 디자인하여 간단하고 사용하기 쉽도록 사용자 채택 및 만족도를 향상시킵니다.
유연성 및 사용자 정의 :
구성, 공개 방법 및 다양한 사용자 요구에 맞는 이벤트 처리를 통해 사용자 정의 옵션을 제공합니다. 테스트 및 문서 :
Mocha 또는 Jasmine과 같은 프레임 워크를 사용하여 철저한 테스트를 수행하고 이해하고 사용하는 데 도움이되는 포괄적 인 문서가 제공됩니다.
모듈 로더 호환성 : 는 UMD (Universal Module Definition) 또는 유사한 메소드를 사용하여 호환성을 극대화하여 라이브러리가 다양한 모듈 로더를 지원하는지 확인하십시오.
버전화 및 릴리스 : 시맨틱 버전을 업데이트하고 NPM 또는 Bower와 같은 패키지 관리자에게 라이브러리를 더 많은 잠재 고객에게 도달하십시오.
이 기사는 Adrian Sandu, Vildan Softic 및 Dan Prince가 동료 검토했습니다. itepoint 컨텐츠를 최대한 활용 한 모든 Sitepoint Peer Reviewers에게 감사합니다! 우리는 종종 라이브러리를 사용합니다. 라이브러리는 개발자가 프로젝트에서 사용할 수있는 포장 코드이며, 의심 할 여지없이 워크로드를 저장하고 중복 휠을 피합니다. 재사용 가능한 패키지 (오픈 소스 또는 폐쇄 소스 모두)를 사용하는 것이 과거 프로젝트에서 수동으로 동일한 기능을 재구성하거나 복사하는 것보다 낫습니다. 그러나 패키지 코드 외에도 라이브러리는 정확히 무엇입니까? 일부 예외를 제외하고 라이브러리는 항상 단일 파일 또는 단일 폴더에있는 여러 파일이어야합니다. 코드는 별도로 유지 관리해야하며 프로젝트에 구현 될 때 동일하게 유지됩니다. 라이브러리를 사용하면 프로젝트 별 구성 및/또는 동작을 설정할 수 있어야합니다. USB 포트를 통한 통신 만 허용하는 USB 장치로 생각하십시오. 마우스 및 키보드와 같은 일부 장치에서는 장치가 제공 한 인터페이스를 통해 구성 할 수 있습니다.
이 기사에서는 라이브러리가 어떻게 구축되었는지 설명하겠습니다. 다루는 대부분의 주제는 다른 언어에 적합하지만이 게시물은 JavaScript 라이브러리 구축에 중점을 둡니다.
왜 자신의 JavaScript 라이브러리를 구축합니까?
우선, 라이브러리는 기존 코드를 매우 편리하게 만듭니다. 오래된 프로젝트를 파고 일부 파일을 복사 할 필요는 없으며 도서관을 가져 오십시오. 이것은 또한 응용 프로그램을 파편화하여 응용 프로그램 코드를 더 작고 유지 관리하기 쉽게 만듭니다.
Christ Church Library (Source) 추상화와 같이 특정 목표를 달성하고 재사용 할 수있는 모든 코드는 도서관에 포장 될 수있는 후보입니다. 흥미로운 예는 jQuery입니다. JQuery의 API는 단순화 된 DOM API 이상의 것이지만, 몇 년 전 크로스 브라우저 DOM 운영이 매우 어려웠을 때 많은 의미가있었습니다.
오픈 소스 프로젝트가 대중화되고 점점 더 많은 개발자가 사용하면 사람들이 질문을 제출하거나 코드 기반에 기여하여 프로젝트에 참여하고 도울 가능성이 큽니다. 어느 쪽이든, 그것은 도서관과 이에 의존하는 모든 프로젝트에 도움이됩니다. 인기 오픈 소스 프로젝트는 큰 기회를 가져올 수 있습니다. 회사는 직업의 질에 깊은 인상을 받고 직업을 제공 할 수 있습니다. 회사가 프로젝트를 응용 프로그램에 통합하는 데 도움을 요청할 것입니다. 결국, 아무도 당신보다 당신의 도서관을 더 잘 아는 사람은 없습니다.
많은 사람들에게, 그것은 단지 취미 일뿐입니다 - 코드 작성 과정을 즐기고, 다른 사람들을 돕고, 과정에서 배우고 성장하는 것입니다. 한계를 밀고 새로운 것을 시도 할 수 있습니다.
범위와 대상
첫 번째 코드 줄을 작성하기 전에 라이브러리의 목적이 무엇인지 분명해야합니다. 목표를 설정해야합니다. 그들과 함께, 당신은 당신이 당신의 도서관에서 해결하고 싶은 문제에 집중할 수 있습니다. 도서관은 원래의 질문보다 사용하기 쉽고 기억해야합니다. API가 더 간단할수록 사용자가 라이브러리 사용을보다 쉽게 배울 수 있습니다. 인용 유닉스 철학 :
는 한 가지만하고 잘 수행
스스로에게 물어보십시오 : 도서관은 어떤 문제를 해결합니까? 어떻게 해결할 건가요? 모든 것을 직접 쓰겠습니까, 아니면 다른 사람의 도서관을 사용할 수 있습니까?
Github와 같은 많은 서비스는 모든 버전에 대한 개요와 각 버전에 대한 다운로드 링크를 제공합니다.
공개 저장소에 게시
npm
많은 프로그래밍 언어에는 패키지 관리자가 제공되거나 타사 패키지 관리자가 사용될 수 있습니다. 이를 통해 이러한 언어를 위해 특별히 라이브러리를 소개 할 수 있습니다. 예를 들어, PHP의 작곡가와 Ruby 's Rubygems.
기본적으로 NPM 패키지는 공개적으로 게시됩니다. 괜찮아요! 개인 패키지를 게시하거나 개인 레지스트리를 설정하거나 게시하지 않아도됩니다.
패키지를 게시하려면 프로젝트에는 package.json 파일이 필요합니다. 이 작업을 수동으로 수행하거나 대화식 마법사를 사용할 수 있습니다. 마법사를 시작하려면 다음을 입력하십시오
버전 속성은 GIT 태그와 일치해야합니다. 또한 readme.md 파일이 있는지 확인하십시오. Github와 마찬가지로 NPM은 패키지를 렌더링하는 페이지로 사용합니다.
후에는 다음 명령을 입력하여 패키지를 게시 할 수 있습니다.
그게 다야! NPM 패키지를 게시했습니다.
bower
몇 년 전, Bower라는 다른 패키지 관리자가 나타났습니다. 그러나이 패키지 관리자는 특정 언어가 아니라 특정 플랫폼 웹 용으로 설계되었습니다. 모든 주요 프론트 엔드 리소스를 찾을 수 있습니다. 라이브러리가 브라우저와 호환되는 경우 Bower에 패키지를 게시하는 것이 합리적입니다.
Bower에 익숙하지 않으면 초보자 가이드도 있습니다.
<code>// 以空的UserAgent字符串开始
var userAgent = new UserAgent;
// 创建并添加第一个产品:EvilCorpBrowser/1.2 (X11; Linux; en-us)
var application = new UserAgent.Product('EvilCorpBrowser', '1.2');
application.setComment('X11', 'Linux', 'en-us');
userAgent.addProduct(application);
// 创建并添加第二个产品:Blink/20420101
var engine = new UserAgent.Product('Blink', '20420101');
userAgent.addProduct(engine);
// EvilCorpBrowser/1.2 (X11; Linux; en-us) Blink/20420101
userAgent.toString();
// 对引擎产品进行更多更改
engine.setComment('Hello World');
// EvilCorpBrowser/1.2 (X11; Linux; en-us) Blink/20420101 (Hello World)
userAgent.toString();
</code>
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
NPM과 마찬가지로 개인 저장소를 설정할 수도 있습니다. 마법사에서 완전히 게시하는 것을 방지 할 수도 있습니다.
흥미롭게도 지난 1 년 또는 2 년 동안 많은 사람들이 프론트 엔드 리소스를 위해 NPM으로 전환하는 것 같습니다. NPM 패키지는 주로 JavaScript이지만 많은 프론트 엔드 패키지도 NPM에서 릴리스됩니다. 어느 쪽이든, Bower는 여전히 매우 인기가 있으므로 패키지를 Bower에 게시하는 것이 좋습니다.
Bower가 실제로 NPM 모듈이며 처음에는 영감을 받았다고 언급 했습니까? 명령 는 매우 유사합니다. bower.json 파일을 생성하려면 다음을 입력하십시오
npm init와 마찬가지로 설명은 자명합니다. 마지막으로, 패키지를 게시하십시오 :
그게 IT입니다. 모든 사람이 노드 프로젝트 및/또는 웹에 사용할 수 있도록 라이브러리를 인터넷에 게시했습니다!
결론
핵심 제품은 라이브러리입니다. 문제가 해결되고 사용하기 쉽고 안정적이며 팀이나 많은 개발자를 매우 행복하게 만들 것입니다.
<code>// 以空的UserAgent字符串开始
var userAgent = new UserAgent;
// 创建并添加第一个产品:EvilCorpBrowser/1.2 (X11; Linux; en-us)
var application = new UserAgent.Product('EvilCorpBrowser', '1.2');
application.setComment('X11', 'Linux', 'en-us');
userAgent.addProduct(application);
// 创建并添加第二个产品:Blink/20420101
var engine = new UserAgent.Product('Blink', '20420101');
userAgent.addProduct(engine);
// EvilCorpBrowser/1.2 (X11; Linux; en-us) Blink/20420101
userAgent.toString();
// 对引擎产品进行更多更改
engine.setComment('Hello World');
// EvilCorpBrowser/1.2 (X11; Linux; en-us) Blink/20420101 (Hello World)
userAgent.toString();
</code>
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
내가 언급 한 많은 작업은 테스트 실행, 태그 작성, Package.json의 버전 업데이트 및 NPM 및 Bower에 패키지를 다시 게시하는 등 자동화하기 쉽습니다. 이곳에서 지속적인 통합 영역에 들어가고 Travis CI 또는 Jenkins와 같은 도구를 사용합니다. 나는 Tim Evko의 기사에 대해 앞서 언급했으며 이것에 대해서도 언급했다.
도서관을 제작하고 게시 했습니까? 아래 의견 섹션에서 공유하십시오!
자주 묻는 질문 (FAQ)은 자신의 JavaScript 라이브러리를 설계하고 구축하는 데있어
내 자신의 JavaScript 라이브러리를 만드는 것의 이점은 무엇입니까?
<code>// 在初始化时配置
var userAgent = new UserAgent({
commentSeparator: ';'
});
// 使用公共方法进行运行时配置
userAgent.setOption('commentSeparator', '-');
// 使用公共属性进行运行时配置
userAgent.commentSeparator = '-';
</code>
로그인 후 복사
로그인 후 복사
자신만의 JavaScript 라이브러리를 만드는 것은 많은 이점이 있습니다. 먼저 여러 프로젝트에서 코드를 재사용하여 장기적으로 시간과 노력을 절약 할 수 있습니다. 둘째,보다 체계적이고 읽기 쉬운 방식으로 코드를 구성하는 데 도움이 될 수 있습니다. 이것은 대규모 프로젝트를 수행하거나 다른 개발자와 함께 일할 때 특히 유용합니다. 마지막으로, 자신의 라이브러리를 만드는 것은 JavaScript 및 소프트웨어 개발 원칙에 대한 이해를 심화시키는 데 도움이되는 훌륭한 학습 경험이 될 수 있습니다.
JavaScript 라이브러리 생성을 어떻게 시작합니까?
JavaScript 라이브러리를 만드는 첫 번째 단계는 그 목적을 정의하는 것입니다. 라이브러리가 어떤 기능을 제공하기를 원하십니까? 도서관이 원하는 일을 명확하게 이해하면 코드 작성을 시작할 수 있습니다. 여기에는 일반적으로 필요한 기능을 제공하는 일련의 기능을 정의하는 것이 포함됩니다. 그런 다음 이러한 기능은 다른 개발자가 사용할 수있는 공개 API를 통해 노출됩니다.
Python은 부드러운 학습 곡선과 간결한 구문으로 초보자에게 더 적합합니다. JavaScript는 가파른 학습 곡선과 유연한 구문으로 프론트 엔드 개발에 적합합니다. 1. Python Syntax는 직관적이며 데이터 과학 및 백엔드 개발에 적합합니다. 2. JavaScript는 유연하며 프론트 엔드 및 서버 측 프로그래밍에서 널리 사용됩니다.
웹 개발에서 JavaScript의 주요 용도에는 클라이언트 상호 작용, 양식 검증 및 비동기 통신이 포함됩니다. 1) DOM 운영을 통한 동적 컨텐츠 업데이트 및 사용자 상호 작용; 2) 사용자가 사용자 경험을 향상시키기 위해 데이터를 제출하기 전에 클라이언트 확인이 수행됩니다. 3) 서버와의 진실한 통신은 Ajax 기술을 통해 달성됩니다.
실제 세계에서 JavaScript의 응용 프로그램에는 프론트 엔드 및 백엔드 개발이 포함됩니다. 1) DOM 운영 및 이벤트 처리와 관련된 TODO 목록 응용 프로그램을 구축하여 프론트 엔드 애플리케이션을 표시합니다. 2) Node.js를 통해 RESTFULAPI를 구축하고 Express를 통해 백엔드 응용 프로그램을 시연하십시오.
보다 효율적인 코드를 작성하고 성능 병목 현상 및 최적화 전략을 이해하는 데 도움이되기 때문에 JavaScript 엔진이 내부적으로 작동하는 방식을 이해하는 것은 개발자에게 중요합니다. 1) 엔진의 워크 플로에는 구문 분석, 컴파일 및 실행; 2) 실행 프로세스 중에 엔진은 인라인 캐시 및 숨겨진 클래스와 같은 동적 최적화를 수행합니다. 3) 모범 사례에는 글로벌 변수를 피하고 루프 최적화, Const 및 Lets 사용 및 과도한 폐쇄 사용을 피하는 것이 포함됩니다.
Python과 JavaScript는 커뮤니티, 라이브러리 및 리소스 측면에서 고유 한 장점과 단점이 있습니다. 1) Python 커뮤니티는 친절하고 초보자에게 적합하지만 프론트 엔드 개발 리소스는 JavaScript만큼 풍부하지 않습니다. 2) Python은 데이터 과학 및 기계 학습 라이브러리에서 강력하며 JavaScript는 프론트 엔드 개발 라이브러리 및 프레임 워크에서 더 좋습니다. 3) 둘 다 풍부한 학습 리소스를 가지고 있지만 Python은 공식 문서로 시작하는 데 적합하지만 JavaScript는 MDNWebDocs에서 더 좋습니다. 선택은 프로젝트 요구와 개인적인 이익을 기반으로해야합니다.
개발 환경에서 Python과 JavaScript의 선택이 모두 중요합니다. 1) Python의 개발 환경에는 Pycharm, Jupyternotebook 및 Anaconda가 포함되어 있으며 데이터 과학 및 빠른 프로토 타이핑에 적합합니다. 2) JavaScript의 개발 환경에는 Node.js, VScode 및 Webpack이 포함되어 있으며 프론트 엔드 및 백엔드 개발에 적합합니다. 프로젝트 요구에 따라 올바른 도구를 선택하면 개발 효율성과 프로젝트 성공률이 향상 될 수 있습니다.
C와 C는 주로 통역사와 JIT 컴파일러를 구현하는 데 사용되는 JavaScript 엔진에서 중요한 역할을합니다. 1) C는 JavaScript 소스 코드를 구문 분석하고 추상 구문 트리를 생성하는 데 사용됩니다. 2) C는 바이트 코드 생성 및 실행을 담당합니다. 3) C는 JIT 컴파일러를 구현하고 런타임에 핫스팟 코드를 최적화하고 컴파일하며 JavaScript의 실행 효율을 크게 향상시킵니다.
JavaScript는 웹 사이트, 모바일 응용 프로그램, 데스크탑 응용 프로그램 및 서버 측 프로그래밍에서 널리 사용됩니다. 1) 웹 사이트 개발에서 JavaScript는 HTML 및 CSS와 함께 DOM을 운영하여 동적 효과를 달성하고 jQuery 및 React와 같은 프레임 워크를 지원합니다. 2) 반응 및 이온 성을 통해 JavaScript는 크로스 플랫폼 모바일 애플리케이션을 개발하는 데 사용됩니다. 3) 전자 프레임 워크를 사용하면 JavaScript가 데스크탑 애플리케이션을 구축 할 수 있습니다. 4) node.js는 JavaScript가 서버 측에서 실행되도록하고 동시 요청이 높은 높은 요청을 지원합니다.