Webpack từ A đến Á: Html Webpack Plugin (ok)
https://kentrung256.blogspot.com/2021/06/html-webpack-plugin.html
Webpack từ A đến Á: Html Webpack Plugin
June 11, 2021 webpackBài hôm nay chúng ta sẽ học về plugin html-webpack-plugin được dùng để sắp xếp các file html theo một trật tự nhất định, giúp tối ưu nội dung file html hơn.
1. Cài đặt
Link plugin: https://github.com/jantimon/html-webpack-plugin Cài cho Webpack 5
Cài cho Webpack 4
2. Chuẩn bị file
Để bài học được dễ dàng theo dõi chúng ta nên xóa các file trong folder dist và thiết lập file theo cấu trúc bên dưới
3. Cách sử dụng
Plugin sẽ tự động tạo một file HTML, chỉ cần import và thêm plugin vào file cấu hình webpack.config.js
Giờ chạy thử webpack xem thế nào: npm run dev
Với cấu hình trên webpack sẽ tự động tạo ra một file dist/index.html
chứa các mục sau
Lưu ý là code trên đã được mình format lại cho dễ nhìn còn thực tế là code HTML đã bị minify lại, loại bỏ tất cả các khoảng trống thừa, bỏ comment, gom các dòng code lại thành một dòng duy nhất, giảm tối đa dung lượng file, tối ưu source code hơn, vân vân và mây mây... Thực tế như này.
4. Option title
Thay đổi giá trị title của trang HTML như sau Tên thuộc tính: title Kiểu dữ liệu: String Mặc định: 'Webpack App' Ví dụ chúng ta đổi title thành 'Webpack từ A đến Á cùng kentrung'
Kết quả
5. Option filename
Thay đổi tên file HTML được output ra, bạn cũng có thể chỉ định thư mục chứa trang HTML (eg: assets/admin.html) Tên thuộc tính: filename Kiểu dữ liệu: String Mặc định: index.html Ví dụ chúng ta tạo ra trang dist/about.html thì code như sau:
6. Option template
Quy định trang mẫu cho trang HTML được output. Tên thuộc tính: template Kiểu dữ liệu: String Mặc định: By default it will use src/index.ejs if it exists. Please see the docs for details Ví dụ nếu chúng ta muốn output ra trang dist/about.html từ trang nguồn src/about-dev.html thì code như sau:
7. Generating Multiple HTML Files
Để tạo ra được nhiều trang HTML, bạn chỉ cần khai báo thêm giá trị vào trong mảng plugin. Ví dụ ở đây mình tạo ra hai trang dist/index.html và dist/about.html thì sửa lại file cấu hình webpack như sau:
8. Option chunks
Ở phần trên lúc tạo ra hai trang dist/index.html và dist/about.html thì cả hai trang này đều load chung một file dist/main.js. Để tách riêng từng trang load từng file JS ta tạo key entry và sử dụng chunks để thêm vào
Với cấu hình trên thì ta có hai trang HTML load hai file JS riêng biệt. Trang dist/index.html load file dist/homepage.js là kết hợp của hai file src/index.js và src/slider.js Trang dist/about.html load file dist/aboutpage.js là code file src/about.js
9. Custom template
Có bạn hỏi liệu có thể tách code HTML ra thành từng phần nhỏ rồi gọi nó vào được không? Tại sao lại không nhỉ? Javascript cũng tách ra các file nhỏ được, css cũng tách ra các file nhỏ được. => vậy thì html cũng sẽ làm được. Ngon! Một trong các cách đó là sử dụng html-loader nên các bạn phải cài đặt nó nhé
Lấy ví dụ ta tạo trang src/home.html và trong này gọi trang src/header.html thì cấu trúc file như này
File src/header.html
File src/home.html
file webpack.config.js
Chạy lại webpack npm run dev và giờ mở file dist/home.html xem kết quả
Quá tuyệt vời phải không? Các bạn thậm chí có thể đặt biến, if-else, vòng lặp, strip tag các kiểu hệt như ngôn ngữ lập trình thực thụ, giờ code HTML cũng đã lên một trình mới rồi nhé.
Bài viết đến đây là hết, hi vọng với bài viết này các bạn đã thêm được nhiều kiến thức bổ ích. Hẹn gặp lại các bạn ở bài viết tiếp theo.
Last updated