Tôi đang xây dựng một trang web tĩnh bằng Handlebars và Gulp. Dưới đây là cấu trúc thư mục của tôi:Làm thế nào để kết hợp JSON và Handlebars từ partials vào HTML với Gulp?
app/
content/
intro.json
header.json
faq.json
features.json
footer.json
templates/
home.hbs
partials/
home-section.hbs
header.hbs
footer.hbs
index.html
Gulpfile.js
Nội dung của home.hbs là thế này:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Test</title>
</head>
<body>
{{> header}}
{{> home-section}}
{{> home-section}}
{{> home-section}}
{{> footer}}
</body>
</html>
Tôi muốn vượt qua trong intro.json
, faq.json
, và features.json
cho mỗi home-section
partials, và header.json
để header
và footer.json
để chân trang.
Đây là những gì tôi có trong Gulpfile của tôi cho đến nay:
var gulp = require('gulp');
var handlebars = require('gulp-compile-handlebars');
var rename = require('gulp-rename');
gulp.task('html', function() {
return gulp.src('./app/templates/*.hbs')
.pipe(handlebars({}, {
ignorePartials: true,
batch: ['./app/templates/partials']
}))
.pipe(rename({
extname: '.html'
}))
.pipe(gulp.dest('build'));
});
tôi đã không thể tìm ra cách để vượt qua tập tin nhiều hơn một JSON tại một thời điểm, đặc biệt là các home-section
s. Cảm ơn trước!
Bạn có ý nghĩa gì bởi 'bên trong' mục nhà 'của bạn, bạn sẽ có đối tượng 'nội dung'? Bạn có thể cho tôi xem mã này không? – Ryan
@Ryan Khi bạn render một handlebars một phần, các tham số bạn truyền vào nó sau đó có sẵn bên trong template của partial dựa trên tên của tham số mà bạn đã sử dụng. Vì vậy, nếu bạn chèn một phần của bạn với '{{> home-section thing = info}}', phần 'home-section' của bạn sẽ có quyền truy cập vào một' điều' biến chứa nội dung của 'info'. – dstaley