LINUX.ORG.RU

Скажите, я правильно вообще делаю?

 , ,


2

1

Погружаюсь в AngularJS. Не спрашивайте, почему, но в 1.2 (максимальная кросс-платформенность и минимальное отъедание памяти), никаких jQuery...
использую bootstrap.ui, пагинацию из него.

Пагинация прекрасна и быстра, вот только если посетитель с 99-й страницы перейдёт куда-либо, а потом вернётся, или сохранит в закладки, его UX превратится в тыкву страница снова станет первой.

Не проблема, я нагуглил, что надо использовать $location.path
Но тогда перезагружается страница, и смысл теряется.

Хорошо, в router-ng ставим reloadOnSearch: false

... опять UX превратится в тыкву - если посетитель нажмёт на пункт меню, приведший его на эту пагинацию, он не сработает.

Нашёл воркэраунд - в роутинге писать:

    $routeProvider.when('/bottles/:xxxxx', {
        templateUrl : '/templates/ng/bottles.jade',
        reloadOnSearch: true
    });

    $routeProvider.when('/bottles', {
        templateUrl : '/templates/ng/bottles.jade',
        reloadOnSearch: false
    });


Так я это о чём... Это мне одному вот это вот всё жидкое и густое вперемешку не нравится в этом вашем JavaScript? А остальным и так нормально, и они считают это мощным и немногословным инструментом, или я просто не там копаюсь?

Сейчас иногда на wxPython что-то делаю, так там по сравнению с UI в браузере просто какой-то прекрасный мир идеальных вещей.

★★★★★

Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от ChALkeR

А в чём проблема собирать нативный жс из более нового нативного жс? =) Разговор и пошёл про то, что кофескрипт не просто сдох, а ещё и слегка попахивает, а новый нативный жс и так ему не уступает уже.

Он уступает ему локаничностью кода, оооочень сильно уступает. Ну а так да нету ни каких проблем запилить babel там где нужны конкретные фичи нового стандарта а остальное писать на кофе, идеальное решение.

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

Нет форкнули потому что захотели запилить свой кофескрипт, и даже не один раз форкнули, опенсурс же.

Это так не работает. Форк обычно пилят не с большой радости, а чтобы решить какие-то проблемы, присутствующие в апстриме или доделать инструмент под свои задачи (читай — сделать на основе оригинала инструмент для решения других задач).

Поддерживаемый форк обычно пилят либо чтобы сделать сильно другой проект, либо когда в апстриме есть серьёзные проблемы с самим проектом (например, проблемы с управлением или апстрим тупо сдох) — просто так никто такой ерундой обычно не страдает, если всё было хорошо.

ChALkeR ★★★★★
()
Ответ на: комментарий от TDrive

Он уступает ему локаничностью кода, оооочень сильно уступает.

Пример «локаничного» (орфография автора сохранена) кода приведи, пожалуйста. Я тебе его покажу на жс. А потом я приведу тебе пример кода, и ты его покажешь на кофе. Идёт?

ChALkeR ★★★★★
()
Ответ на: комментарий от ChALkeR

думаю лайвскрипт подходит под определение «сильно другой»

TDrive ★★★★★
()
Ответ на: комментарий от ChALkeR

Вот тебе пример прямо из учебника.

foods = ['broccoli', 'spinach', 'chocolate']
eat food for food in foods when food isnt 'chocolate'

А потом я приведу тебе пример кода, и ты его покажешь на кофе. Идёт?

В кофе есть возможность делать вставки нативного js так что...

TDrive ★★★★★
()
Ответ на: комментарий от Shadow

Ну и как ты картинки кнопок сделаешь через шрифты?

TDrive ★★★★★
()
Ответ на: комментарий от Shadow

Все спрайты склеены в один img. Фокусы с background и div выводят кусочки на экран.

спрайт это и есть картинки склеенные в одну. Только он не поможет если нужно использовать картинку в качестве фона и она должна копироваться по x и y что бы заполнить весь элемент.

TDrive ★★★★★
()
Ответ на: комментарий от TDrive
const foods = ['broccoli', 'spinach', 'chocolate'];
foods.filter(food => food !== 'chocolate').forEach(eat);

Это ещё и читается лучше, а не вывернуто на изнанку.

В кофе есть возможность делать вставки нативного js так что...

Не интересно же. Да и конвертить и кофескриптом, и бабелем — как-то слишком.

ChALkeR ★★★★★
()
Ответ на: комментарий от TDrive

Достаточно руками поменять что нибудь в элементе

Ну закостыляли они некоторые вещи. Это все равно гораздо медленнее -_-

