패키지 개념을 배우고 사용자 정의 패키지 플러그인을 만듭니다.
우리는 왜 웹 패키지가 필요합니까?
강화된 브라우저 기능, 더 빠른 자바스크립트 엔진과 아이패드 등 모바일 기기의 급증으로 클라이언트가 더 많은 JS 코드를 작성하는 추세가 서버에서 클라이언트 개발로 뚜렷하게 바뀌었다.
이것은 클라이언트에 서로 의존하는 Js 코드, 모듈 및 의존 항목을 더 많이 생성할 것이다.
예를 들어 하나의 파일
index.js
을 고려하면 다른 두 파일file1.js
과 file2.js
을 가져왔고 file2.js
는 file1.js
에 의존했다.이 경우 브라우저는 어떤 파일을 먼저 불러와서 필요한 결과를 만드는지 어떻게 알 수 있습니까?솔루션
웹 패키지!💫
다음 질문은 웹 패키지가 어떻게 이 문제를 해결해 줍니까?
Webpack은 모듈을 동시에 구축하고 로드할 수 있는 모듈 바인딩입니다.이것은 의존항을 모듈로 전환하고 정확한 시간에 정확한 범위 내에서 의존항과 모듈을 추출할 수 있도록 합니다.모든 의존항과 모듈을 파일에 불러옵니다. 이 파일은 다운로드됩니다.
이것은 웹 패키지가 무엇인지에 대한 기본적인 해석이지만, 웹 패키지가 실제로 이 모든 일을 어떻게 완성하는지 살펴보자.
웹 패키지는 엔진 뚜껑 위에서 어떻게 작동합니까?
이 절에서는
webpack.config.js
파일에서 클라이언트 응용 프로그램의 초기 설정을 설정하는 데 사용할 것을 토론할 것이다.입구 - 의존 관계도의 입구점으로 사용되며 필요에 따라 모듈을 만듭니다.
위의 예에서
bootstrap.min.ts
는 프로그램을 불러오고 시작하는 첫 번째 파일입니다.Webpack은 이 파일을 사용하여 종속성 다이어그램을 구성합니다.출력 - 패키지를 나누어 주는 절대 경로를 정의합니다.
Loaders - 자바스크립트가 모듈에서 비자바스크립트 모듈을 사용한 후 이 모듈을 해석하는 방법을 알려줍니다.그것은 자원 파일을 가져와 수정된 상태를 되돌려줍니다.
modules: {
rules: {
{
test: /\.ts$\,
use: 'ts-loader'
}
}
}
예를 들어 css, babel 등 더 많은 불러오는 프로그램이 있습니다. js를 제외한 모든 파일은 이 함수를 통해javascript 모듈로 변환됩니다.이 모듈을 배제, 포함, 강제 등 속성으로 선별할 수 있습니다.또 다른 방법은 마운트기를 연결할 수 있다. 이렇게 하면 한 동작을 수행하는 마운트기가 한 번 변환되고, 그것들을 함께 연결할 수 있다.
rules: [{
test: /\.less$\,
use: ['css-loader', 'style-loader', 'less-loader']
}]
플러그인 - 플러그인은 ES5 클래스로 하나의 응용 함수를 실현하고 전체 컴파일 생명주기에 연결할 수 있습니다.컴파일러는 그것을 사용하여 이벤트를 보냅니다.이것은 새 실례를 config 대상의 플러그인 키에 추가합니다.
var HelloWorldPlugin = require('hello-world');
module.exports = {
// ... configuration settings here ...
plugins: [new HelloWorldPlugin({ options: true })]
};
이것은 주로 웹 패키지가 엔진 뚜껑에 있는 기능을 포함한다.응용 프로그램을 처리할 때 여러 가지 방법을 사용할 수 있다.어떻게 엔진 뚜껑 아래에 웹 패키지를 설치합니까?
이 절에서 우리는 웹 패키지의 체계 구조가 무엇인지, 그리고 그것이 시스템 귀속기로서 어떻게 작동하는지 토론할 것이다.이 점을 이해하기 위해서 우리는 한 문제부터 시작할 것이다. "녹화할 수 있는 것은 무엇입니까?"
녹음 가능
그것은 플러그인 시스템의 주간이다.이것은 코드를 기존 클래스와 혼합하고, 예를 들어 apply plugins parallel이나 apply plugins async 등 기존 함수를 이용하여 노드 이벤트 발사기와 같은 탐지 중인 이벤트를 보낼 수 있도록 합니다.예를 들어, 간단한 기본 플러그인 설명은 다음과 같습니다.
class BasicPlugin {
apply(compiler) {
compiler.apply('make', (compilation) => {
console.log('I now have access to the compilation!!!!!!');
});
}
}
module.exports = BasicPlugin;
Tapable 실례는 클래스/대상입니다. Tapable와 삽입할 수 있는 것들을 확장합니다.웹 패키지를 담당하는 클릭 가능한 실례가 있습니다.index.js
일부 경로나 다른 의존 항목을 사용하여 가져오는 것을 지정하고 해상도는 일부 파일 경로에서 의존 관계도를 가져오고 구축하는 정보에서 파일을 찾는 데 도움을 줍니다.전체 과정을 총결하다.
Webpack은 입구점을 먼저 읽은 다음 파서를 통해 존재 여부를 확인합니다.이후, 그것은 우리의 일반 모듈 대상을 통과할 것이며, 이 대상은 해상도를 통과할 것이다.해석기가 의존항 유형을 식별하면, 자바스크립트 모듈이 아니면 로더에게 전달하고, 자바스크립트 모듈이면 의존항만 수집하여 모듈에 추가합니다.그리고 모듈에 존재하는 의존 관계를 다시 한 번 검사하여 해석기에 전달하고 완전한 의존 관계도를 구축할 때까지 전체 순환을 반복해야 한다.
이것들이 있으면, 너는 이 웹 페이지가 어떻게 내부에서 일하는지 알게 될 것이다.😁 💃
다음 글은 크롬 확장을 구축할 때 직면하는 문제를 해결하기 위해 첫 번째 패키지 플러그인을 만드는 방법을 소개할 것입니다.
즐겁게 읽으세요!📖
Reference
이 문제에 관하여(패키지 개념을 배우고 사용자 정의 패키지 플러그인을 만듭니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jasmin/learning-webpack-concepts-and-creating-your-custom-webpack-plugin-gal텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)