Chủ Nhật, 31 tháng 12, 2017

[Series] Học Webpack cơ bản - Bài 1: Webpack là gì?

Ngày nay công việc của một front-end đã không còn nhẹ nhàng như xưa nữa khi mà hệ sinh thái của JavaScript đang là rất khủng bố. Nếu khoảng 10 năm về trước việc bạn biết và thành thạo thư viện Jquery là đã đủ cho một front-end developer nhưng giờ đây thì việc bạn chỉ biết một framework là chưa đủ vì đằng sau nó còn là một mớ các tools hỗ trợ typing, test tools, task runer, tè lè và từa lưa các tools hỗ trợ khác mà bạn cần phải thành thạo nó nếu muốn nói to với mọi người rằng "Tôi là một front-end developer thích đực". Hiện nay việc code front-end dễ đối mặt với vấn đề quản lý code bằng javscript bởi vì giờ đây website có thể nhìn đâu cũng thấy JavaScript. Chính vấn đề quản lý code đó mà khái niệm module loader ra đời và hiện này Webpack chính là module loader được sử dụng rộng rãi nhất. Trong bài viết này mình sẽ demo chút xem nó hoạt động sao nhé.

[Series] Học Webpack cơ bản - Bài 1: Webpack là gì?
[Series] Học webpack cơ bản - Bài 1: Webpack là gì?
1. Khởi tạo project trằng với dòng lệnh: npm init -y rồi npm i -g webpack --save-dev webpack
2. Tạo thử một module xem sao nhé. VD: sum.js

module.exports = (num1, num2) => num1 + num2

3. Tạo 1 file index.js import file module sum.js vừa tạo

var sum = require('./sum')

console.log(sum(5, 5))

4. Tạo 1 file index.html và nhúng file index.js vào để xem nó hoạt động được không nhé các bạn

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script src="index.js"></script>
</body>
</html>

Tất nhiên là sẽ lỗi rồi đúng không các bạn vì JavaScript thuần đâu có hiểu key require. Đây chính là lúc Webpack được sử dụng.

Các bạn tạo 1 file webpack.config.js

var path = require('path')

module.exports = {
entry: './index.js', // File đầu vào
output: { // File đầu ra
filename: 'bundle.js', // Tên file
path: path.join(__dirname) // Nơi chưa file đầu ra
}
}

Các bạn hãy để ý file bundle.js sẽ được tự tạo thêm. Giờ sửa lại file index.html chút để sử dụng file bundle.js vừa được tạo ra bạn nhé.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script src="bundle.js"></script>
</body>
</html>

Ok giờ chạy index.html để xem kết quả các bạn nhé.

Ở trên là mình sử dụng es5 cho 2 file index.js và module.js còn bạn nào muốn sử dụng es6 với cầu trúc es6 thì cần cài thêm các module babel-core, babel-preset-env, babel-loader.

Các bạn tạo thêm 1 file .babelrc

{
"presets": [
"env"
]
}

Lúc này cần sửa file webpack.config.js

var path = require('path')

module.exports = {
entry: './index.js',
output: {
filename: 'bundle.js',
path: path.join(__dirname)
},
module: {
rules: [
{
test: /\.js$/,
loader: 'babel-loader'
}
]
}
}

Sửa 2 file index.js và sum.js sử dụng import và export

File index.js
import sum from './sum'

console.log(sum(5, 5))

File sum.js
export default (num1, num2) => num1 + num2

OK giờ các bạn chạy webpack rồi mở file index.html xem kết quả nhé các bạn.
Previous Post
Next Post

post written by: