Nếu bạn không biết tại sao có bài này : Có cách nào phân chia layout trong html - include file header footer html
Để giải quyết vấn đề include hôm nay mình sẽ hướng dẫn các bạn một cách đơn giản đó là sử dụng gulp-file-include để build template cho project frontend.
https://www.npmjs.com/package/gulp-file-include
Install
Sau khi cài đặt xong Gulp. Mình sẽ tạo một project mẫu tên là PROJECTS.
Như với các project khác, đầu tiên chúng ta sẽ khởi tạo file package.json, và các thư viện đi kèm với lệnh sau:
npm init
npm install gulp gulp-file-include --save
Cấu trúc project
PROJECTS
|- dist
|- src
| |- pages
| | |- index.html
| | |- about.html
| |- partial
| | |- header.html
| | |- footer.html
|- package.json
|- gulpfile.js
Đầu tiên là folder src là nơi làm việc. Sau này nếu có code Sass hoặc es6 thì cũng tạo folder trong src nhé.
Thứ hai là folder dist là nơi chứa các file html thành phẩm.
Cấu hình gulpfile.js
var gulp = require('gulp')
var path = require('path')
var fileinclude = require('gulp-file-include')
gulp.task('fileinclude', function() {
return gulp.src([ "src/pages/*.html" ])
.pipe(fileinclude({
prefix: '@@',
basepath: '@file'
}))
.pipe(gulp.dest(path.join(__dirname, '/dist/pages/')))
})
// Watch Files: nghĩa là khi những file thuộc folder pages hoặc partial và có đuôi .html thay đổi
/// => code thì sẽ build lại code với task fileinclude
gulp.task('watch', function () {
gulp.watch('src/pages/*.html', gulp.series('fileinclude'))
gulp.watch('src/partial/*.html', gulp.series('fileinclude'))
});
file chính sẽ chạy index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Đây là trang chủ</title>
</head>
<body>
@@include('../partial/header.html')
<div>
đây là phần nội dung file index
</div>
@@include('../partial/footer.html')
</body>
</html>
tiếp theo là file about.html cũng có nội dung giống giống file index
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Đây là trang thông tin chúng tôi</title>
</head>
<body>
@@include('../partial/header.html')
<div> about </div>
@@include('../partial/footer.html')
</body>
</html>
và file bạn muốn include vào là partial/header.html
<header>
đây là header
</header>
và file bạn muốn include vào là partial/footer.html
<footer>
đây là footer
</footer>
Dĩ nhiên để chạy nó thì bạn có thể chạy dưới command line với lệnh sau:
gulp watch
# hoặc nếu bạn chỉ muốn thực thi code thì chạy
gulp fileinclude
hình ảnh code và kết quả: