Показать сообщение отдельно
  #52 (permalink)  
Старый 04.12.2014, 18:45
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
И в догонку свежая статья на английском про модули http://24ways.org/2014/javascript-modules-the-es6-way/
Я уже перешёл на них

Правд es6-module-transpiler оказался глюченым говном, поэтому сделал на основе своего Monic.

.pipe(monic({
	replacers: [
		// Поддержка ES6 modules
		function (text) {
			text = text
				.replace(/export\s+(?:var|const|let)\s+([^\s=]+)\s*=/g, 'this.$1 =')
				.replace(/exports\s*\./g, 'this.')
				.replace(/export\s+(function\s+([^(]+))/g, 'this.$2 = $1')
				.replace(/export {([^}]+)};?/g, function (sstr, $1) {
					return $1.split(',').reduce(function (res, el) {
						el = el.split(/\s+as\s+/);
						el[0] = el[0].trim();
						res += 'this.' + (el[1] || el[0]) + ' = ' + el[0] + ';\n';
						return res;
					}, '');
				});

			text =
				'(function () {\n' +
					text +
				'\n}).call(this);';

			return text.replace(
				/^\s*import\s+(.*?)\s+from\s+('|")(.*?)\2;?/gm,
				function (sstr, nm, q, url) {
					nm = nm.replace(/{|}/g, '');
					nm = nm.split(',').reduce(function (res, el, i) {
						el = el.trim();

						if (i !== 0) {
							res += ',\n';
						}

						res += el + ' = this.' + el;
						return res;

					}, 'var ') + ';';

					return '' +
						'//#include ' + url + '\n\n' +
						nm;
				}
			);
		}
	]
}))


Хардкод, но работает нормально
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 04.12.2014 в 18:47.
Ответить с цитированием