How to use the template function from lodash

Find comprehensive JavaScript lodash.template code examples handpicked from public code repositorys.

lodash.template is a function that generates a reusable function for rendering a template string with interpolated variables and control statements.

6999
7000
7001
7002
7003
7004
7005
7006
7007
7008
* @returns {Function|string} Returns a compiled function when no `data` object
*  is given, else it returns the interpolated text.
* @example
*
* // using the "interpolate" delimiter to create a compiled template
* var compiled = _.template('hello <%= name %>');
* compiled({ 'name': 'fred' });
* // => 'hello fred'
*
* // using the "escape" delimiter to escape HTML in data property values
fork icon73
star icon711
watch icon29

+ 19 other calls in file

375
376
377
378
379
380
381
382
383
384
module.exports.takeRight           = _.takeRight;
module.exports.takeRightWhile      = _.takeRightWhile;
module.exports.takeSkipping        = _.takeSkipping;
module.exports.takeWhile           = _.takeWhile;
module.exports.tap                 = _.tap;
module.exports.template            = _.template;
module.exports.templateSettings    = _.templateSettings;
module.exports.ternary             = _.ternary;
module.exports.third               = _.third;
module.exports.throttle            = _.throttle;
fork icon19
star icon122
watch icon0

+ 92 other calls in file

How does lodash.template work?

lodash.template takes a string with embedded variables and control statements and returns a compiled template function. The compiled function takes an object as its argument and returns a rendered string, with variables replaced by their corresponding values from the object.

Here's a high-level overview of how lodash.template works:

  1. The template string is parsed to identify variables and control statements.
  2. The parsed template is transformed into a JavaScript function with the embedded variables and control statements replaced by appropriate JavaScript code.
  3. The transformed function is compiled using the Function constructor and returned as the final compiled template function.

The resulting function can then be called with an object containing values for the variables used in the template. The function returns the final rendered string with the variable placeholders replaced by their corresponding values.

Note that lodash.template supports a wide range of control statements, including conditionals, loops, and custom delimiters. The syntax for these statements is based on the Mustache templating language, with some additional extensions.

604
605
606
607
608
609
610
611
612
let interpolatedMessageForUser
if (errorFields.messageForUser) {
    const locale = conf.DEFAULT_LOCALE
    const translations = getTranslations(locale)
    const translatedMessage = translations[errorFields.messageForUser]
    interpolatedMessageForUser = template(translatedMessage)(errorFields.messageInterpolation)
    if (!interpolatedMessageForUser) throw new Error(`expectToThrowGQLError(): you need to set ${errorFields.messageForUser} for locale=${locale}`)
}
const message = template(errorFields.message)(errorFields.messageInterpolation)
fork icon12
star icon32
watch icon10

+ 9 other calls in file

131
132
133
134
135
136
137
138
139
140
 */
ApiSigningUtil.getHMACSignature = (message, secret) => {
    winston.logEnter(message, secret);

    if (isNullOrEmpty(message) || isNullOrEmpty(secret)) {
        let compiled = _.template('<%= message %> and <%= secret %> must not be null or empty!');
        let errorMessage = compiled({
            message: 'message',
            secret: 'secret',
        });
fork icon10
star icon11
watch icon19

+ 47 other calls in file

Ai Example

1
2
3
4
5
6
7
8
const _ = require("lodash");

const templateString =
  "Hello <%= name %>! How are you feeling <%= feeling %> today?";
const compiledTemplate = _.template(templateString);

const renderedString = compiledTemplate({ name: "Alice", feeling: "happy" });
console.log(renderedString); // Output: Hello Alice! How are you feeling happy today?

In this example, we're requiring the lodash package and importing the template function from it. We're then defining a string called templateString with embedded variables using the <%= %> syntax. We're then calling _.template with templateString as an argument to generate a compiled template function. The resulting function takes an object as its argument and returns a rendered string with the variable placeholders replaced by their corresponding values. We're then calling the compiled template function with an object containing the values for the name and feeling variables. The resulting rendered string is stored in renderedString. The output of console.log(renderedString) is Hello Alice! How are you feeling happy today?.

GitHub: radum/yo

radum profile picture
18
19
20
21
22
23
24
25
26
27
});

var args = opts.argv.remain;
var cmd = args[0];

