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

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Vue는 대화형의 효율적인 웹 애플리케이션을 신속하게 구축하는 데 도움이 되는 탁월한 JavaScript 프레임워크입니다. Vue3은 Vue의 최신 버전으로, 많은 새로운 특징과 기능을 도입했습니다. Webpack은 현재 프로젝트의 다양한 리소스를 관리하는 데 도움이 되는 가장 인기 있는 JavaScript 모듈 패키저 및 빌드 도구 중 하나입니다. 이 기사에서는 Webpack을 사용하여 Vue3 애플리케이션을 패키징하고 빌드하는 방법을 소개합니다. 1. 웹팩 설치

최근 몇 년간 큰 인기를 얻은 프로그래밍 언어로 Go 언어는 많은 기업과 기업에서 인터뷰의 핫스팟이 되었습니다. Go 언어 초보자의 경우 인터뷰 과정에서 관련 질문에 어떻게 대답할지가 탐구해 볼 만한 질문입니다. 초보자가 참고할 수 있는 일반적인 Go 언어 인터뷰 질문 5가지와 답변은 다음과 같습니다. Go 언어의 가비지 수집 메커니즘이 어떻게 작동하는지 소개해주세요. Go 언어의 가비지 수집 메커니즘은 마크 스윕 알고리즘과 3색 표시 알고리즘을 기반으로 합니다. Go 프로그램의 메모리 공간이 충분하지 않으면 Go 가비지 수집기가

차이점: 1. 웹팩 서버의 시작 속도는 Vite의 시작 속도보다 느립니다. Vite는 시작할 때 패키징할 필요가 없고 모듈 종속성을 분석하고 컴파일할 필요가 없으므로 시작 속도가 매우 빠릅니다. 2. Vite 핫 업데이트는 Vite의 HRM 측면에서 webpack보다 빠릅니다. 특정 모듈의 내용이 변경되면 브라우저가 모듈을 다시 요청하게 됩니다. 3. Vite는 esbuild를 사용하여 종속성을 사전 구축하는 반면 webpack은 노드를 기반으로 합니다. 4. Vite의 생태계는 웹팩만큼 좋지 않으며, 로더와 플러그인도 충분히 풍부하지 않습니다.

잘 알려진 프로그래밍 학습 웹사이트인 PHP 중국어 웹사이트는 프런트 엔드 개발자가 React 인터뷰 장애물을 준비하고 해결하는 데 도움이 되는 몇 가지 React 인터뷰 질문을 편집했습니다.

이 기사에서는 수집할 가치가 있는 몇 가지 선택된 웹 프런트엔드 인터뷰 질문을 요약합니다(답변 포함). 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.

웹 개발 기술이 지속적으로 발전하면서 프론트엔드와 백엔드 분리, 모듈화 개발이 보편화된 추세가 되었습니다. PHP는 일반적으로 사용되는 백엔드 언어입니다. 모듈식 개발을 수행할 때 모듈을 관리하고 패키징하려면 몇 가지 도구를 사용해야 합니다. Webpack은 사용하기 매우 쉬운 모듈식 패키징 도구입니다. 이 글에서는 모듈 개발을 위해 PHP와 웹팩을 사용하는 방법을 소개합니다. 1. 모듈형 개발이란 무엇입니까? 모듈형 개발은 프로그램을 서로 다른 독립적인 모듈로 분해하는 것을 의미합니다.

구성 방법: 1. 가져오기 방법을 사용하여 ES6 코드를 패키지된 js 코드 파일에 넣습니다. 2. npm 도구를 사용하여 babel-loader 도구를 설치합니다. 구문은 "npm install -D babel-loader @babel/core"입니다. @babel/preset-env"; 3. babel 도구의 구성 파일 ".babelrc"를 생성하고 트랜스코딩 규칙을 설정합니다. 4. webpack.config.js 파일에서 패키징 규칙을 구성합니다.

이 글에서는 반드시 마스터해야 할 Angular 면접 질문 50개를 초급, 중급, 고급의 세 부분으로 분석하여 철저하게 이해하도록 도와줄 것입니다!
