Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.02.2015, 16:42
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Безболезненный переход с обычного AMD на Babel + AMD?
Решил перевести большой проект на ES6, используя babel + AMD для модулей. Проект состоит из сотен файлов, которые затем собираются с помощью r.js и других инструментов в один цельный HTML. Поэтому я решил делать переход постепенно.

Проблема в том, что Бабел полностью ломает текущий код, заставляя менять всё сразу.

1. Добавляет вызов define. Такой код:
define(["x", "y"], function() { ... });

Превращается в такой:
define(["exports"], function (exports) {
  define(["x", "y"], function() { ... });
});

Кто знаком с AMD знает, что этот код не работает.

2. Скрипты сейчас запрашивают HTML темплейты с помощью requirejs плагина text. Как избежать лапши в коде и, в то же время, позволить r.js собирать проект (т. е. инлайнить HTML в JS для продакшна)?
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #2 (permalink)  
Старый 22.02.2015, 17:55
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от FINoM
Проблема в том, что Бабел полностью ломает текущий код, заставляя менять всё сразу
С Бабелем можно использовать различные системы сборки.
Отчасти твой вопрос уже обсуждался здесь.
В данный момент я остановился на webpack. Кстати, сегодня залил пример использования babel+webpack на гитхаб.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #3 (permalink)  
Старый 22.02.2015, 18:04
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Чуть больше месяца юзаю es6 - полет не просто нормальный, офигенный!
Как сказал kobezzza: "es5 забыть как страшный сон")))
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #4 (permalink)  
Старый 22.02.2015, 18:36
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Пока что я решил просто копировать .js файлы, a ES6 хранить в .es файлах. Вопрос актуален только для запроса HTML (и других не-js файлов). Если менять систему сборки, прийдется перелопатить весь проект.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #5 (permalink)  
Старый 22.02.2015, 21:45
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от FINoM
Если менять систему сборки, прийдется перелопатить весь проект
А это
Сообщение от FINoM
Решил перевести большой проект на ES6
не одно и тоже?

Сообщение от FINoM
т. е. инлайнить HTML в JS для продакшна
Это ты хорошо напомнил, а то я все еще подгружаю ангуляр-шаблоны отдельными запросами. Надо будет заинлайнить с помощью лоадера вебпака.

Сообщение от FINoM
a ES6 хранить в .es файлах
изначально я думал об этом же. Только с расширением .es6
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #6 (permalink)  
Старый 22.02.2015, 21:51
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от nerv_
не одно и тоже?
Не одно и то же. Я пытаюсь сохранить совместимость со старым кодом.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #7 (permalink)  
Старый 22.02.2015, 22:26
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от nerv_ Посмотреть сообщение
Чуть больше месяца юзаю es6 - полет не просто нормальный, офигенный!
Как сказал kobezzza: "es5 забыть как страшный сон")))
аналогично. хорошо, что эти парни сделали распознавание JSX. цены им нет за это

FinoM, не пробовал собирать проект через webpack?
Ответить с цитированием
  #8 (permalink)  
Старый 22.02.2015, 22:35
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Решил перейти с 6to5 на babel и проект пересал собираться.

Настроил как тут сказано https://babeljs.io/docs/using-babel/#webpack и все равно выпадает. Кто-то сталкивался с подобным?

Они там что-то поменяли, после появления вот этого obj && obj.__esModule: return obj ? obj["default"] : obj;
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 22.02.2015 в 22:37.
Ответить с цитированием
  #9 (permalink)  
Старый 22.02.2015, 22:41
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Gozar Посмотреть сообщение
Решил перейти с 6to5 на babel и проект пересал собираться.

Настроил как тут сказано https://babeljs.io/docs/using-babel/#webpack и все равно выпадает. Кто-то сталкивался с подобным?

Они там что-то поменяли, после появления вот этого obj && obj.__esModule: return obj ? obj["default"] : obj;
да, это модули ES6. тоже спотыкнулся на этом
нужно делать импорт и экспорт в одном стиле - т.е. либо ES6, либо CJS
Ответить с цитированием
  #10 (permalink)  
Старый 22.02.2015, 22:49
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Заинлайнил html

melky, слушай, у меня вопрос. Можно ли сделать так, чтобы во время сборки вместо текстовой переменной подставлялось читалось и подставлялось имя текущего файла (без расширения)?
Сейчас приходится руками писать, не очень удобно https://yadi.sk/i/NMa01ZeteqKf8

Сообщение от Gozar
Решил перейти с 6to5 на babel и проект пересал собираться
Сообщение от melky
да, это модули ES6. тоже спотыкнулся на этом
нужно делать импорт и экспорт в одном стиле - т.е. либо ES6, либо CJS
я как знал))) Пишу все в es6 стиле =)
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
Ответ



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

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