var helpScreen = _.template(fs.readFileSync(path.join(__dirname, 'help.txt'), 'utf8'));

var insight = new Insight({
  trackingCode: 'UA-31537568-1',
  packageName: pkg.name,
fork icon416
star icon0
watch icon2

215
216
217
218
219
220
221
222
223
224
const indexCss = findOutputFile(outputs, outdir, 'index', 'css')
if (!indexJs || !indexCss) {
  throw new Error(`No output file for index.js or index.css for ${name}`)
}

const indexHtml = _.template(
  await fs.readFile(`${srcdir}/index-esbuild.html`)
)
const bodyHtml = await fs.readFile('src/body.html')
await fs.writeFile(
fork icon7
star icon20
watch icon11

+ 3 other calls in file

841
842
843
844
845
846
847
848
849
850
851
852
853
console.log(startCase); // => 'Foo Bar'


const startsWith = _.startsWith('abc', 'a');
console.log(startsWith); // => true


const template = _.template('hello <%= user %>!');
console.log(template({ 'user': 'fred' })); // => 'hello fred!'


const toLower = _.toLower('--Foo-Bar--');
console.log(toLower); // => '--foo-bar--'
fork icon0
star icon4
watch icon0

+ 15 other calls in file

68
69
70
71
72
73
74
75
76
77
const opts = Object.keys(options).map(key => {
  return `${key}: ${options[key]}`
}).join(', ')
let errorMessage
if (callable.errorMessage) {
  const template = _.template(callable.errorMessage)
  errorMessage = template({
    field: field.name,
    value: this.values[field.name],
    opts
fork icon1
star icon3
watch icon15

1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
    TEST_DOCUMENT_URL: document.document_url,
    TEST_DOCUMENT_BINARY_URL: document.document_binary_url,
    TEST_DOCUMENT_FILENAME: document.document_filename
  };


  data = lodash.template(JSON.stringify(data))(placeholders);


  return JSON.parse(data);
}

fork icon1
star icon2
watch icon27

127
128
129
130
131
132
133
134
135
136
  fs.writeFileSync(
    "./js/scenes/animeVideosRender.js",
    `(function () {
var _inited;
  _.templateSettings.interpolate = /\\{\\{([\\s\\S]+?)\\}\\}/g;
var itemHtml = _.template('<div data-content="filmInfo" data-film="{{filmPageId}}" data-id="{{id}}" style="background: url({{imgurl}}); background-repeat:no-repeat;  background-size:cover;" class="movieitem navigation-item nav-item" data-url="{{url}}" data-type="{{type}}"><h4>{{title}}</h4></div>');
  
window.App.scenes.video = {
  init: function () {
    this.$el = $(".js-scene-video");
fork icon0
star icon1
watch icon0

269
270
271
272
273
274
275
276
277
278
logger.info(`The '${challengeCategory.name}' category was created.`)

if (groupTemplate.categories) {
  const categories = _.filter(groupTemplate.categories, ['selfService', isSelfService])
  for (const item of categories) {
    const urlCodeTemplate = _.template(item.urlcode)
    const { body: childCategory } = await vanillaClient.createCategory({
      name: item.name,
      urlcode: `${urlCodeTemplate({ challenge })}`,
      parentCategoryID: challengeCategory.categoryID,
fork icon3
star icon0
watch icon14

+ 34 other calls in file

31
32
33
34
35
36
37
38
39
40
  settings.useSchema ? settings.schemaName : undefined,
  settings.entityName,
  settings.scriptType
));

var template = _.template(generator.fs.read(generator.templatePath(settings.templateName + '.ejs')));

mkdirp(getScriptFilePath(scriptFile));

data = generator.props;
fork icon1
star icon1
watch icon0

133
134
135
136
137
138
139
140
141
142
    "./js/scenes/animeFilmInfo.js",
    `(function () {
var _inited;
  _.templateSettings.interpolate = /\\{\\{([\\s\\S]+?)\\}\\}/g;
   var stb = gSTB;
var filmPageHtml = _.template('<div id="{{filmPageId}}" data-id="{{id}}" class="filmInfoPage"><div class="film-info_inner"><div class="film-main"><div class="film-info"><img src="{{imgurl}}" alt="posterimg"><div class="film-dscrtn"><div><p class="actors">Актеры: {{actors}}</p><p>Страна: {{country}}</p><p>Год:{{created}}</p><p>Режиссер:{{director}}</p></div><h2>{{title}}</h2></div></div><p class="description">{{text}}</p></div><nav class="film-nav"><div class="film-nav_logo"><div class="UconCinema_logo"><img width="250" height="60" src="./images/UCS.svg" alt="logoimg"></div></div><ul class="film-voiceover menu-items" data-nav_type="vbox" data-nav_loop="true"><li data-content="video" class="back menu-item nav-item"><img width="30" src="./images/arrowBack.svg" alt="arrow" /> Назад</li><li data-url="{{url}}" class="voiceover menu-item nav-item video-item">Озвучка 1</div></ul></nav></div></div>');
window.App.scenes.filmInfo = {
  init: function () {
    this.$el = $(".js-scene-filmInfo");
    this.$el.on("click", ".back", this.onItemBackClick)
fork icon0
star icon1
watch icon0

+ 3 other calls in file

34
35
36
37
38
39
40
41
42
43

const EVENT_PAYLOAD = JSON.parse(fs.readFileSync(GITHUB_EVENT_PATH, "utf8"));
const DEFAULT_MESSAGE = `@${GITHUB_ACTOR} (${GITHUB_EVENT_NAME}) at ${GITHUB_REPOSITORY}`;

_.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
const ReplaceMustaches = data => _.template(data)({ ...process.env, EVENT_PAYLOAD })

//subject
var subject = core.getInput('subject');
if (subject === undefined || subject == '') {
fork icon0
star icon1
watch icon0

+ 2 other calls in file

28
29
30
31
32
33
34
35
36
37
};


templates.asset = _.template('<%= source %>?v=<%= version %>');
templates.link = _.template('<a href="<%= url %>"><%= text %></a>');
templates.script = _.template('<script src="<%= source %>?v=<%= version %>"></script>');
templates.input = _.template('<input class="<%= className %>" type="<%= type %>" name="<%= name %>" <%= extras %> />');


module.exports = templates;
fork icon0
star icon0
watch icon1

+ 11 other calls in file

25
26
27
28
29
30
31
32
33
34
35
36
    }


    return new hbs.SafeString(partial(context, data));
};


templates.asset = _.template('<%= source %>?v=<%= version %>');
templates.link = _.template('<a href="<%= url %>"><%= text %></a>');
templates.script = _.template('<script src="<%= source %>?v=<%= version %>"></script>');
templates.input = _.template('<input class="<%= className %>" type="<%= type %>" name="<%= name %>" <%= extras %> />');

fork icon0
star icon0
watch icon1

+ 11 other calls in file

227
228
229
230
231
232
233
234
235
236
      .query('plugin::users-permissions.user')
      .update({ where: { id: user.id }, data: { role } });
  },


  template(layout, data) {
    const compiledObject = _.template(layout);
    return compiledObject(data);
  },
});
fork icon0
star icon0
watch icon1

657
658
659
660
661
662
663
664
665
666
667

exports.jsonSchema = <%= JSON.stringify(modelDef.schema || {}, null, 4) %>;
`


async function dbMigrationFilesGenerate(){
    const compiled = _.template(migrationTemplate2);
    // const modelDefs = [{tableName: 'users', columnDefs: [
    //         {name: 'id', typeFunc: 'increments', isPrimary: true, nullable: false, default: 'knex.fn.now()'}
    //     ]}];
    const typeFuncMap = {
fork icon0
star icon0
watch icon2

726
727
728
729
730
731
732
733
734
735

if (dataSource) {
  return promise.create(resolve => {
    dataSource.filter(`it.${attrs.valueField} == '${value}'`).toArray().then(result => {
      result.forEach(e => {
        e[attrs.displayField] = _$1.template(attrs.displayExpression)({
          item: e
        });
      });
      resolve(result);
fork icon0
star icon0
watch icon1

+ 44 other calls in file

239
240
241
242
243
244
245
246
247
248
249
  switch (options.interpolate) {
    default:
      interpolate = /<%=([\s\S]+?)%>/g
  }


  const compiled_template = _.template(template, { interpolate })
  const rendered = compiled_template(variables)
  return rendered
}

fork icon0
star icon0
watch icon0

Other functions in lodash

Sorted by popularity

function icon

lodash.get is the most popular function in lodash (7670 examples)