Ответы пользователя по тегу JavaScript
  • Двухсторонний шаблонизатор?

    @egorinsk
    Шаблоны перенести недостаточно, вам еще придется переносить модели и частично бизнес-логику на клиент (если только у вас не примитивный сайтик на 3 странички). На мой взгляд, избежать двойной работы можно лишь используя технологии вроде node.js: в этом случае можно часть кода с логикой сделать разделяемой для клиента и сервера.

    Ну или еще есть вариант, как-то настроить кодогенерацию и генерировать JS-модельки на основе серверного кода.
    Ответ написан
  • [].map и String.prototype.trim

    @egorinsk
    Можно проще.

    var x = string.split(/\s*,\s*/g);
    Ответ написан
    1 комментарий
  • Когда применять JS фреймворки

    @egorinsk
    В мануале по Angular ( docs.angularjs.org/guide/overview ) есть ответ:

    Когда применять:
    > Angular was built for the CRUD application in mind.

    Когда не применять:
    > Games, and GUI editors are examples of very intensive and tricky DOM manipulation. These kinds of apps are different from CRUD apps, and as a result are not a good fit for Angular. In these cases using something closer to bare metal such as jQuery may be a better fit.

    В общем, Angular хорош для аякс-приложений с клиентскими шаблонами, формами и таблицами.
    Ответ написан
    Комментировать
  • Атомарное обноление DOM?

    @egorinsk
    Делайте скролл страницы в самую последнюю очередь. DOM манипуляции в пределах одного JS-события обычно не вызывают перерисовки.
    Ответ написан
  • Как заставить WEB сайт работать локально в Chrome?

    @egorinsk
    При онлайновом режиме есть риск, что при отключении интернета сотрудник нажмет F5, и приложение уже больше не загрузится.
    Ответ написан
    Комментировать
  • Angular не видит биндинг

    @egorinsk
    Вы выбрали неправильный инструмент для этой задачи и неправильный пример для изучения фреймворка. В данном случае лучший инструмент — это код вроде $(form).submit($.ajax({})). Подключать монстрообразный фреймворк ради 2 полей, как минимум странно.

    Angular предназначен в первую очередь для создания CRUD приложений (это написано в документации). Приложений с моделями, навигацией, аяксом и прочим. То, что вы пытаетесь им сделать форму подписки, говорит, что либо 1) вы не прочли даже первую главу документации 2) прочили, но не поняли то, что там написано.

    И я надеюсь, что вы это делаете для себя, а не для заказчика или работодателя, например.
    Ответ написан
  • Предварительная компиляция шаблонов в client-side приложении — нужна ли?

    @egorinsk
    Вы можете не только компилировать, но, например, вырезать пробелы, а они часто составляют половину шаблона.
    Ответ написан
    Комментировать
  • Best practices при обработке серверных ошибок при Ajax запросе?

    @egorinsk
    Показываете сообщение рядом с кнопкой, прокручиваете страницу, чтобы оно было видно, предлагаете варианты действий пользователю.
    Ответ написан
    Комментировать
  • Плагин листания с apple.com?

    @egorinsk
    > Из попыток вытащить

    Как это по-русски.
    Ответ написан
    Комментировать
  • Javascript module pattern и ошибка jshint. Как починить?

    @egorinsk
    Второй способ лучше (на мой взгляд), так как в нем явно понятно, что вы хотите сделать, а первый поставит незнакомого с ним человека в тупик. Зачем там отрицание? Что автор хотел этим сказать? Согласен с jsHint, это плохо.

    > В интернете пишут что первый способ вроде как более предпочтительный

    Это частное мнение. Я так, например, не считаю.
    Ответ написан
    7 комментариев
  • JavaScript меня в могилу сведет [Node.js]

    @egorinsk
    Это не баг и не фича, вы просто неправильно используете this.

    У вас при вызове функции this = глоальному объекту, потому и ошибки, надо писать model = new require(....). Советую почитать, например, тут, про использование this и функции: javascript.ru/tutorial/object/thiskeyword (хотя объяснение там так себе)
    Ответ написан
    2 комментария
  • Как ускорить загрузку картинок в браузере?

    @egorinsk
    Быстрый сервер с толстым каналом, хорошим пирингом и маленьким пингом (пример: сервера вконтакте) мог бы быть эффективнее. Если с вашего хостинга картинки грузятся не так быстро, как хотелось бы, попробуйте найти хостинг лучше.
    Ответ написан
    Комментировать
  • JQuery — Как при исполнении Ajax передать в callback вызывающий объект?

    @egorinsk
    Можно сохранить this в переменную.


    this.addTries();
    var self = this;
    jQuery.get(window.location.href, function(){
    self.doWhateverYouneed();


    Также, вам наверняка будет интересно прочесть про замыкания на learn.javascript.ru, если вы их не знаете.
    Ответ написан
    4 комментария
  • Opera: проблемы с CSS3 keyframe animation?

    @egorinsk
    Справедливости ради, проблемы с обновлением картинки на экране были у Оперы еще много лет назад, например, в анимированных яваскриптом меню. Видимо их движок лучше заточен под статичные страницы.

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

    > Делать fallback на jQuery очень не хотелось, так как теряется вся суть затеи.

    Разве это сложно?

    Также, замечу, что CSS анимации имеют свойство грузить процессор, включать вентиляторы и сажать батарейку. Хотя тот же флеш умеет то же самое и даже больше без такой нагрузки. Вы рискуете делать тормозной и дергающийся сайт. В сети полно анимаций, которые не то что 60, 30 fps не выжимают.
    Ответ написан
  • Подгруздка ресурсов браузером?

    @egorinsk
    Я слышал, такое бывает, если у вас в коде (или в коде какой-то библиотеки) есть слово stop(). Надо удалить его.
    Ответ написан
    Комментировать
  • JavaScipt переключатель, или как отследить показ/скрытие блока?

    @egorinsk
    > который при нажатии на «кнопку (тег: a )»

    Это конечно не совсем по теме вопроса, но для создания кнопок в HTML есть тег button, button по-английски значит «кнопка» (или тег span, если button не верстается нормально). Тег A предназначен для создания гиперссылок.

    Я не знаю, откуда пошла эта нездоровая тенденция (подозреваю, что с запада, так же как и дурная тенденция писать [br /] со слешем, видимо люди думают, что HTML — это вид XML), но всюду вижу, как кнопки и псевдоссылки верстаются тегом A с костылями вроде javascript void. И на сайтах, и в с татьях на Хабре и в каком-нибудь smashing magazine. Уровень неграмотности поражает. Начинающие не хотят читать мануалы и стандарты, а хотят учиться по неграмотным статьям из блогов неграмотных верстальщиков. А опытные верстальщики делают так много лет и не хотят переучиваться.

    Потому советую вам встать наперекор общественному мнению, учиться верстать правильно и никогда не писать a href=# и a href=javascirpt void. После этого вам не придется ломать голову тем, что значит «return false».
    Ответ написан
    6 комментариев
  • Javascript bundler?

    @egorinsk
    echo "(function() {" > file.js
    cat *.js >> file.js
    echo "})()" >> file.js

    Держите! Руби не требуется! Если поколдовать с sed, то будет еще и минификация лишних пробелов!
    Ответ написан
    Комментировать
  • Область видимости переменных JavaScript?

    @egorinsk
    > Почему текущий метод возвращает undifined?

    Потому, что $.ajax (точнее, XmlHttpRequest) только лишь запускает отправку запроса и сразу же возвращает управление, она не ждет, пока он завершится. И return срабатывает раньше, чем вызовется функция onDone, потому там undefined. Логично же?

    > Понимаю, что что-то не так с областью видимости переменных, но как сделать чтобы метод вернул мне значение data в случае успешного получения данных от скрипта?

    Никак. Научитесь мыслить асинхронно: не «метод делает запрос и возвращает данные», а «метод отправляет запрос и когда-нибудь потом вызовет функцию onDone».
    Ответ написан
    Комментировать
  • Сложная резиновая верстка — прошу комментариев к реализации?

    @egorinsk
    Если лого фиксированного размера, то это же элементарно делается средствами CSS: делаем 2 блока (float left и right) шириной 50%, в них блок с margin-right/margin-left, равной размеру логотипа, получаем зону слева от логотипа и справа. Их делим на 3 части с помощью float: left, width 33% и text-align: center.

    Шрифт можно менять через media query.

    Яваскрипт, и тем более тяжелый 200-килобайтовый фреймворк (который наверняка превратит изменение размера окна в слайдшоу на реальном сайте) для такой относительно простой задачи не требуется.
    Ответ написан
  • Карта в Ext.Window.window отображается только частично

    @egorinsk
    Руки скорее всего растут не у вас, а у разработчиков Ext или OpenLayers, видимо, карта вставляется в окошко слишком рано и неверно определяет его размеры. Попробуйте вызвать какой-нибудь метод, чтобы она пересчитала свои размеры.
    Ответ написан
    2 комментария