QSem
@QSem
о себе?!

Знает кто простой и хороший шаблонизатор?

Здравствуйте, уважаемые.
Есть такая вот задумка:
К примеру в командной строке вводишь что-то типа "create galaxy"
И после чего создается папка galaxy в указанном в конфиге директории, со всеми файлами необходимыми....js,sass,html и так далее, но файлы не пусты, а уже с скопированным из заготовок кодом.
YoMan не оказался совсем простым,да и не нашел я нормальной доки по нему с примерами простыми.
Заранее благодарен.
  • Вопрос задан
  • 217 просмотров
Решения вопроса 1
BRAGA96
@BRAGA96
Вот Вам пример простого шаблонизатора, который только умеет заменять переменные, без if/else/for...
const file = `
	<template>
		<div>
			#{hello}
			Component #{component.name} working!
		</div>
	</template>

	<script>
		export default {
			name: '#{component.name}'
		}
	</script>
`;

const output = templater(file, {
	hello: 'Hello from templater function',
	component: {
		name: "My Default Component Name"
	}
});

console.log(output);

function templater(input, data, config) {
	const setup = Object.assign({}, {
		flag: 'g',
		start: '\#\{',
		end: '\}',
		deep: true
	}, config);

	for (const key in data) {
		if (Object.prototype.hasOwnProperty.call(data, key)) {
			if (setup.deep && (typeof data[key] === "object" && data[key] !== null && !Array.isArray(data[key]))) {
				const deep = {};
				for (const name in data[key]) {
					if (Object.prototype.hasOwnProperty.call(data[key], name)) {
						deep[`${key}.${name}`] = data[key][name];
					}
				}
				input = templater(input, deep, setup);
			} else {
				input = input.replace(new RegExp(setup.start + key + setup.end, setup.flag), data[key]);
			}
		}
	}

	return input;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@bqio
https://bqio.github.io/
git clone (repurl)

:)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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