javascript - 组装:如何从 json/yaml 生成页面?

标签 javascript gruntjs assemble

如果提供布局,是否可以通过 json/yaml 生成页面?我认为这是可能的,但在文档中找不到。

目前正在 GitHub 中跟踪:http://webb.li/QjTX

最佳答案

由于 options.pages 功能已经实现,您可以像这样添加页面:

options: {
  pages: {
    "about": {
      "data": {
        "title": "About"
      },
      "content": "Content for {{title}}"
    },
    ...
  }
}

我们不支持自动加载 json/yml 文件,但您可以在 Gruntfile 中执行此操作,并以这种方式将对象添加到 options.pages...

module.exports = function(grunt) {

  grunt.initConfig({

    // package.json
    pkg: grunt.file.readJSON('package.json'),

    assemble: {
      options: {
        flatten: true,
        layoutdir: 'src/layouts',
        assets: 'dest/assets'
      },
      blog: {
        options: {
          engine: 'handlebars',
          layout: 'post.hbs',
          site: {
            title: 'This is my Blog'
          },
          pages: grunt.file.readJSON('pages.json')
        },
        files: { 'dest/': ['src/index.hbs'] }
      }
    }
  });

  // Load npm plugins to provide necessary tasks.
  grunt.loadNpmTasks('assemble');

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

};

此示例使用 post.hbs 文件作为 pages.json 文件中定义的任何页面的布局。它还将为 files src 数组中指定的 index.hbs 构建一个页面。现在,需要文件 dest/src 以便 Assemble 知道将文件写入何处,但我认为我们会将其添加到选项或页面对象中,以便它可以在没有文件对象的情况下运行。

关于javascript - 组装:如何从 json/yaml 生成页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18153160/

相关文章:

javascript - 在 gruntjs minify/uglify 之后更改 html 中的链接或脚本文件名

yaml - 如何在 YAML 前端使用 Handlebars #each helper

javascript - 如何创建一个 Handlebars 模板以在运行时在 Assemble 构建中编译?

javascript - 将需要参数的匿名函数作为参数传递给另一个函数,该函数将分配给 onclick

javascript - 如何使用fabricjs

javascript - Angular 4 - 循环遍历 Observables 并在新数组中提取值

javascript - 咕噜声 : How to run task only for modified file?

AngularJS with Grunt - 连接到另一台服务器

handlebars.js - 组装:布局中的多个内容插入点?

javascript - javascript中符号传播右移和零填充右移之间的区别?