gruntjs 理解语法 - <%= 小于百分比符号

gruntjs understanding the syntax - <%= less than percentage symbol

以下是来自 http://gruntjs.com/getting-started

的示例 gruntjs
module.exports = function(grunt) {

  // Project configuration.
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    uglify: {
      options: {
        banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
      },
      build: {
        src: 'src/<%= pkg.name %>.js',
        dest: 'build/<%= pkg.name %>.min.js'
      }
    }
  });

  // Load the plugin that provides the "uglify" task.
  grunt.loadNpmTasks('grunt-contrib-uglify');

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

};

然后提到:

因为 <% %> 模板字符串可能引用任何配置属性,所以可以通过这种方式指定文件路径和文件列表等配置数据以减少重复。

我的问题:

  1. 这个<%= %>是什么意思?它是 gruntjs 语法还是在其他地方普遍使用?我在哪里可以找到它的定义?

  2. 您搜索神秘符号解释的一般方法是什么?如果我在google/Whosebug中搜索这些字符串(“<%=”,“<%”,是否包含引用),基本上不会出现合理的结果。

看看documentation

Grunt 出现在 ES2015 之前。这就是为什么他们在字符串文字中发明了自己的模板分隔符,而不是去寻找正确的 tagged template strings,这就是现在解决模板问题的方法。

语法实际上只是 GruntJS 的东西,所以它既不通用,也没有其他项目真正使用它。甚至不是所有的 Grunt 项目都使用它,因为你可以 set delimiters yourself.

基本上,这意味着 config.get 将扩展这些表达式。在里面,你应该能够写任何有效的东西JavaScript。在定界符内,暴露了 grunt 对象,例如,它允许您使用 <%=grunt.template.today("yyyy")%> 之类的东西来模板化当前年份。另请参阅 config.get and config.process 了解内部结构。

关于你的第二个问题,很多时候你可以把符号写成单词,然后在你最喜欢的搜索引擎中输入。有时,您首先会从概念上理解这些符号 could/should 的含义;你的问题甚至将它们称为 "template strings",一个语法编程概念,你可以 googled 找到答案。