Ответы пользователя по тегу JavaScript
  • Стоит ли сейчас учить TypeScript?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    но вторая его версия пишется на TypeScrip


    Какая разница на чем его пишут, если вы можете писать на чем захотите.

    Давайте проясним. TypeScript это ES6/ES7-stage1 + информация о типах. То есть если вы знаете ES6/ES7-stage1 то вы автоматически знаете TypeScript (добавится только информация о типах и некоторые нюансы, но в целом они строго следует стандарту).

    То есть вот это валидный TypeScript:
    class Foo {
        bar = 'default property value';
    
        constructor(untypedArg) {
           this.foobar = untypedArg;
        }
    }


    Одновременно с тем что это валидный TypeScript код это так же валидный код с точки зрения ES (с учетом драфтов находящихся в stage1, вроде пропертей для объектов)

    Это не Dart, который является другим языком. Это надстройка над JS и не более, кроме возможности (опциальной) декларации типов - там ничего больше нет. Но зато для больших проектов эта информация позволяет избавиться от кучи багов.
    Ответ написан
  • Точные таймеры на JavaScript?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    расхождение в браузерах около 20 секунд


    И это нисколечки вас не должно тревожить (что бы понять почему это вообще происходит - почитайте про event loop). Если вам нужно точное время - Date.now(), с точностью до милисекунд.
    Ответ написан
    8 комментариев
  • Как обстоят дела с пререндером растровой и векторной графики?

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

    но называть это пререндрингом графики не выходит, рендриться графика будет исключительно на клиенте.
    Ответ написан
    4 комментария
  • Как избежать краша браузера при $state.go()?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    out-of-memory уже говорит нам о меморилике.
    Ответ написан
    Комментировать
  • Как создавать spa приложение на сервере?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    It depends.

    Изоморфность приложений, это весьма абстрактный термин который не подразумевает под собой никакой конкретики.

    На каждое подключение нужно создавать отдельный экземпляр spa приложения для его пререндера?


    Если UI не зависит от пользователя - можно вообще варнишом каким закэшировать это добро.

    Если UI зависит от пользователя - опять же вопрос что нам нужно получить. Тот же реакт можно в рамках одного процесса рендрить совершенно по разному. Как и компоненты второго ангуляра. Но вот то как вы строите свое приложение уже может вносить раздор и т.д.

    Изоморфность это круто но пока она мало у кого есть и люди еще не знают как правильно ее готовить. У каждого получается по разному.
    Ответ написан
  • Как правильно получения length у класса?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Нужно подсчитать количество символов в строке с классом *text*


    Алгоритм:

    1) получаем элемент по классу.
    2) достаем текст из элемента
    3) получаем длину строки
    Ответ написан
    Комментировать
  • Какие варианты асинхронной загрузки можно использовать с inline js кодом?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    берем какой-нибудь загрузчик скриптов. Инлайним его в тело страницы. Загружаем им jquery и другие штуки.
    Ответ написан
  • Как повторить последнее действие после обновления refresh token в AngularJS?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    смотреть angular-http-auth, там есть реализация повторения запросов.

    Но в случае refresh токенов должен быть чуть другой подход. Вы должны написать интерцептор, который перед запросом сам будет проверять, нужно ли обновлять токен, и если да - чейнить промис. То есть рефреш токен должен использоваться до а не после того как зафэйлилась авторизация.
    Ответ написан
    Комментировать
  • Практика с AngularJS?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    варианты:
    - проект с командой опытных ангулярщиков, где есть код ревью. Как мне кажется это весьма редкий кейс но как по мне наилучший.
    - нанять человека с опытом для того что бы делал код ревью да подсказывал че как. Тут есть риски напороться на мнение одного конкретного человека. Ангуляр можно готовить очень по разному.
    - добавиться в чатик какой (вроде frontend ua и т.д.) и тероризировать сообщество распросами кто как чего готовит и скаким проблемами можно сталкнуться. Дешево и сердито. Можно даже договориться за так о код ревью от пары человек. Обмен опытом и знаниями это хорошо.
    - поковыряться в более современных решениях (например reactjs + redux), дабы было более полное представление о том как готовить ангуляр и получить более полное представление о недостатках первой ветки (во второй проблем вроде навязывания двустороннего дата биндинга уже нет, но второй ангуляр еще в бете и я бы не рекомендовал его использовать для коммерческих проектов еще хотя бы пару месяцев). Все то же что и в реакте можно делать и на ангуляре, просто есть в первой ветке места не очень красивые. Может даже поправят в 1.5 версии, но пока сомнительно.

    Ну и да - рекомендую кодить на angular1 с оглядкой на angular2. stateless-компоненты, односторонний поток данных и все те тренды которые используют все популярные фреймворки. Ну и хотя бы на ES6 все писать (babel) и бандлерами вроде webpack или system.js, с ним готовить ангуляр удобнее. Пример. Ну и тесты, тогда рисков меньше.
    Ответ написан
  • Как узнать длинну объекта (ассоциативный массив)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Все было бы проще, не будь он многомерным

    Значения на ключи не влияют.

    Но т.к массив многомерный, получаем в ответ 2

    Вы проверяли? Что-то подсказывает что нет ибо работает все так как нужно.

    ещё, для обхода массива циклом,требуется такая конструкция:

    Ну либо for of, для объектов оно не отличается так как итерируются не значения а свойства.

    p.s. Вы на PHP писали что-ли?
    Ответ написан
    2 комментария
  • Какое сейчас есть примерное количество тенденций и решений в современных веб сайтах?

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


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

    С опытом все будет быстрее. А вам надо учиться гуглить.
    Ответ написан
    Комментировать
  • Как работает прототип в js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    function Rabbit(name) {
      this.name = name;
      alert( name );
    }
    
    Rabbit === Rabbit.prototype.constructor // true
    Rabbit === Rabbit.constructor // false


    короче читаем

    https://developer.mozilla.org/en-US/docs/Web/JavaS...

    если это не помогаем - идем в спецификацию.
    Ответ написан
    1 комментарий
  • Можно ли анимировать svg на чистом Javascript?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    d3.js написан на чистом javascript, так что да. можно. Вопрос в трудозатратах. По опыту скажу что проще взять d3.js где реализовано много упрощалок.

    Если вас интересует вопрос как, сначала стоит разобраться как вообще анимируются SVG. А потом придумать как это провернуть на JS. Ну или посмотреть исходники самой d3.js.
    https://css-tricks.com/guide-svg-animations-smil/
    Ответ написан
    Комментировать
  • React Native vs Framework7?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    nativescript.org

    я так понимаю чат на node.js делать?

    Судя по характеру вопроса - да, проще будет на node.js
    Ответ написан
  • Чем заменить gulp.run?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    https://www.npmjs.com/package/gulp-sequence

    в gulp4 они заменили планировщик, и теперь gulp.run не нужен, все заменили комбинации из parallel/series.

    Ваш же случай лечится еще проще:

    gulp.task('run-beats', global.options.prod ? 
        beats_task.prod : beats_task.dev
    });
    Ответ написан
    1 комментарий
  • Как продолжить обучение js?

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    используйте ng-click и привязку к состоянию, не работайте с DOM сами.

    Вся суть ангуляра в декларативности вью, то есть никаких попыток самостоятельно что-то поменять в DOM.

    <div class="hide-elements" ng-class="{'your-class-name': vm.some.condition}"></div>
        <button class="add" ng-click="vm.add()">+</button>


    в контроллере меняете состояние компонента и все хорошо.

    Поясню идею, почему это хорошо. Если у вашего приложения нет привязки к DOM и он оперирует примитивами, который предоставляет вам ангуляр (ngHide/ngShow/ngClass/ngRepeat и т.д.) то вам не нужно париться вообще о том как формируется представление. Уменьшается возможность побочных эффектов, отсутствует необходимость покрывать код тестами (ну или волноваться что что-то сломается просто так), достаточно проверить что приложение входит в необходимое состояние а ангуляр вам уже гарантирует что представление под это состояние подстроится так, как вы это задекларировали в шаблонах.
    Ответ написан
    8 комментариев
  • Почему не парсится передача модели в angular.js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    ну потому что такой синтаксис запрещен для выражений. Читайте окументацию. ng-model использует двусторонний биндинг, так что скобки (сахар для интерполяции значений) нужно убрать.

    p.s. Я настоятельно рекомендую таки почитать документацию к инструментам которые вы используете. ну или видеокурсы хотя бы пройти.
    Ответ написан
    1 комментарий
  • Не работает $compile после запроса?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    По после запроса на then почему то не работает и кидает трейс на моменте compileScope.$apply();


    Приведи трейс, я на 90% уверен что у тебя там ошибка вида $digest already in progress.

    Это пожалуй самое гнилое место в ангуляре и я дико рад тому что они избавились от этого во втором. Перед запуском $digest цикла (то что вызывается у $rootScope когда вы делаете apply) надо бы проверить не запущен ли он. Сервис $http автоматически запускает $digest по завершению запроса, если что.

    Самый простой способ обезапасить себя от подобного - использовать сервис $timeout, который является оберткой и сам хэндлит $digest цикл.
    Ответ написан
    6 комментариев