• Зачем нужны маленькие React / Angular компоненты?

    Xuxicheta
    @Xuxicheta Куратор тега Angular
    инженер
    Ангуляр не поощряет делать много маленьких компонентов. В ангуляре компонент это большая штука.
    В том же вью оно проще, радостно лепишь кучу компонентов на любой чих.
    В конце концов, для вещей, о которых вы пишете, есть директивы.

    И уж если вместо хотят вместо <input [class.loading]="loading" type="button"> порываются сделать
    <app-my-button [loading]="loading"></app-my-button>
    и прилепить ради этого целый компонент, то это уже вообще реакт головного мозга.
    Люди просто не умеют в ангуляр, вот и весь ответ.
    Ответ написан
    2 комментария
  • Как на бекенде получить данные о пользователе от Auth0?

    alfss
    @alfss
    https://career.habr.com/alfss
    Внутри JWT токена можно разместить любую информацию. (payload)
    https://auth0.com/docs/scopes/current#example-add-...
    Ответ написан
    Комментировать
  • Что делать с pet-проектами просле их завершения?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Что делать с pet-проектами просле их завершения?

    - репозиторий на гитхабе?
    - рабочий вариант на бесплатном хостинге и домене?
    - рабочий вариант с красивым но платным доменом?


    Профессиональный разработчик или мало-мальски "серьёзный" проект - не сочетается с термином "бесплатный хостинг". Дешевый домен стоит 3$/год, хостинг - 1-3$/мес., что в целом является довольно мизерной суммой. Не хотите брать много доменов - возьмите один + неограниченное кол-во поддоменов Вам в помощь.

    Репозиторий (где угодно, GitLab, GitHab, etc) - тоже будет не лишним, как минимум избавитесь от кучи глупых вопросов, типа "покажите пример кода" и пр. подобных, по крайней мере, если Вам есть что показать...
    Ответ написан
    Комментировать
  • Где можно почитать по сессии и работу с ними в node.js?

    @Abcdefgk
    Протокол HTTP - это "протокол без сохранения состояния". А "сессия" ("сеанс") - это когда юзер авторизовался на сайте, ходит по разным его страницам - а сервер его везде, на всех страницах узнаёт: О! это тот же юзер! В соответствии с внутренним устройством протокола - не должен узнавать (каждая новая страница - новое состояние), - но узнаёт, собака.
    Вот и вся теория.
    Ответ написан
    2 комментария
  • Как грамотно спроектировать MongoDB?

    @Abcdefgk
    В таких вложенных во вложения вложениях потом поиск по индексам не работает нопремер.
    Надо "проектировать" так, чтобы было меньше вложений, но были отсылающие поля. Всё отдельными коллекциями.
    Ну типа коллекция (модель) City
    {
    name: String,
    region: String,
    country: String
    }
    И потом, чтобы выбрать все города Чукотки, находящиеся в США, можно будет запросить просто:
    City
      .find()
      .where('region', 'Чукотка')
      .where('country', 'США')
      .exec(...
    Ответ написан
    2 комментария
  • Как разобраться с авторизацией в Node.js?

    @Abcdefgk
    Ну, запугали человека - криптография-шриптография.
    Модуль passport - для того и готовый модуль, что он сам всю эту криптографию-шмиптографию сделает. Просто нужно освоить несколько пунктов.
    1. Установить в проект и настроить модули express-session и coockie-parser
    Без них passport не будет работать - а в чём же будет тогда смысл его работы, если он в сессию и записывает юзера после регистрации.авторизации? ("сессия" - это специальный подобъект в объекте request - req.session - куда passport сам вписывает под-объект user после авторизации)
    2. Разобраться, что passport - это общий модуль, который обеспечивает работу дополнительных модулей, в которых содержатся, как раз, всякие разные стратегии авторизации - локальная стратегия, через Фейсбук (passport-facebook), через Гугол (passport-google-oauth) и т.д.
    3. Для авторизаций через соцсети нужно в каждом случае поразбираться, как в них создавать "приложения" - оттуда для стратегий нужно будет брать ID юзера и Key, которые эти доп-модули будут запрашивать.
    4. Создаётся один большой файл-модуль для авторизации - типа auth.js - куда реквайрится сам passport плюс реквайрятся нужные (по желанию) стратегии. Типа вот так выглядит верхушка файла:
    var passport = require('passport')
    , FacebookStrategy = require('passport-facebook').Strategy
    , GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
    и для каждой из стратегий пишется код, который уже весь есть в документации модуля passport - его нужно оттуда взять и в нём, конечно, поразбираться. Не в криптографии-шриптогравии, а в этом конкретном коде.
    (Ну, и книжку внимательно изучить - я говорил в другом месте, какую)
    Ответ написан
    5 комментариев
  • Почему многие ругаются на flex и float? Что в таком случае использовать?

    @agaliullin
    CEO & Founder of Futureinapps, LLC
    Flex - это одно из лучших CSS изобретений. Ускоряет верстку, прост в использовании, решают практически любую потребность, особенно при адаптивной вёрстке.
    Ответ написан
    6 комментариев
  • Чего бы сложного сделать на javascript?

    bubandos
    @bubandos
    bash'у, javascript'ую, php'лю, css'аю, html'каю
    Портаните на javascript Battletoads Doubledragon с восьмибитки.
    Чтобы работало по ie6.
    Ответ написан
    Комментировать
  • Какая ситуация с версиями React?

    Infonautica
    @Infonautica
    Front-end Developer
    Последняя стабильная – 15.6.1
    Все сидят в ожидании мажорного релиза 16-ой версии

    Проблем с совместимостью нет, начинай с 15-ой и обрати внимание на вещи, которые будут выключены в след. версии: PropTypes не из пакета 'prop-types', createClass
    Ответ написан
    9 комментариев
  • Как сделать равномерную задержку ajax при кликах на чекбоксах?

    VladimirZhid
    @VladimirZhid
    Нравится делать что-то интересное и полезное.
    Вот ссылочка: https://habrahabr.ru/post/60957/
    Лучше прочитать эту статейку, чем я буду здесь расписывать реализацию
    Для дебоунсинга есть много готовых библиотек, можно просто открыть на гитхабе или npm, входит в стандартный пакет underscore.js и lodash.js (разницы между ними не знаю, как по мне одно и тоже)
    Ответ написан
    1 комментарий
  • Что не так с http запросом в angular2?

    AMar4enko
    @AMar4enko
    ngOnInit() {
        this.appService.getData().subscribe(res => {
           this.users = res;
           console.log(this.users); 
        });
      }
    Ответ написан
    Комментировать
  • Как вычистить css - неиспользуемые классы?

    @edu30151
    А как быть с теми классами которые добавляет js? Ведь эти же классы будут считаться неиспользуемыми... Есть какие нибудь соображения на этот счет?
    Ответ написан
    Комментировать
  • Стоит ли покупать б/у монитор?

    @tartarelin
    б/у без гарантии это лотерея
    Ответ написан
    Комментировать
  • Babel - Uncaught ReferenceError: ... is not defined?

    nalomenko
    @nalomenko
    Руководитель отдела разработок в студии «Lava»
    Всё дело в области видимости переменных. Обычный <script></script> работает в контексте глобального объекта window, ровно как и содержимое аттрибута onClick внутри HTML-тегов.

    В свою очередь, скрипты <script type="text/babel" ></script>, которые в дальнейшем обрабатываются браузерным препроцессором babel/browser.js, помещаются в иную область видимости, что и приводит к ошибке starter() is not defined

    Исправить ситуацию в данном случае просто — нужно привязать обработчик onclick к кнопке не с помощью аттрибутов тега, а из тела babel-скрипта:

    <!DOCTYPE html>
    <html>
    <head>
        <script type="text/babel" >
            'use strict';
            
            var starter = function (){ alert("It works!") }
    
            document.getElementById("btn").onclick = starter;
        </script>
    </head>
    <body>
    	<button id="btn">start</button>	
    	<script src="https://js.cx/babel-core/browser.min.js"></script>	
    </body>
    </html>


    Ну а в целом, браузерные препроцессоры имеют ряд недостатков и неудобств в использовании, особенно, когда дело доходит до продакшна. Именно поэтому браузерная версия препроцессора Babel более недоступна на официальном сайте, где указано, что babel-browser has been removed.

    Такая же участь постигла браузерный JSXTransformer для обработки синтаксиса JSX в React.js

    И для первого, и для второго случаев теперь рекомендуется использовать Babel, как модуль одной из систем сборки проектов, будь то Gulp, Grunt, Webpack или что-либо еще. Отчасти обусловлено это тем, что современный ES2015 имеет множество фич и плагинов, которые Вы врядли будете в полном объёме использовать в своём проекте, а в рамках систем сборки необходимый набор инструментов гибко настраивается в babelrc (например, если из всех прелестей нового EcmaScript нам нужны только стрелочные функции, нужно подключить только плагин transform-es2015-arrow-functions).

    При этом конфигурация файла .babelrc будет выглядеть так:
    {
      "plugins": ["transform-es2015-arrow-functions"]
    }
    Ответ написан
    Комментировать
  • Как реализовать такой функционал формы на Angular?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    typeahead-on-select="vm.onNameSelected($item, $model, $label)"


    а уж в методе onNameSelected контроллера рарзуливайте.
    Ответ написан
    Комментировать
  • Как использовать значение переменной в качестве ключа массива js (создание)?

    bogdanov-s
    @bogdanov-s
    Че-то там программирую
    var addTime = new Date().getTime();
    var price = 100;
    
    var purchases = {};
    purchases[addTime]=price;
    
    console.log(purchases);  // Object {1448890241889: 100}
    Ответ написан
    Комментировать
  • Как использовать значение переменной в качестве ключа массива js (создание)?

    hahenty
    @hahenty
    ('•')
    function pff( k, v ) {
      var r = {};
      r[ k ] = v;
      return r;
    }
    
    purchases.add( pff( addTime, price ) );
    Ответ написан
    Комментировать
  • Зачем нужен PostCSS если есть Gulp и его плагины?

    c01nd01r
    @c01nd01r
    Продам гараж
    Оно не то, что бы там лучше или еще как-то...
    PostCSS немного про другое.
    Он предоставляет API для работы с CSS, который он получил на вход. А плагины для PostCSS используют этот интерфейс для кастомизации/модификации/что-там-делает-ваш-плагин.
    Т.е. это еще один инструмент для работы со стилями.
    Можно использовать его вместе с gulp, можно использовать заместо gulp.
    Используйте так, как вам удобно.
    Ответ написан
    Комментировать
  • Как понять эту функцию angular?

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

    Возможно правда что вы пытаетесь перевести код с jquery на angular, но тогда не понятно почему вы привели не JSON а какой-то js код который его разбирает.

    которая должна удалить дубли из текста.

    ng-repeat это примитив ангуляра для создания элементов для каждого элемента коллекции (массива). Ничего он удалять не должен. Вы это все должны сделать сами, простым Array.filter. Просто на JS. Ангуляр это UI фреймворк, обработка данных должна оставаться на вашей совести.

    Мне нужно знать что я делаю не верно

    Сделайте все просто на JS. На входе JSON, на выходе требуемая вами коллекция объектов. Затем эту коллекцию уже выводите через ngRepeat + биндинги.

    Вся соль ангуляра в том что бы полностью отделить логику обработки данных (что вы там фильтруете и под какие условия) от представления этих данных. Вместо прямой работы с DOM используйте датабиндинг.
    Ответ написан
    Комментировать
  • Как правильно сверстать слайдер, который на мобильниках превращается в простой список с подгрузкой контента?

    paulradzkov
    @paulradzkov
    Дизайнер, верстальщик, начальник отдела UI
    Правильный способ — сделать наоборот: сначала для маленьких экранов сверстать список, а для больших экранов яваскриптом добавить классы и инициализировать слайдер. Этот подход называется «Mobile First» habrahabr.ru/post/269419
    Ответ написан
    Комментировать