special-k ★★★★
()
Ответ на: комментарий от ChALkeR

который находится в стадии разложения

Да кто вам сказал, что он находится в жопе? В кофе дохрена фич функционального программированния и минималистичный синтаксис, а последний коммит в мастер ветке был чуть более 10 дней назад, как я уже писал. Вы упорно несёте бред.

menangen ★★★★★
()
Ответ на: комментарий от menangen

последний коммит в мастер ветке был чуть более 10 дней назад, как я уже писал

Он же был единственным коммитом во все ветки за последний месяц. И касался только тестов.

Вы посмотрите подвешенные пулл реквесты =).

ChALkeR ★★★★★
()
Ответ на: комментарий от ChALkeR

Ну и что там с реквестами? 30 пул реквестов? В чём проблема то? 180 человек его пилят.

menangen ★★★★★
()
Ответ на: комментарий от ChALkeR

согласен, не плохо. а такое?

switch day
  when "Mon" then go work
  when "Tue" then go relax
  when "Thu" then go iceFishing
  when "Fri", "Sat"
    if day is bingoDay
      go bingo
      go dancing
  when "Sun" then go church
  else go work
и как в новом js обстоит дело с именованными параметрами функции и такой вот фичей
object?.method

# =>
# if (typeof object !== "undefined" && object !== null) {
#  object.method;
# }

TDrive ★★★★★
()
Ответ на: комментарий от special-k

Ну закостыляли они некоторые вещи. Это все равно гораздо медленнее -_-

Это гораздо быстрее когда тебе нужно работать с постоянно изменяющимся стейтом и отражать изменения в html и я сильно сомневаюсь что у тебя получится реализовать это лучше чем сделано в реакте.

TDrive ★★★★★
()
Ответ на: комментарий от ChALkeR
a = {t: function(){console.log(this)}, d: function() {[1,2,3].forEach(function(){console.log(this)})}}
Object { t: a.t(), d: a.d() }
a.t()
Object { t: a.t(), d: a.d() }

a.d()
Window → https://www.linux.org.ru/forum/web-development/12663757/page1
Window → https://www.linux.org.ru/forum/web-development/12663757/page1
Window → https://www.linux.org.ru/forum/web-development/12663757/page1

special-k ★★★★
()
Ответ на: комментарий от ChALkeR

В общем ты на этом свое ES только что сделал баг, поздравляю. Конструкция for весьма хороша и безопасна, но ты не можешь ее пользовать в своем убогом js?) Помоему это забавно.

special-k ★★★★
()
Ответ на: комментарий от special-k

У тебя там тред про ангуляр, он да говно, по 10 раз подряд все перерисовывает, но причем тут реакт? или ты мне предлагаешь читать весь ваш флуд?

TDrive ★★★★★
()
Ответ на: комментарий от special-k

Конструкция for весьма хороша и безопасна,

Справедливости ради скажу что с фор можно сильно нае***ся когда внутри фор промисы, так что ничего безопасного в ней нету, колбеки безопаснее.

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

Первое — да, только обычным switch/case/break. Но по коду примерно так же выйдет.

switch (day) {
  case "Mon": go(work); break;
  case "Tue": go(relax); break;
  case "Thu": go(iceFishing); break;
  case "Fri":
  case "Sat":
    if (day === bingoDay) {
      go(bingo);
      go(dancing);
    }
    break;
  case "Sun": go(church); break;
  default: go(work);
}

eslint проконтролирует, что break нигде не забыт.

Именованные параметры функции — решаются передачей объекта и деструктуризацией. Плюс это совместимо с текущим подходом.

Пример:

function a({ abc, cde = 23, def, gh }) {
  console.log(abc, cde, def, gh);
}

function b() {
  const def = 20;
  a({ def, gh: 42});
}

b();

object?.method() аналогичен object && object.method().

P.S. И да, ты можешь все приведённые мной примеры прямо в консоль браузера копипастить, если у тебя не ие, конечно. Для того, что в это не умеет — есть Babel, который всё приведёт в такой вид, что старые браузеры тоже поймут.

ChALkeR ★★★★★
()
Последнее исправление: ChALkeR (всего исправлений: 6)
Ответ на: комментарий от ChALkeR

eslint проконтролирует, что break нигде не забыт.

Это явно нельзя назвать локаничным кодом.

`object?.method` аналогичен `object && object.method()`.

не получится если там цепочка из методов.

object?.method1()?.method2()?.method3()
не будешь же ты каждый метод цепочки по несколько раз выполнять.

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

