Приветствую тебя, читатель. Гоняясь за идеей сделать шаблонизатор, основанный на нативном JavaScript ...
Приветствую тебя, читатель. Гоняясь за идеей сделать шаблонизатор, основанный на нативном JavaScript — я кое к чему пришёл. В Node.JS для реализации этой задачи нашлось всё, что я мог пожелать, и выполнить задачу получилось настолько же нативными средствами. Например, главным инструментом послужил модуль VM для выполнения изолированного от внешней среды JavaScript-кода. Шаблонные вставки — это чистый JS, но туда не попадают всяческие опасные инструменты вроде
скальпеля, require, global и др.
Перед тем как приступить к подробному разбору полётов, сразу взглянем на пример использования, который скорей нагляднее отразит суть, чем что-либо ещё. Код создания сервера приводить не буду, просто опишу сам шаблон и парсинг под определённым контекстом.
HTML-шабон:
<html>
<head>
<title>#{PageTitle}</title>
</head>
<body>
<h1>#{PageTitle}</h1>
<# for (var i=0; i<List.length; i++) {
#><li><#
if (typeof List[i] !== 'object') {
show(List[i]);
} else {
show(List[i].name +' - '+ List[i].note);
}
#></li><#
} #>
</body>
</html>
Этот исходный код отформатирован с помощью FractalizeR's HabraSyntax Source Code Highlighter.
Контекст:
var context = {
PageTitle: 'jJSt test',
List: ['First', {name:'Second', note:'2th'}, 'Third'],
};
var result = njst.parse(html, context, {debug:1});
Этот исходный код отформатирован с помощью FractalizeR's HabraSyntax Source Code Highlighter.
Читать дальше →
. Очень долгожданая фича, поддержка ...
Итак, новое в 10.3:
—
Acoustic Echo Cancellation. Очень долгожданая фича, поддержка FULL_DUPLEX, HALF_DUPLEX, пр. По моим тестам все работает отлично, при этом практически не нагружая процессор.
—
Media Measurements. Дает в режиме реального времени доступ к аналитике — как видео распространяется, какой аудитории достигает и как часто воспроизводится.
— Нативная панель управления, автообновление для MacOS, интеграция с browser privacy, в том числе для очистки флеш-куков.
Есть только 32-битные версии для Android, Linux, MacOS, и Windows, 64-битные ориентировочно будут только для FP11 (3D).
Incubator Project - новые фичи