как мне получить доступ к json из данных gulp в nunjucks?

У меня есть файл some.json вроде этого:

      {
  "disneyland-paris": {
    "lang": "de"
  },
  "hanoi": {
    "lang": "de"
  }
}

… Что я хочу попасть в шаблон nunjucks с:

      pipe(data(function() {
  return JSON.parse(fs.readFileSync(".../some.json"))
}))
.pipe(nunjucksRender())

Как мне получить доступ к этим данным в nunjucks?

Это не работает:

      {{ some }}

или

      {{ some.json }}

1 ответ

Один из многих подходов, который вы можете использовать, — это использовать gulp nunjucks render для вашего проекта gulp. Если вы решите пойти по этому пути, вы можете использовать следующие шаги в качестве проверки концепции для достижения своей цели. А если нет, вы все равно можете позаимствовать идеи из следующих шагов!

  • Шаг 1. В вашем проекте «вы можете» структурировать данные JSON следующим образом в файле с именем Languages.js:
      const languages = [
  {
    "group": [{
      "location":"disenyland-paris",
      "lang": "de"
    },
    {
      "location":"hanoi",
      "lang": "de"
    },
  ]
}];

module.exports = languages;
  • Шаг 2. Из вашего gulpfile.js, предполагая, что вы запускаете проект gulp, вызовите свои данные JSON, а затем укажите их в своей логике Nunjucks как глобальную среду...
      ...

const nunjucksRender = require('gulp-nunjucks-render');
const Languages = require('./src/models/Languages');

...

const manageEnvironment = function (environment) {
    environment.addGlobal('mLangauges',Languages);
}

...

function genNunJucks(cb) {
    return src(['src/views/*.html'])
        .pipe(nunjucksRender({
            path: ['src/views/', 'src/views/parts'], // String or Array
            ext: '.html',
            inheritExtension: false,
            envOptions: {
                watch: true,
            },
            manageEnv: manageEnvironment,
            loaders: null
        }))
        .pipe(dest('pub')); //the final destination of your public pages
    cb();
}

//then do more stuff to get genNunJucks() ready for gulp commands...

  • Шаг 3. В файле шаблона Nunjucks вызовите данные следующим образом...
         {% for sections in mLangauges %}
      {% for mgroup in sections.group %}
         <p>{{mgroup.location}}</p>
         <p>{{mgroup.lang}}</p>
      {% endfor %}
   {% endfor %}

Все, что осталось сделать, это запустить проект gulp :)

Совет. Если вы измените свои данные JSON во время работы, вам может потребоваться перестроить проект gulp, чтобы увидеть обновленные данные JSON на своей веб-странице. Пересборка может быть такой же простой, как запуск «npm run build», если вы настроили ее прямо в файле package.json.

Другие вопросы по тегам