1. Webpack이 무엇인가요?
webpack은 정적 모듈 번들러로, webpack은 애플리케이션에 필요한 모든 모듈을 포함하는 종속성 그래프를 반복적으로 구축한 다음 이러한 모듈을 하나 이상의 번들로 패키징합니다.
Webpack은 생산 라인과 같습니다. 소스 파일을 출력 결과로 변환하기 전에 일련의 처리 프로세스(로더)를 거쳐야 합니다. 이 생산 라인의 각 처리 프로세스에는 단일 책임이 있으며 여러 프로세스 간에 종속성이 있습니다. 현재 처리가 완료된 후에만 처리를 위해 다음 프로세스로 넘겨질 수 있습니다.
플러그인은 생산 라인에 삽입되어 특정 시간에 생산 라인의 리소스를 처리하는 기능과 같습니다. Webpack은 실행 프로세스 중에 이벤트를 브로드캐스트합니다. 플러그인은 관심 있는 이벤트만 수신하면 되며 이 생산 라인에 참여하여 생산 라인의 작동을 변경할 수 있습니다.
2. 패키징 프로세스/빌드 프로세스에 대해 이야기해 주실 수 있나요?
3. 프론트엔드 운영 최적화에 대해 이야기해 주실 수 있나요?
webpack의 실행 프로세스는 직렬 프로세스이며, 그 워크플로우는 다양한 플러그인을 직렬로 연결하는 것입니다.
npx webpack
패키징 명령의 명령줄 실행 시작npx webpack
打包命令开始
1.初始化编译参数
:从配置文件和shell命令中读取与合并参数
2.开始编译
:根据上一步得到的参数初始化Compiler对象,加载所有配置的Plugin,执行对象的 run 方法开始执行编译。
3.确定入口
:根据配置中的 entry 找出所有的入口文件
4.编译模块
:从入口文件触发,调用所有配置的Loader对模块进行翻译,再找出该模块依赖的模块,然后递归本步骤直到所有入口依赖的文件都进行翻译。
5.完成模块编译
:在经过第4步使用 Loader 翻译完所有模块后,得到了每个模块被翻译后的最终内容以及它们之间的依赖关系图。
6.输出资源
:根据依赖关系图,组装成一个个包含多个模块的Chunk,再把每个Chunk转化成一个单独的文件加入到输出列表,根据配置确定输出的路径和文件名,输出。
在以上过程中,Webpack
会在特定的时间点广播出特定的事件,插件在监听到感兴趣的事件后会执行特定的逻辑。
总结
3.Compiler编译对象掌控者webpack生命周期,不执行具体的任务,只是进行一些调度工作。比如执行模块创建、依赖收集、分块、打包等
2.
调用run之后,创建Compiltation实例,每次构建都会新创建一个Compiltation实例,包含了这次构建的基本信息Webpack
1.컴파일 매개변수 초기화
: 구성 파일 및 셸 명령에서 매개변수 읽기 및 병합컴파일 시작
: 이전 단계에서 얻은 매개변수에 따라 Compiler 객체를 초기화하고, 구성된 모든 플러그인을 로드한 후, 객체의 run 메소드를 실행하여 컴파일을 시작합니다.
항목 결정
: 구성의 항목에 따라 모든 항목 파일을 찾습니다. 컴파일 모듈
: 항목 파일에서 트리거되고 구성된 모든 로더를 호출하여 모듈 번역을 수행한 다음 해당 모듈이 의존하는 모듈을 찾은 다음 모든 항목 종속 파일이 번역될 때까지 이 단계를 반복합니다. 완전한 모듈 컴파일
: 4단계에서 Loader를 사용하여 모든 모듈을 번역한 후 각 모듈의 최종 번역된 내용과 모듈 간의 종속성 다이어그램을 얻습니다. 출력 리소스
: 종속성 그래프에 따라 여러 모듈을 포함하는 청크로 조립한 다음 각 청크를 별도의 파일로 변환하여 출력 목록에 추가하고 구성에 따라 출력을 결정합니다. 경로 및 파일 이름, 출력. 위 프로세스에서 Webpack
은 특정 시점에 특정 이벤트를 브로드캐스팅하고, 플러그인은 관심 있는 이벤트를 청취한 후 특정 로직을 실행합니다.
요약컴파일러 컴파일 개체는 웹팩 수명 주기를 제어하며 특정 작업을 수행하지 않고 일부 예약 작업만 수행합니다. 예를 들어 모듈 생성, 종속성 수집, 청킹, 패키징 등을 수행합니다.
Webpack의 기본 정보가 포함된 새로운 Compiltation 인스턴스를 생성합니다. code>는 특정 시점에 특정 이벤트를 브로드캐스트하며, 플러그인은 관심 있는 이벤트를 청취한 후 특정 로직을 실행합니다.
파일 구문 분석을 시작하여 구성 파일(webpack.config.js)에 지정된 항목에서 AST 구문 트리를 구축합니다.
Webpack에서 로더의 역할은 무엇입니까/로더란 무엇입니까? 🎜Loader는 🎜webpack에서 여러 파일 형식을 처리하기 위해 제공되는 메커니즘입니다🎜. webpack은 JS와 JSON만 알고 있으므로 Loader는 다른 유형의 리소스를 전처리하는 번역기와 동일합니다. 🎜 모듈의 "소스 코드"를 변환하는 데 사용됩니다. 🎜 로더는 체인콜을 지원하며, 호출 순서는 오른쪽에서 왼쪽입니다. **체인의 각 로더는 이전에 처리된 리소스를 처리하고 결국 js 코드가 됩니다. 🎜 로더의 전처리 기능을 통해 JavaScript 생태계에 더 많은 기능을 제공할 수 있습니다. 🎜🎜🎜🎜🎜일반적인 로더는 무엇인가요? 🎜🎜🎜🎜less-loader: 더 적은 수의 파일을 CSS 파일로 컴파일🎜🎜🎜🎜개발 중에 개발 효율성을 높이기 위해 CSS 스타일을 작성하는 데 전처리기를 덜 사용하는 경우가 많습니다🎜
Plugin이란 무엇입니까? 플러그인의 주요 목적은 패키징 최적화 및 코드 압축과 같이 로더로 달성할 수 없는 문제를 해결하는 것입니다.
플러그인이 로드된 후 플러그인에 의해 정의된 기능은 webpack 빌드 중 특정 시점에 트리거되어 webpack이 작업을 수행하도록 돕습니다. webpack에 대한 기능 확장을 구현합니다.
플러그인은 생산 라인에 삽입되어 특정 시간에 생산 라인의 리소스를 처리하는 기능과 같습니다. Webpack은 실행 프로세스 중에 이벤트를 브로드캐스트합니다. 플러그인은 관심 있는 이벤트만 수신하면 되며 이 생산 라인에 참여하여 생산 라인의 작동을 변경할 수 있습니다.
또는 이전 요약을 사용하여 로더와 플러그인이 각각 무엇인지 설명하세요
1. 로더는 컴파일 단계에서 실행됩니다실행 시간
2. 플러그인은 전체 주기에서 작동합니다
사용 방법 Loader
플러그인 사용: 1. 다운로드 2. 견적 3.
mode = production
,生产环境默认开启tree-shaking
부작용에 대하여
코드 분할 분할 청크 - 최적화 구성 항목에서 구성됨
DLL 기술을 사용하여 자주 업데이트되지 않는 프레임워크 및 라이브러리를 별도로 패키징하고 청크를 생성합니다.
일반적으로 node_module은 파일로 패키징됩니다.
모든 참조는 import() 함수 모듈에서 참조하는 코드는 별도의 패키지로 패키징되어 청크가 저장된 디렉터리에 배치됩니다. 브라우저가 이 코드 줄을 실행하면 자동으로 이 리소스를 요청하고 비동기 로딩을 구현합니다.
1. 최적화 구성 항목에서 플러그인을 압축용 압축기로 구성합니다.2. 플러그인에서 압축하려면 이 플러그인을 사용하세요
아이디어 1: 빌드해야 하는 파일 또는 코드 줄이기
일반적으로 node_module은 파일로 패키징됩니다.
DLL 기술을 사용하면 자주 업데이트되지 않는 프레임워크 및 라이브러리를 별도로 패키징하여 생성할 수 있습니다. 덩어리
프로젝트 소스 코드도 분할해야 하며 경로를 기반으로 패키지 파일을 분할할 수 있습니다.-> 경로의 지연 로딩을 구현하는 방법은 무엇입니까? 웹팩에서 구성 요소의 비동기 로딩을 구현하는 방법은 무엇입니까?
아이디어 2: 더 많은 구성을 하세요
프로세스 시작 및 프로세스 통신에 오버헤드가 있고 작업 시간이 상대적으로 길며, 따라서 여러 프로세스가 필요합니다. Packaging
【관련 권장 사항: javascript 비디오 튜토리얼, 프로그래밍 비디오】
위 내용은 [편집 및 공유] 웹팩 인터뷰 질문 일부 (답변 분석 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!