목표를 정리하십시오 : 라이브러리 구축을 시작하기 전에 해결하고자하는 특정 문제를 명확히하고 집중하고 유용성을 보장합니다.
사용자 중심 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를 통해 노출됩니다.
JavaScript는 현대 웹 개발의 초석이며 주요 기능에는 이벤트 중심 프로그래밍, 동적 컨텐츠 생성 및 비동기 프로그래밍이 포함됩니다. 1) 이벤트 중심 프로그래밍을 사용하면 사용자 작업에 따라 웹 페이지가 동적으로 변경 될 수 있습니다. 2) 동적 컨텐츠 생성을 사용하면 조건에 따라 페이지 컨텐츠를 조정할 수 있습니다. 3) 비동기 프로그래밍은 사용자 인터페이스가 차단되지 않도록합니다. JavaScript는 웹 상호 작용, 단일 페이지 응용 프로그램 및 서버 측 개발에 널리 사용되며 사용자 경험 및 크로스 플랫폼 개발의 유연성을 크게 향상시킵니다.
JavaScript의 최신 트렌드에는 Typescript의 Rise, 현대 프레임 워크 및 라이브러리의 인기 및 WebAssembly의 적용이 포함됩니다. 향후 전망은보다 강력한 유형 시스템, 서버 측 JavaScript 개발, 인공 지능 및 기계 학습의 확장, IoT 및 Edge 컴퓨팅의 잠재력을 포함합니다.
각각의 엔진의 구현 원리 및 최적화 전략이 다르기 때문에 JavaScript 엔진은 JavaScript 코드를 구문 분석하고 실행할 때 다른 영향을 미칩니다. 1. 어휘 분석 : 소스 코드를 어휘 단위로 변환합니다. 2. 문법 분석 : 추상 구문 트리를 생성합니다. 3. 최적화 및 컴파일 : JIT 컴파일러를 통해 기계 코드를 생성합니다. 4. 실행 : 기계 코드를 실행하십시오. V8 엔진은 즉각적인 컴파일 및 숨겨진 클래스를 통해 최적화하여 Spidermonkey는 유형 추론 시스템을 사용하여 동일한 코드에서 성능이 다른 성능을 제공합니다.
JavaScript는 현대 웹 개발의 핵심 언어이며 다양성과 유연성에 널리 사용됩니다. 1) 프론트 엔드 개발 : DOM 운영 및 최신 프레임 워크 (예 : React, Vue.js, Angular)를 통해 동적 웹 페이지 및 단일 페이지 응용 프로그램을 구축합니다. 2) 서버 측 개발 : Node.js는 비 차단 I/O 모델을 사용하여 높은 동시성 및 실시간 응용 프로그램을 처리합니다. 3) 모바일 및 데스크탑 애플리케이션 개발 : 크로스 플랫폼 개발은 개발 효율을 향상시키기 위해 반응 및 전자를 통해 실현됩니다.
Python은 부드러운 학습 곡선과 간결한 구문으로 초보자에게 더 적합합니다. JavaScript는 가파른 학습 곡선과 유연한 구문으로 프론트 엔드 개발에 적합합니다. 1. Python Syntax는 직관적이며 데이터 과학 및 백엔드 개발에 적합합니다. 2. JavaScript는 유연하며 프론트 엔드 및 서버 측 프로그래밍에서 널리 사용됩니다.
이 기사에서는 Contrim에 의해 확보 된 백엔드와의 프론트 엔드 통합을 보여 주며 Next.js를 사용하여 기능적인 Edtech SaaS 응용 프로그램을 구축합니다. Frontend는 UI 가시성을 제어하기 위해 사용자 권한을 가져오고 API가 역할 기반을 준수하도록합니다.
C/C에서 JavaScript로 전환하려면 동적 타이핑, 쓰레기 수집 및 비동기 프로그래밍으로 적응해야합니다. 1) C/C는 수동 메모리 관리가 필요한 정적으로 입력 한 언어이며 JavaScript는 동적으로 입력하고 쓰레기 수집이 자동으로 처리됩니다. 2) C/C를 기계 코드로 컴파일 해야하는 반면 JavaScript는 해석 된 언어입니다. 3) JavaScript는 폐쇄, 프로토 타입 체인 및 약속과 같은 개념을 소개하여 유연성과 비동기 프로그래밍 기능을 향상시킵니다.
일상적인 기술 도구를 사용하여 기능적 다중 테넌트 SaaS 응용 프로그램 (Edtech 앱)을 구축했으며 동일한 작업을 수행 할 수 있습니다.
먼저, 다중 테넌트 SaaS 응용 프로그램은 무엇입니까?
멀티 테넌트 SAAS 응용 프로그램은 노래에서 여러 고객에게 서비스를 제공 할 수 있습니다.