从文件加载ES6模板字符串

时间:2016-09-07 12:10:28

标签: javascript node.js ecmascript-6 require template-strings

让我解释一下我的实际问题。 我有一个模板字符串,看起来像这样:

/${name}
  get
  post
  /{id}
    get
    /file-content
      get
      post

缩进必须保持不变。

现在,如果我要使用这样的模板字符串,它可能如下所示:

function test(arr) {
    let ret = []
    arr.forEach(
        function(name) {
            return `/${name}
  get
  post
  /{id}
    get
    /file-content
      get
      post`
            return ret
        }
    )
}
看起来很可笑,对吗?我当然可以在我的模板中添加额外的空格以匹配我的代码缩进,但是之后我必须对字符串执行不必要的操作以再次标准化它。

所以我的想法是在需要模板字符串时将模板字符串移动到外部文件和require该文件。
但是要求不能用于那个问题,因为它只不过是一个文本文件而且我当然不希望每次需要时从磁盘读取该文件并执行{{1 }} 在上面。

我可以想到这个问题的几种解决方法,但我似乎无法找到令人满意的解决方案。

1 个答案:

答案 0 :(得分:1)

这个怎么样:

// template.js
module.exports = name => `
/${name}
  get
  post
  /{id}
    get
    /file-content
      get
      post
`.trim()

// app.js
const template = require('./template')('name');