gpt4 book ai didi

html - 使用 json 作为 Assemble.io 的数据源

转载 作者:行者123 更新时间:2023-11-28 01:41:29 25 4
gpt4 key购买 nike

是否可以使用 Assemble.io 中的模板将 json 文件编译为 html。如果可能的话,我该如何设置我的 gruntfile 来执行此操作?

我的文件夹结构:

  • 数据
    • productlist1.json
    • productlist2.json
    • productlist3.json
    • productdetail1.json
    • productdetail2.json
  • 模板
    • product-listing.hbs
    • product-detail.hbs
  • 布局
    • main.hbs
  • 部分
    • ...

HTML 结果

我想生成以下html文件

  • productlist1.html
  • productlist2.html
  • productlist3.html
  • productdetail1.html
  • productdetail2.html

示例 productlist1.json 文件

    {
"template": "product-listing.json",
"products": [
{
"name": "product1",
"price": "€ 2,40"
},
{
"name": "product2",
"price: "€ 1,40"
}
]
}

最佳答案

感谢 Using Assemble, generate HTML files from multiple data files using one template file? 刚刚找到解决方案.

稍微修改示例以加载动态模板:

'use strict';
var _ = require('lodash');
var path = require('path');

module.exports = function(grunt) {

// expand the data files and loop over each filepath
var pages = _.flatten(_.map(grunt.file.expand('./src/data/*.json'), function(filepath) {

// read in the data file
var data = grunt.file.readJSON(filepath),
fileTemplate = grunt.file.read("./src/templates/" + data.template);

// create a 'page' object to add to the 'pages' collection
return {
// the filename will determine how the page is named later
filename: path.basename(filepath, path.extname(filepath)),
// the data from the json file
data: data,
// add the recipe template as the page content
content: fileTemplate
};
}));

// Project configuration.
grunt.initConfig({

config: {
src: 'src',
dist: 'dist'
},

assemble: {
pages: {
options: {
flatten: true,
assets: '<%= config.dist %>/assets',
layout: '<%= config.src %>/templates/layouts/default.hbs',
partials: '<%= config.src %>/templates/partials/**/*.hbs',

// add the pages array from above to the pages collection on the assemble options
pages: pages
},
files: [
// currently we need to trick grunt and assemble into putting the pages file into the correct
// place using this pattern
{ dest: './dist/', src: '!*' }
]
}
}
});

grunt.loadNpmTasks('assemble');

grunt.registerTask('default', [
'assemble'
]);

};

关于html - 使用 json 作为 Assemble.io 的数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25738812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com