Так вот — это я всё к тому, что JS уже хорош сам по себе. Кофескрипт на него, кстати, оказал положителное влияние, и это очень хорошо.

Но сейчас нет особых причин пользоваться кофескриптом уже — плюсы не перевешивают минусы, к которым, кроме отставания по некоторым фичам, относятся весьма смутные перспективы поддержки и то, что он не стандартизован нормально и расходится с тем, как написана большая часть библиотек.

Именно поэтому он (кофескрипт) и находится в таком печальном состоянии — он просто перестал быть нужным.

ChALkeR ★★★★★
()
Последнее исправление: ChALkeR (всего исправлений: 2)
Ответ на: комментарий от TDrive
for (const i of [1, 2, 3]) {
  setTimeout(() => console.log(i), 1000);
}

Ключевой момент — const, у которой область видимости — блок. Ну и плюс ты случайно in написал, хотя имел ввиду of, кажется.

ChALkeR ★★★★★
()
Последнее исправление: ChALkeR (всего исправлений: 1)
Ответ на: комментарий от ChALkeR

Да я это не тебе) там про другое)

Согласен что новый js сильно продвинулся и такой необходимости как раньше в кофе больше нет, тем не менее в кофе осталось много удобных синтаксических фич, про скобочки и точки с запятой опять же третий раз уже говорю, так что хоронить кофе пока рано, ну либо его заменит лайвскрипт например.

TDrive ★★★★★
()
Ответ на: комментарий от ChALkeR

а это типо в новом стандарте больше нет такой проблемы, ну да неплохо.

Ну и плюс ты случайно in написал

в кофе в данном случае in

TDrive ★★★★★
()
Последнее исправление: TDrive (всего исправлений: 1)
Ответ на: комментарий от TDrive

Да я это не тебе) там про другое)

Я вижу, что про другое. Я исправил код, чтобы он работал, как надо — то есть таки выводил отложенно разные цифры, а не только последнюю.

ChALkeR ★★★★★
()
Ответ на: комментарий от TDrive

а это типо в новом стандарте больше нет такой проблемы, ну да неплохо.

Ага. Там проблема была в областях видимости работающих не так, как ожидал пользователь. Замыкания решали проблему только за счёт того, что создавали новые области видимости. Сейчас обычные блоки создают области видимости для переменных, объявленных через let и const, и именно через них и можно решить упомянутую тобой проблему.

Вообще, лучше всего тупо забанить использование в проекте var, например, через вот это правило ESLint: no-var.

Кстати, еслинт следит за js кодом и ругает за всякую фигню, вроде var, кривых отступов, let где надо const, const где надо let, лишних функций где нужны стрелочные функции, неиспользуемых параметров/переменных, необъявленных переменных, забытом ретурне (если хотя бы в одной ветке он есть, а в другой нет), лишнем коде когда можно записывать короче, и прочем и прочем.

А что с этим у лайвскрипта, например?

ChALkeR ★★★★★
()
Ответ на: комментарий от ChALkeR

А что с этим у лайвскрипта, например?

Не знаю, я про лайвскрипт только в этом треде узнал. Для кофе есть http://www.coffeelint.org/ можешь почитать какие там есть правила, ну и свои правила писать ни кто не запрещает.

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

Это явно нельзя назвать локаничным кодом.

Чёрт, не могу уже на это смотреть. «Лаконичным», Карл!

И да,

when "Mon" then go work

аналогичен

case "Mon": go(work); break;

по количеству ключевых слов — ровно столько же, внезапно, а ненависть кофескрипта к скобочкам и точкам с запятыми я не понимаю — реальный код они делают более читаемым, имхо.

не получится если там цепочка из методов.

Вот, с такого кода и надо было начинать ;-). Выглядит неплохо, но лично мне не нужно — это может быть использовано только в случае, если тебе не надо нигде обрабатывать случай else во всей этой цепочке, а это достаточно редко бывает.

Можно исхитриться и записать в одну строку выражением, но я бы поставил if-ы.

ChALkeR ★★★★★
()
Ответ на: комментарий от ChALkeR

по количеству ключевых слов

Не получится из js удобного языка. Нам от js нужен только интерпретатор.

special-k ★★★★
()
Ответ на: комментарий от TDrive

Тут нет ничего опасного. Опасно - это утечки памяти.

special-k ★★★★
()
Ответ на: комментарий от ChALkeR

Когда умер кофескрипт? К нему даже jsx приделали

mystery ★★
()
Ответ на: комментарий от special-k

Тсс... вместо str for str in oldmixedarr when str is 'string' эти люди пишут километровые листинги

mystery ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.