У меня возникли проблемы с моим шаблоном руля, и я надеялся, что вы поможете мне разобраться.Мне нужно было бы генерировать разные страницы, каждая из которых содержит разные партиалы.Однако они имеют одинаковую структуру hbs.Это функции, которые я использую, используя gulp.В качестве компилятора я использую 'gulp-compile-handlebars'
function createPages() {
if (fs.existsSync(dir.pages)) {
fileList = getFiles(dir.pages);
let pages = []
for(let i = 0; i < fileList.length; i++) {
pages.push(
gulp.src('src/pages/' + fileList[i])
.pipe(handlebars(contentData, {
ignorePartials: true,
helpers: helpers,
batch: ['src/partials']
}))
.pipe(rename(function(path){
path.extname = ".hbs"
}))
.pipe(gulp.dest('_tmp/' + i))
)
}
return merge(pages)
}
}
function createViews() {
let views = []
for(let j = 0; j < fileList.length; j++) {
let fileName = fileList[j].split('.').slice(0,-1).join()
let view = gulp.src('src/layouts/*.hbs')
.pipe(handlebars(contentData, {
partials: {
body: require('./_tmp/' + j + '/' + fileName + '.hbs')
}
}))
.pipe(rename(fileName + ".html"))
.pipe(gulp.dest('dist'))
views.push(view)
}
return merge(views)
}
Первый - это тот, который для каждой страницы, он компилирует контент с помощниками и частями и перемещает их в _tmpпапка.Я могу гарантировать, что содержимое этих новых сгенерированных страниц отличается друг от друга (что я и хочу).
Второе, вместо этого, попытка получить файл макета и для каждой страницы, которую я имею,внедряет его частичку "body", которая будет самой страницей.Однако генерируются разные страницы с одинаковым содержимым.Я думаю, что проблема в этой части кода
.pipe(handlebars(contentData, {
partials: {
body: require('./_tmp/' + j + '/' + fileName + '.hbs')
}
}))
, потому что мне кажется, что это не позволит мне иметь две разные партиалы с одинаковыми именами, даже если они создаются динамически.Любое предложение о том, как подойти к этому?
просто для справки, это layout.hbs
...
<body>
{{> body }}
</body>