웹 팩 다 중 페이지 개발 실천
웹 팩 은 모듈 로 더 겸 포장 도구 로 js,css,페이지,이미지,영상 등 각종 자원 을 모듈 화 처리 할 수 있 습 니 다.현재 인터넷 에 많은 단일 페이지 의 웹 팩 모델 이 떠 돌 고 있 는데,그 많은 페이지 는?비교적 적 습 니 다.지금 은 여러 페이지 의 전단 모델 을 제공 합 니 다.잘 어 울 리 시 길 바 랍 니 다.
웹 팩 을 처음 접 했 을 때 웹 팩 은 한 페이지 에 만 적용 된다 고 생각 했 습 니 다.예 를 들 어 웹 팩+react,웹 팩+vue 등 입 니 다.저 는 웹 팩+vue 를 사용 하여 프로젝트 를 구축 하고 개발 하 는 과정 에서 웹 팩 의 강력 함 과 편 의 를 느 꼈 습 니 다.실제 프로젝트 수 요 를 바탕 으로 다 중 페이지 사이트 도 webapck 을 사용 하여 구축 할 수 있 을 까?그래서 탐색 을 시 작 했 고 결국은 비교적 완전한 해결 방안 을 구축 한 셈 이다.
본 고 는 하나의 실제 프로젝트 를 예 로 들 어 다 중 페이지 프로젝트 에서 웹 팩 을 어떻게 사용 하여 공정 화 구축 하 는 지 설명 한다.본 고 는 자신의 실천 경험 을 정리 한 것 이기 때문에 일부 해결 방안 이 가장 좋 은 것 이 아니 라 최적화 과정 에서 만약 에 잘못된 부분 이 있 으 면 지적 하 는 것 을 환영 합 니 다.
간단 한 소개
이 프로젝트 는 주로 웹 팩 2.x 구축 을 바탕 으로 gulp 를 보조 도구 로 합 니 다.전단 에 서 는 템 플 릿 엔진art-template을 사용 합 니 다.한 페이지 는 템 플 릿 파일 과 입구 파일 에 대응 합 니 다.입구 파일 에 서 는 import 또는 require 를 통 해 다른 모듈 을 도입 할 수 있 습 니 다.이 모듈 웹 팩 은 자동 으로 입구 파일 과 합 쳐 집 니 다.
전단 개발 환경 구축
주 디 렉 터 리 구조
├─dist #
└─src #
├─components #
├─static #
│ ├─css
│ ├─img
│ └─js
│ ├─component # js
│ ├─lib # js
│ ├─services #
│ └─util # js
├─template #html
└─views #
main.js #
gulpfile.js #gulp
package.json #
webpack.config.js #webpack
웹 팩 설정입구 파일
//
var entries = (function() {
var jsDir = path.resolve(__dirname, 'src/static/js/services');
var entryFiles = glob.sync(jsDir + '/*.js');
var map = {};
entryFiles.forEach(function(filePath) {
var filename = filePath.substring(filePath.lastIndexOf('\/') + 1, filePath.lastIndexOf('.'));
map[filename] = filePath;
});
return map;
})();
이 방법 은 파일 의 절대 경로 에 파일 이름 을 만 드 는 맵 입 니 다.예 를 들 어
entry: {
'page-1': '/../webpack-multipage-demo/src/static/js/services/page-1.js'
}
업데이트열 업 데 이 트 는 정말 잘 쓰 지 않 고 개발 효율 을 크게 향상 시 켰 다.
//
var devServer = env === 'production' ? {} : {
contentBase: path.resolve(__dirname),
compress: true,
historyApiFallback: true,
hot: true,
inline: true,
host: 'localhost',
port: 8080
};
또한,plugin 에 new webpack.HotModuleReplacement Plugin()을 추가 하여 Hot Module Replacemen 을 켜 면 열 업 데 이 트 를 실현 할 수 있 습 니 다.html 설정 생 성
같은 페이지 의 js 파일 과 템 플 릿 파일 의 이름 이 일치 하도록 약속 하고,최종 적 으로 이 js 에 따라 같은 이름 의 html 파일 을 생 성 합 니 다.
var htmlPages = (function() {
var artDir = path.resolve(__dirname, 'src/views');
var artFiles = glob.sync(artDir + '/*.art');
var array = [];
artFiles.forEach(function(filePath) {
var filename = filePath.substring(filePath.lastIndexOf('\/') + 1, filePath.lastIndexOf('.'));
array.push(new HtmlWebpackPlugin({
template: path.resolve(__dirname, 'src/template/index.html'),
filename: filename + '.html',
chunks: ['vendor', 'main', filename],
chunksSortMode: function(chunk1, chunk2) {
var order = ['vendor', 'main', filename];
var order1 = order.indexOf(chunk1.names[0]);
var order2 = order.indexOf(chunk2.names[0]);
return order1 - order2;
},
minify: {
removeComments: env === 'production' ? true : false,
collapseWhitespace: env === 'production' ? true : false
}
}));
});
return array;
})();
유 니 버 설 모듈 을 구성 요소 로 추출여러 페이지 에 필요 한 모듈 에 대해 서 는 일반적인 구성 요소 로 추출 할 수 있 습 니 다.구성 요소 의 구성 은 페이지 와 마찬가지 로 하나의.js 파일 과 하나의.art 파일,그리고 하나의.css 파일 로 js 파일 에 html 내용 을 렌 더 링 하고 마지막 으로 export 를 사용 할 때 직접 require 하면 됩 니 다.구체 적 실천 은 demo 를 참고 할 수 있 습 니 다.
문제 가 있다
본 논문 이론 을 바탕 으로 하 는 demo,주소:webpack-multipage-demo
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Qiita API v2를 Ajax에서 사용하기위한 webpack 설정 (로컬 개발 환경 전용)에서는 Qiita의 기사 목록, 사용자 세부 정보, 기사를 '좋아요'한 사람 목록 및 재고가 있는 사람 목록을 검색할 수 있습니다. Qiita 화면에서 기사를 재고한 사람을 볼 수 없기 때문에 API를 통해 기사를 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.