Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.11.2012, 12:42
Интересующийся
Отправить личное сообщение для uaNikita Посмотреть профиль Найти все сообщения от uaNikita
 
Регистрация: 20.09.2011
Сообщений: 12

Вопрос по JavaScript Micro-Templating Джона Ресига
Написал небольшую функцию на основе JavaScript Micro-Templating Джона Ресига. Вот она:
var tmpl = function tmpl(str, data) {
			if (!str || !data) { return false }

			var fn = new Function("obj", "var p=[];with(obj){p.push('" +
					str.replace(/[\r\t\n]/g, " ")
							.split("<%")
							.join("\t")
							.replace(/((^|%>)[^\t]*)'/g, "$1\r")
							.replace(/\t=(.*?)%>/g, "',$1,'")
							.split("\t").join("');")
							.split("%>")
							.join("p.push('")
							.split("\r")
							.join("\\'")
					+ "');} return p.join('');");

			return  fn(data);
		};


Но не могу понять до конца как она работает. Зачем там .join("p.push('")? Почему когда я определяю fn как var fn= function() {} код перестает правильно работать?

Пример использования:
tmpl('<div id="<%=id1%>"><%=id1%><%=id1%></div><div id="<%=id2%>"><%=id2%></div>', {id1: 'id1Text', id2: 'id2Text'})

Последний раз редактировалось uaNikita, 06.11.2012 в 12:47.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34
Вопрос о циклических ссылках (JavaScript -> Dom -> JavaScipt) BlueIce Events/DOM/Window 10 17.02.2010 21:58
Вопрос по Javascript rawas Общие вопросы Javascript 4 08.01.2010 11:54
Есть вопрос по Javascript JsLoveR Opera, Safari и др. 1 23.12.2009 01:04