Javascript字符串模板供重用

时间:2018-06-12 12:31:48

标签: javascript

我想尝试制作像

这样的东西
var stringUrlTemplate = home.url + '/data/[param1]/[param2]/' + endurl;

而不是某种循环中的东西:

outputUrlItem = print(stringUrlTemplate, someVarialbe, someVariable);

基本上C / C ++可以做什么。

我不能使用" / data / $ {param1} / $ {param2} /"因为一个字符串是由服务器separetly从JavaScript提供的。

2 个答案:

答案 0 :(得分:2)

您可以使用可以替换的占位符。这是一个例子

if (!String.prototype.format) {
  String.prototype.format = function() {
    var args = arguments;
    return this.replace(/{(\d+)}/g, function(match, number) {
      return typeof args[number] != 'undefined' ?
        args[number] :
        match;
    });
  };
}

var stringUrlTemplate = '/data/{0}/{1}/';
console.log(stringUrlTemplate.format('data1', 'data2'))

OR,

function printf() {
  var args = Array.prototype.slice.call(arguments, 1);
  var str = arguments[0];
  return str.replace(/{(\d+)}/g, function(match, number) {
    return typeof args[number] != 'undefined' ?
      args[number] :
      match;
  });
};

var stringUrlTemplate = '/data/{0}/{1}/';
console.log(printf(stringUrlTemplate, 'data1', 'data2'))

答案 1 :(得分:1)

这个包允许可重用​​的模板文字 - reuse-template-tag,也许它可以帮助,这是他们文档中的例子:

const reuseTemplateTag = require('reuse-template-tag')

const template = reuseTemplateTag`
    - Hey ${1} How are You?
    - Are You ok ${1} ?
    - Yes, thanks ${'me'}!
`
console.log(
    template({
        1: 'Joe',
        me: 'Andy'
    })
)
// Or provide sequence of values with Array
console.log(
    template(['Joe', 'Molly', 'Susan'])
)