简单写了下 handlebars 带目录层级的 partials 注册,可以写成

{{> a/b }}
{{! 相当于 partials/a/b.hbs }}

因为用了 with 块,没有给定数据导致整个 partial 没有展开,把我坑了很久

Follow

好难 :pio_die: ,另外 koa 的 app.use 是什么设计,卡我很久,还是不懂

registePartial(){
  var partials_path = join(this.theme_path, 'partials')

  // 当前遍历的目录
  var travel_dirs = []
  travel_dirs.push(partials_path) // 遍历根目录

  // 遇到的新目录
  var new_dirs = []
  while(travel_dirs.length > 0)
  {
    travel_dirs.forEach((dir) => {
      var files = readdirSync(dir, {encoding: 'utf-8', withFileTypes: true})
      files.forEach((file) => {
        // 如果是目录则遍历
        if (file.isDirectory())
        {
          new_dirs.push(join(dir, file.name))
          return
        }

        // .hbs
        var reresult = /(?<name>.*)\.hbs$/.exec(relative(partials_path, join(dir, file.name)))
        if (reresult != null)
        {
          var registeName = reresult.groups["name"].split(sep).join('/')

          console.log(`handlebars registe: ${registeName}`);

          // 注册
          this.handlebars.registerPartial(
            registeName,
            readFileSync(join(dir, file.name), {encoding: 'utf-8'})
          )
        }
      })
    })
    // 下次遍历
    travel_dirs = new_dirs
    new_dirs = []
  }
}
· · Web · 0 · 0 · 0
Sign in to participate in the conversation
小森林

每个人都有属于自己的一片森林,也许我们从来不曾走过,但它一直在那里,总会在那里。迷失的人迷失了,相逢的人会再相逢。愿这里,成为属于你的小森林。