• Где используются прототипы, наследование в JS приложениях?

    @xom9lk
    Если речь идет об Angular приложении, то это сложное, с разнообразной бизнес логикой решение. Соответственно, человек должен понимать как строить архитектуру такого приложения. Например, он должен не просто знать расшифровку "SOLID", а знать как использовать фреймворк для соблюдения этих принципов.
    Для проверки можно попросить описать как претендент будет строить приложение, из каких модулей оно будет состоять, что тестировать стоит, что не стоит. Спросить про типичные методы оптимизации отображения большого количества динамических данных в вебе (да в общем то и в нативном приложении).
    Я думаю, что с человеком на собеседовании нужно больше разговаривать, вместе размышлять, искать точки соприкосновения, а не так: "Не знаешь что typeof null === 'object' - проваливай".
  • Где используются прототипы, наследование в JS приложениях?

    @xom9lk
    Лучше эти вещи знать, они пригодятся во фронтенде))) и для Angular приложения, и для React приложения, и вообще, странно, что вы не сталкиваетесь.
    НО... Я поражаюсь, когда собеседуют, например, на Angular проект, спрашивают вот это вот все и сразу отсеивают людей не знающих.
    Поднять эти знания можно за 20 минут, в то время как до проверки более полезных знаний в контексте проекта дело не доходит.
    В такие компании я бы не советовал идти, т.к. как правило там проекты не поддерживаемые, ибо берут людей толком не проверив.
  • Что делать если команда говнокодит?

    @xom9lk
    == - лакмусовая бумажка говнокода - это конечно через чур)))
    maximus2223 TypeScript не решает данной проблемы, т.к. он защищает тебя только на уровне компиляции, а в ходе выполнения программы переменная может содержать что угодно.
    // ts
    function f(x: number) {
      if(x === 1) {
        // do smth with x
      }
    }
    // скомпилируется в
    function f(x) { if(x === 1) { } }
    
    // т.е. ничего не поменялось


    На мой взгляд описанные проблемы автора топика не являются критичными и решаются внедрением code review.
  • В каких случаях стоит делать S.P.A. приложение?

    @xom9lk
    на мой взгляд все очень просто.
    SPA - это приложение или игра.
    Сайт, сайт-визитка, лэндинг, интернет-магазин - это все не про приложение, это информационный ресурс. Можно сделать SPA, но выигрыш один - мгновенные переходы, а минусов много.

    Приложение - это CRM, интернет банк, Excel, Google Earth. Много динамического и уникального контента, рендер которого рациональнее отдать на сторону клиента.

    Если у компании есть $$$, то она может позволить себе развивать информационный ресурс как гибридное приложение, например Twitter, VK, FB. Качественных гибридных проектов с низким бюджетом очень мало. Либо это неподдерживаемый код, либо это тормозит и на клиенте, и на сервере, а чаще все сразу.
  • Зачем верстальщику нужно изучать JavaScript?

    @xom9lk
    Islam Ibakaev: я думаю вы по себе судите. А люди разные и опыт у них разный.
    У меня напарник за неделю стек освоил с моей помощью. У него за плечами более 10 лет разработки на C++, Java, Phyton. С js и ts проблем совсем не было, с версткой кое как. А по Angular и архитектуре, оказалось, что и мне есть чему поучиться у него. В итоге через неделю он начал приносить огромную пользу.
  • Выбор фреймворка для нового проекта - Angular? React? Vue?

    @xom9lk
    Андрей Шедько: Да.
    Еще некоторые плюсы Vue:
    - vue-router сильно лучше и гибче чем react-router (использование regex в маршрутах, метаданные, нативная поддержка скроллинга). С react-router приходится бороться, если нужны эти возможности.
    - можно использовать как template так и jsx, кому что больше нравится.
    - нормальная работа с изолированными стилями, как в Angular, а не костыли типа css-modules
    - более удобная работа с событиями. Например, прямо в шаблоне можно указать, что нужно запретить действие по умолчанию. А такие вещи, как @click.self - это вообще божественно. Или, например @keyup.enter, или @click.ctrl - клик мышки при нажатом ctrl

    Все это мелочи, но сильно упрощает жизнь и делают код, как вы сказали - лаконичнее.
  • Как аргументировать начальству создание существующего проекта заново, с ноля?

    @xom9lk
    Я тоже думаю, что в этом ответе самая верная стратегия. Это лучше и для вас и для руководства. Если вы начнете переписывать с нуля, то неминуемо перестанете выполнять эффективно текущие задачи. А если опыта не хватит, еще и решение может оказаться не сильно лучше и захочется опять переписать. Т.е. для руководства вы станете чуждым, зарывшимся в код элементом, не помогающим развивать бизнес. А если планомерно прививать новый стек, держать в курсе этих изменений руководство, то в последующем они точно заметят прогресс по эффективности внедрения изменений, уменьшению количеству багов и вы для них - полезный партнер.
  • Что учить Angular или React новичку?

    @xom9lk
    kulaeff: нет, не так. Вы вроде сами сказали, что gulp - средство автоматизации, а webpack - средство сборки. Gulp не производит сборку, он запускает browserify, или тот же webpack.
    Инфраструктура проекта? У каждого проекта она своя, например:
    - сделать смузи после коммита
    - проверка качества кода и правильной структуры
    - запуск тестов
    - генерация новой документации после изменения кода
    - обновление файлов локализации
  • Что учить Angular или React новичку?

    @xom9lk
    kulaeff: "И еще надо забыть про gulp/grunt, webpack - наше все." - Что то про сборку тут ничего нет. Вот я и подумал, что вы хотите людей научить Webpack-ом взаимодействовать с инфраструктурой проекта.
  • Что учить Angular или React новичку?

    @xom9lk
    kulaeff: ну так и не пишите, что надо забыть. Webpack не покрывает тех задач, которые решает gulp
  • Что учить Angular или React новичку?

    @xom9lk
    В школах Vue преподавать начали?
  • Как закрывать бекенд API от "левого" доступа?

    @xom9lk
    Никак, даже с авторизацией. Ничего не спасет. Нет 100% способа защитить использование api со сторонних клиентов. Это не только WEB, любые клиенты, в том числе и мобильные.

    Если у вас есть куча бабла, или у вас мобильный банк, то можете нанять команду аналитиков, которые будут минимизировать такие случаи. Рекомендую не париться и сделать свой клиент таким классным, что другим не захочется пользоваться.
  • Переход проекта с jQuery на Angular 1 или Angular 2 или React?

    @xom9lk
    Производительность у вас проседает не от того что вы используете jQuery, а от того, что так написали.
    Если не знать как работать с таблицами с, например, миллионом столбцами и графиками в каждом, то фреймворк не спасет. Тут нужен другой подход в решении задачи и практически любая технология с ней справится.
    Посмотрел на ваш проект, рекомендовал бы использовать Angular.
  • Как при работе единственным веб-мастером-на-все-руки в компании максимально эффективно прогрессировать в веб-разработке?

    @xom9lk
    Сочувствую, рекомендую заниматься поиском работы не прерывая рабочий процесс. Договариваться о собеседованиях по скайпу, в обеденный перерыв и т.д. или отпуск взять. Соответственно перекантовываться не придется. Да и при увольнении у вас наверняка окажется неделька-другая негуленного отпуска, который должны оплатить.
  • Как при работе единственным веб-мастером-на-все-руки в компании максимально эффективно прогрессировать в веб-разработке?

    @xom9lk
    Работал в аналогичной компании, в которой менеджер на менеджере, а от меня надо много и вчера, только проекты были более разноплановые.
    На меня этот период очень положительно сказался:
    1) Выбор технологий на свое усмотрение, очень много перепробовал и выбрал в какую сторону двигаться дальше
    2) Огромный багаж опыта в разных областях разработки
    3) Понимание как сделать с первого раза качественно, т.к. больше времени на задачу и рефакторинг не дадут
    4) Стрессоустойчивость
    5) Спустя время можно было стать местечковым начальником, нанять студентов и нифига не делать
    6) Взаимодействие с заказчиком (руководством) - тоже важное умение. Главное, чтобы оно было взаимовыгодным

    Спустя год устроился в крупную IT компанию. Приняли без проблем. Конечно, пришлось многое наверстать по инструментам для командной разработки.
    Но могу с уверенностью сказать, основной рост получил не в IT компании.
    Почему уволился? Потому что всему свое место. Они уволят уборщицу, когда появится дешевый робот, распустят коллцентр, бухгалтеров, когда появится дешевый ИИ.
    Только в коллективе можно сделать по настоящему ценный и сложный продукт.
  • Как "войти" в веб-разработку в кратчайшие сроки?

    @xom9lk
    1) научиться за 3 месяца можно, все зависит от твоих текущих знаний. Это индивидуально и часто зависит от обстоятельств, кто-то быстрее, кто-то медленнее.
    Например, я веб освоил моментально - сначала устроился на хорошую вакансию, учился по ходу, но у меня был богатый разработческий и алгоритмический опыт.
    2) тебе нужно погружаться в ту сферу, которая наиболее востребована. Так больше шанс, что возьмут без опыта.
    3) не обязательно зацикливаться на студиях. Есть много мест, где платят лучше, интереснее задачи, больше пространства и свободного времени на обучение. Больше шансов, что возьмут, т.к. в первую очередь смотрят на твою адекватность и только потом на опыт. Ты там не получишь наставничества (кроме какого-нибудь аксакала - глав-буха), но будешь сам выбирать решения поставленных задач, и назначать сроки. А веб студия - конвейер, где в тебе видят станок.
    4) немного наглости и уверенности не помешает, не надо работать за символическую плату, от символичности оплаты труда не сильно снижается ожидание от твоей эффективности. Держи планку для себя и работодателя всегда чуть выше, тогда ты будешь стремительно развиваться.
  • Как реализовать такое?

    @xom9lk
    как этим пользоваться можно?
  • Какие популярные IOC контейнеры есть для JavaScript?

    @xom9lk
    https://github.com/young-steveo/bottlejs

    А так - js гибкий и позволяет моккать без использования классических практик, например sinonjs.org отличный помошник
  • Как динамически загрузить react модуль в приложение?

    @xom9lk
    Нужно сделать компонент - обертку.
    class Wrapper extends React.Component {
        static component = null;
        
        componentWillMount () {
            if (!Wrapper.component) {
                require.ensure(['./Component.react'], r => {
                    Wrapper.component = r('./Component.react');
                    this.setState({component: Wrapper.component});
                });
            } else {
                this.setState({component: Wrapper.component})
            }
        }
        
        render () {
            return this.state.component;
        }
    }
  • Какие есть способы ускорения сайта за исключением кэша?

    @xom9lk
    Профилирование о чем нибудь говорит? Нет? Самое время изучить этот вопрос.