169 похожих чатов

Есть ли в JS какие-то встроенные механизмы шаблонизации? Например, есть

<template><div class="item">{var}</div></template>. Данные приходят в JSON, хочу вместо {var} подставлять эти данные. Сейчас делаю стандартно через .querySelector('.item'). Но в JS вообще нуб)) поэтому может есть что-то более удобное решение без сторонних библиотек?

14 ответов

17 просмотров

Можно с помощью шаблонных строк создавать) это самое простое

Максим-Завалишин Автор вопроса

Про это собственно и веду речь) но туда добавлять данные приходится обычным способом через quryselector и подобные штуки. Но эт не совсем удобно, поэтому и возник вопрос.

Максим Завалишин
Про это собственно и веду речь) но туда добавлять ...

можно сделать отдельную функцию которая будет принимать данные и отдавать html, через шаблонные строки, положить в отдельный файл

async processTemplate(template, data) { data = typeof data === 'function' ? await data() : await data; Object.keys(data).forEach(key => template = template.replace(new RegExp({${key}}, 'g'), ${data[key]})); return new Range().createContextualFragment(template); } const template = processTemplate( <div>{test}</div> , async () => await SERVER.RESPONSE); // ну или просто статический объект данных const template = processTemplate( <div>{test}</div> , { test : '🇰🇿' });

Rone
async processTemplate(template, data) { data =...

Телеграм кое-где экранировал ``. + я не тестил

Rone
Телеграм кое-где экранировал ``. + я не тестил

если все обернуть в тройные бектики будет все красиво

async processTemplate(template, data) { data = typeof data === 'function' ? await data() : await data; Object.keys(data).forEach(key => template = template.replace(new RegExp({${key}}, 'g'), ${data[key]})); return new Range().createContextualFragment(template); } const template = processTemplate( <div>{test}</div> , async () => await SERVER.RESPONSE); // ну или просто статический объект данных const template = processTemplate( <div>{test}</div> , { test : '🇰🇿' });

Максим-Завалишин Автор вопроса
Rone
async processTemplate(template, data) { data =...

Ну т.е. вывод такой, что пока встроенных возможностей в js нет для этих целей? Все равно приходится писать какие-то «надстройки»

Максим-Завалишин Автор вопроса

Уже писал в первом посте. Если коротко: есть html (элемент template), который формирует сервер на php. Есть js код, чтобы асинхронно получать данные и вставлять в Dom , используя шаблон из элемента template. Поидеи задача стандартная. Но чтоб подставить данные какие то, нужно постоянно делать queryselector и т.п. другими словами, сделать по аналогии с php: ‘<div><? $value ?></dig>’, но нашивными средствами без надстроек. Но я так понял из гугла, такого способа нет. Но т.к. в js я нуб, есть вероятность, что не правильно делаю запрос в Гугл)))

Максим-Завалишин Автор вопроса

Ну то есть я изначально получаю шаблон : querySelector(.item). А потом как «распариться» внутренний код?

Максим Завалишин
Ну то есть я изначально получаю шаблон : querySele...

не, в данном подходе не надо использовать template штуки) вот как это делается https://github.com/f3d0t/public-apis-app/blob/b86adc6313c757a9bcc10c09200a9ba6ca4f2574/src/components/Header/Header.js

Максим-Завалишин Автор вопроса
Maksim
вставляй так `${value}`

Куда вставлять, если нужно подставить эти данные в уже существующий DOM элемент?

Максим-Завалишин Автор вопроса

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта