Ответы пользователя по тегу JavaScript
  • Как разбить элементы на колонки?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Сделайте директиву и внутри разрезайте нормально. Есть правда такой момент что если вы разрешите коллекцию на 3 массива, то придется отслеживать изменения коллекции и мэпить как-то. С другой стороны, можно воспользоваться фильтром limit внутри директивы.
    Ответ написан
    Комментировать
  • Имеет ли смысл посмотреть на другие client-side MVC фреймворки, если я сейчас очень хорошо разбираюсь в Backbone.Marionette?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну как хотите, но вообще стоит пробежаться по документации и выбрать что-то для себя.
    Ответ написан
    Комментировать
  • Когда стоит использовать фреймворк React и другие?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Если у вас SPA - то Angular. Ну или React + какие-либо другие библиотеки которые в сумме дают вам именно фреймворк (React не фреймворк а только библиотека). То есть React вполне можно использовать вместе с angular. Есть ли в этом смысл - другой вопрос.

    В целом посмотрите просто примеры приложений, пройдитесь по документации и выберите для себя что-то. В случае с angular обязательно посмотрите в какую сторону он движется (angular 2.0) что бы принять адекватное решение. На данный момент (angular 1.3) все еще монолитный что многих отталкивает.
    Ответ написан
    2 комментария
  • Какой шаблонизатор выбрать?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Вам типа объяснить зачем шаблонизаторы нужны?

    Какой смысл в использовании шаблонизаторов?

    разница между handlebars и smarty в том что одно для javascript а другое для php. Вы не сможете использовать в проекте на php handlebars и наоборот.
    Ответ написан
    3 комментария
  • Что выбрать php ли java?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    MVC фреймворк CodeIgniter


    Попробуйте может... чего не мертвого поизучать? Что-то чуть более актуальное? Symfony/Laravel там например. Да тот же Yii.

    Оставайтесь в PHP. Если у вас хоть какая-то база есть будет проще. А если доростете до нормального уровня (то есть не говносайты на CI пилить а нормальные проекты) то перейти на java сильно больших сложностей не будет. Языки по семантике схожие, принципы, шаблоны проектирования и т.д. можно просто под копирку реализовывать. Есть некоторые различия правда связанные с моделью работы но это на самом деле будет мелочами.

    Ну и да, почитать по Java в процессе освоения PHP тоже стоит. Какие-нибудь книжки по GoF, GRASP и т.д.

    Словом... вообще нет разницы какой язык вы выбираете. Есть разница только в том плане что на Java проще найти проекты посложнее но и знаний на старте должно быть больше.
    Ответ написан
    1 комментарий
  • Писать самому или брать готовое?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Если есть готовое под ваши требования - берите готовое.
    Если есть готовое которое чуть чуть не удовлетворяет требованиям - берите готовое и допиливайте.
    Если готового нет или есть но допиливать сложнее чем написать с нуля - проще будет написать свой велосипед.

    Плюсы готовых решений - вы экономите деньги клиентов, есть немалый шанс что готовое решение уже где-то используется и протестировано. Если вы находите баги и прочее - всегда можно сделать баг репорт и надеяться на помощь автора библиотеки или плагина. Так же можно делать PR с фиксами и импрувами для будущих разработчиков. opensource во всей красе.

    Велосепедостроение же может поощряться только в случае если у готовых решений есть другие существенные недостатки помимо "фатального". Если вам кажется что вы можете сделать лучше и т.д. можно перед написанием велосипеда обсудить это дело в трекере готового решения. Ну вы меня поняли. Велосипеды хорошо только для обучения и если нет другого выхода.
    Ответ написан
    2 комментария
  • Сколько времени занимает изучение Angular.js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Потратте день, пройдитесь по документации, помечайте непонятные вещи. Сразу выделите минимум недельку на штуки типа директивы, скоупы и т.д. Так же не забывайте что помимо самого angular придется разбираться с модулями аля ui-router что еще пару недель добавит. Что-то можно изучать в процессе, что-то (например работу с $provide, $q и $http) в любом случае придется освоить. Так же я так понимаю что у вас нет опыта в тестировании JS приложений, а без тэстов вы не сможете рефакторить и эксперементировать... А тесты сами по себе займут еще времени. Так же вам нужно разобраться с инфраструктурой - сборка проекта и т.д.

    Словом... прикиньте сами и ответте на вопрос. А так можно только цифры с потолка брать аля 2000 часов.
    Ответ написан
    Комментировать
  • Перерисовывает ли AngularJS DOM?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    чта? фильтры дергаются на каждый $digest цикл. Если фильтр меняет значение, то меняется DOM. Меняется DOM - вне зависимости от того каким образом он меняется, выполняется перерисовка страницы или ее части.

    Либо уточните вопрос. Подозреваю что вас интересуют случаи комбинации ngRepeat и фильтров для коллекций. Если вместо "перерисовывания" вы имеете в виду создание нод - то ngRepeat старается использовать уже существующие ноды. Уточните.
    Ответ написан
  • Изучение Angular.js, где лучше?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Практика и доки.

    Если есть свободное время и не хватает практики - пишите. Есть пара бестолковых идей которые можно реализовать (opensource) но на которые не хватает времени.
    Ответ написан
    4 комментария
  • В каких университетах преподают javascript?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Если и преподают, то не больше семестра. По сути пол года хватит для "углубленного" JS. Вопрос в сфере применения.
    Ответ написан
    Комментировать
  • AngularJs. Почему ругается на контроллер?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Потому что angular.module('app', []).controller('DemoController', DemoController);
    Ответ написан
  • Как работает организация связи между модулями Javascript?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    При вызове метода someAction у модуля модуль инициирует событие event (глобальное событие для всех компонентов которые подписаны на него). В вашем примере модуль Module1 в методе init подписывается на событие и что-то делает при этом.

    Читать про шаблон observer и все такое. Важно понять где стоит применять подобный подход а где лучше явно вызвать метод другого модуля.
    Ответ написан
    6 комментариев
  • Как сформировать методы объекта через цикл?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Читаем про замыкания, контекст вызова, скоупы и все такое.

    Спойлер: Внутри вашего метода будут доступны param.name2 и param.name1.
    Ответ написан
  • Какой язык выбрать для написания back-end?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    какой язык предпочтителен

    Любой который вы знаете. Или на выбор опытного разработчика.

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

    Как не странно если вы на старте рассчитываете на высокие нагрузки и чуть ограничены по срокам то проще всего будет взять PHP + Hack. Если вам нужно поднять проект побыстрее, и при этом производительность не особо парит ибо нагрузки первые пол года будут не высокими - то Ruby. Java если сроки резиновые и вам важна надежность и производительность. Python я бы поставил где-то рядом с Ruby в плане скорости разработки но все же чуть сложнее и жирнее сроки. В плане производительности же есть варианты (Pypy например).

    Так же части приложения требовательные к нагрузкам можно написать на Go (к слову тоже неплохой вариант для бэкэнда аля rest api)... Или воркеры на Erlang какие-то внутренние... или вообще на D/Rust/C++.
    Ответ написан
    10 комментариев
  • Тренировочные задачи по теме Рекурсия и Замыкания?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Организовать при помощи каррирования цепочку вызова методов (по аналогии например с lodash/underscrore).

    var transfromedVal = wrap(val).transform().transform().result();


    Вообще по замыканиям любая задача с обходом коллекций через map/reduce, например реализовать map через reduce или filter через reduce.

    Отдельно по замыканиям - сокрытие имплементации какого-то сервиса - из модуля экспортируются только функции интерфейса,

    рекурсия это обычно обход графов и коллекций, классическая задачка на реализацию бинарного поиска или какой-нибудь сортировки не сильно востребованы на практике... Можно конечно предложить реализовать функцию валидации какого-то объекта со связями...
    Ответ написан
    1 комментарий
  • MVC vs MVVM за чем будущее?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Будущее за теми, кто хотя бы умеет читать википедию.

    Для справки, ни MVVM ни MVC не являются шаблонами проектирования. Это схема использования нескольких шаблонов проектирования. Основная идея оных - разделение логики на слои. MVC декларирует разделение на логику представления, бизнес логику и связывающие это все контроллеры. В MVVM же основная идея заключается в более удобном управлении представлением модели. Особенно в случае когда модель может меняться из слоя представления (из UI тобиш, датабиндинги и все такое).

    p.s. Помимо MVC и MVVM существует масса других схожих схем, типа MVP, HMVC, PAC...
    Ответ написан
    Комментировать
  • Когда использовать $scope а когда ControllerAs?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Controller As желательно всегда, а уж инджектить или нет в контроллер $scope зависит от того, нужно ли вам:
    - подписываться на события
    - ватчеры в контроллерах

    Случай когда вы именно хотите из контроллера задать что-то что должно наследоваться во всех скоупах я нарочно опускаю ибо так делать не стоит. Если уж хотите, это можно сделать в run модуля через $rootScope. Но не из контроллера, они по возможности должны быть изолированными и не должны зависить от иерархии.

    Если вам удается обходиться без этого и все это берут на себя директивы и сервисы - славно, значит верной дорогой идете... скорее всего.

    Единственое что... почему вы пишите SomeController as vm... По идее вы должны писать там алиас контроллера что бы было понятно у кого методы дергаются. Понятно в смысле не ангуляру а вам.
    Ответ написан
    1 комментарий
  • Ошибка в консоли отладчика, смертельно?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну или поставьте node-js, gulp и gulp-webserver. Заодно можно сразу подключить less/sass/stylus и вместо корявого prefixfree использовать более мение адекватный autoprefixer. Ну а там может дойдут руки и haml/jade освоить...
    Ответ написан
    1 комментарий
  • А в чем минусы node.js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В том же в чем его и плюсы.

    Асинхронность... ее там нет. Там есть event loop что позволяет писать крайне эффективные программы в плане работы с I/O (что для web очень неплохо) и не париться о таких вещях как потокобезопасность, блокировки и т.д. А если еще и несколько инстансов приложения запусть - по одному на ядро скажем, то утилизация вычислительных мощностей выйдет неплохой. Но распаралелить что-то в рамках одного процесса воркера мы уже не можем. Мы не можем посчитать что-то, проанализировать, заняться обработкой жирной картинки прямо при обработке запроса потому что наш процесс воркер так же обрабатываете еще пару десятков запросов, и пока мы будем удовлетворять нужды одного простаивать будут все. Нода хороша когда у нас все состоит из элементарных операций которые не занимают много времени, все жирное надо выносить из основного процесса и разруливать очередями и т.д. Эта проблема имеет массу решений на самом деле, но все уже усложняется и нода теряет свою красоту. Лучше взять Java/c#/Python для этого (и не надо тут вспоминать про шутки с многопоточностью в CPython).

    callback-hell. Собственно наличие event loop диктует так же правила о том, как должна писаться программа. Кучи колбэков, невозможность дебажить нормально и получить четкий стэктрейс из ошибки. Да, есть промисы которые решают первую проблему, да есть либы вроде zone.js которые решают вторую и частично первую проблему... но все это не тривиальное дело.

    Собственно... разработка больших и сложных проектов на ноде возможна... но требует от разработчика хорошие знания и понимание того, как работает его платформа. А это увеличивает стоимость разработки в то время как можно взять более эффективные в этом плане инструменты.
    Ответ написан
    10 комментариев
  • AngularJS: Контроллер директивы и синтаксиc "controller as" (вопросы по style guide)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Суть проста. Контроллер предоставляет данные, link мэпит данные на директиву (а как, через scope, темплейты, напрямую взаимодействуя с DOM - решать вам).

    То есть...

    angular.module('app',  [])
      .directive('fooBar', function () {
        
        return {
          restrict: 'EA',
          requires: 'fooBar',
          controller: controller,
          link: link
        };
          
        function controller() {
          var bars = [];
          
          this.getSomeData(someOption){
                return someValueOrPromise;
          }
          
          // do soome logic with data
          
        }
        
        function link(scope, el, attrs, ctrl) {
          ctrl.getSomeData(attrs.options).then(function (data) {
                // render data
          }
        }
      });


    Таким образом у вас работа с данными никак не зависит от способа вывода этих данных. Воспринимайте функцию link как слой представления.

    В случае с ngModel - если честно не могу предложить сходу варианты при котором контроллер должен иметь к нему доступ. Предложите пример если не сложно.
    Ответ написан
    3 комментария