Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   JS.next(стандарты, фичи, движки) (https://javascript.ru/forum/offtopic/50248-js-next-standarty-fichi-dvizhki.html)

Safort 04.12.2014 18:38

Итак, снова хорошие новости: https://chromium.googlesource.com/v8...767db00c5b9791

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

kobezzza 04.12.2014 18:45

Цитата:

И в догонку свежая статья на английском про модули 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;
				}
			);
		}
	]
}))


Хардкод, но работает нормально :)

Safort 04.12.2014 18:50

kobezzza,
попробуй 6to5. Он полон плюх из ES6, в т.ч. модули. Сам я его долго не мог использовать, потому, что авторы забыли залить его ;(
Теперь с Трансплитера перешёл на 6to5 и код даже не пришлось менять, в отличие от перехода с Трэйсера на Трансплитер.

kobezzza 04.12.2014 18:52

Цитата:

Сообщение от Safort (Сообщение 344518)
kobezzza,
попробуй 6to5. Он полон плюх из ES6, в т.ч. модули. Сам я его долго не мог использовать, потому, что авторы забыли залить его ;(
Теперь с Трансплитера перешёл на 6to5 и код даже не пришлось менять, в отличие от перехода с Трэйсера на Трансплитер.

Хм... надо затестить :) Хотя немного стрёмно: всё таки у мя ща дето 200к строк кода сумарно на транспилере висит)

Safort 04.12.2014 19:14

kobezzza,
не, ну ты же просто попробуешь, а не в продакшн зальёшь)
К тому же ты можешь пробежаться тестами, это должно гарантировать хоть какую-то надёжность, не?
//сам пока модули в 6то5 не тестил

Там, кстати, и async есть)

kobezzza 04.12.2014 19:20

Цитата:

не, ну ты же просто попробуешь, а не в продакшн зальёшь)
Так не интересно :D

Цитата:

К тому же ты можешь пробежаться тестами, это должно гарантировать хоть какую-то надёжность, не?
Естественно :)

Цитата:

Там, кстати, и async есть)
Угу, но ещё бы в WS поддержка :)

Safort 04.12.2014 20:46

kobezzza,
Цитата:

Угу, но ещё бы в WS поддержка
Но ты ведь можешь отправить им предложение в фичетрекер)

-------------------------------------------------------------------

Кстати, кто как оформляет свой es6[7]-код? Ведь в язык добавились новые синтаксические конструкции. Мб где-то уже есть годные стайл-гайды?

kobezzza 04.12.2014 20:49

Цитата:

Но ты ведь можешь отправить им предложение в фичетрекер)
Разумеется, я делаю это регулярно, что мне даже лицензию подарили на WS :)

Цитата:

Кстати, кто как оформляет свой es6[7]-код? Ведь в язык добавились новые синтаксические конструкции. Мб где-то уже есть годные стайл-гайды?
Также как и раньше :)

Safort 04.12.2014 21:03

kobezzza,
Цитата:

Разумеется, я делаю это регулярно, что мне даже лицензию подарили на WS
Так ты на WS сидишь потому, что он у тебя халявный?) Это они правильно сделали)




Цитата:

Также как и раньше
Это как? Интересует именно новые ES6+ конструкции.

Может быть много вариантов:

let f = ()=>{};
let f = ()=> {};
let f = () =>{};
let f = () => {};

someF((a) => {});
someF(a => {});

kobezzza 04.12.2014 21:25

Цитата:

let f = () => {};
:)


Часовой пояс GMT +3, время: 11:37.