代码之家  ›  专栏  ›  技术社区  ›  Alan

handlebar编译一个空模板,而不在Gulp任务中运行数据

  •  0
  • Alan  · 技术社区  · 7 年前

    我正在运行一个简单的gulp任务,它应该用一种特定的语言呈现我的handlebars模板版本。语言数据存储在JSON文件中,我要求在gulp pipe任务中动态地将其存储在变量中,然后执行handlebars任务。

    gulp.task('compilen', () => {
    var strings;
    
    
    return gulp.src('frontend/templates/*/*.hbs')
    .pipe(through.obj(function(file,enc,cb){
        var p = parsePath(file.relative);
    
        strings = require('./frontend/templates/' + p.dirname+ '/locales/en.json');
    
        console.log(strings);
    
         cb(null,file);
    }))
    .pipe(handlebars(strings, options))
    .pipe(rename(function(path){
    
    
        path.basename += "-en";
        path.extname = ".html";
    
    }))
    .pipe(gulp.dest('build'));
    
    });
    

    gulp 一切运行,它输出一个没有 strings 数据。{{}}被删除了,但是没有实际的数据,就好像strings对象是空的一样,但事实并非如此,因为每当我包装 handlebars 带抽头和控制台.log他们的价值观都在那里。。更奇怪的是 变量如果我要传递一个对象文本,则所有内容都会正确呈现。

    下面是一个示例hbs模板和我的json文件

    主.hbs

    {{> header}}
    
    <div>
      {{home.title}}
    </div>
    

    英语.json

    {
        "home" : {
        "title" : "hello world",
        "heading" : "1245"
        }
     }
    

    这个主.html输出

    <div>
    
    </div>
    <div>
    
    </div>
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Alan    7 年前

    我用另一个插件解决了这个问题 gulp-data through.obj 吞咽数据 对象,它现在可以工作了。我一直在努力尝试用吞咽来做一些简单的事情,所以我的建议是远离。

    推荐文章