• Для чего нужны пакетные менеджеры для js, например Yarn?

    1) При чем здесь NPM? На кой черт он сдался Node'у? И как он перекочевал во фронтенд? Это просто интересная фича Node, которую начали использовать фронтендеры, а bower развивался параллельно?

    Это пакетный менеджер, чтобы распространять пакеты централизованно, а не искать по всем закоулкам интернета. К этому пришли/придут все языки/среды разработки. У c# есть nuget, у php - composer...

    3) Зачем мне (буду говорить просто) на "сайте" какой-то файл package.json, lock.json? И вообще, зачем мне какие-то зависимости? Установка - да, удобно. Но ведь все условно плагины (галерейки, jquery и пр., и пр.) являются частью сайта и друг от друга не зависят обычно.

    все условно плагины

    Это хорошо, если написанный Вами код использует только зависимости первого уровня вложенности. В проектах бОльшего масштаба, вложенность зависимостей может достигнуть и 3 и 5 уровней. Это когда используемый Вами пакет зависит еще от трех пакетов, каждый из которых, в свою очередь, зависит еще от нескольких, каждый из которых может принести еще несколько зависимостей... Соберете руками?
    Максимум - плагин jquery зависит от самой jquery.

    Это в Вашем кейсе так. Но не значит, что у всех поголовно.

    Надо передать среду разработки - отдаю vagrantfile

    vagrant - сторонняя зависимость.

    Вы не смотрите, что Node.js - весь такой из себя сервер. Это в первую очередь тулчейн для разработки, а потом уже интерпретатор js. Ибо исторически, до появления node, сама только мысль о js на сервер-сайде вызывала эмоции вида "WTF? O_o Seriously?" и "LOL xD". Потому node.js релизился именно как готовый тулчейн для разработки поверх интерпретатора js. То, что над репозиторием npm появились другие менеджеры - это работа сообщества. Чем они лучше/хуже и в каких кейсах - думаю, практикующие люди вам ответят сегодня. Хотя, скорее всего отправят в поиск.
    Ответ написан
    Комментировать
  • Поведение addEventListener отличается при анонимной и именованной функции?

    profesor08
    @profesor08 Куратор тега JavaScript
    Анонимная функция где-то там регистрируется, ссылка на нее есть в объекте, и эту же ссылку ты передаешь в addEventListener. Когда ты создаешь объект, и задаешь переменной новую функцию, то эта функция тоже регистрируется и ссылка на нее устанавливается этой переменной. Но, в eventListner ссылка не будет переназначена. Решить можно разными способами, первое что приходит в голову это удалять старый слушатель и устанавливать новый. Либо задать один какой-то слушатель, который будет вызывать некий код, который будет уже выполнять нужные тебе действия.
    function Popup() {
      this.btn = document.querySelector("h1");
    
      this.btnHandler = e => console.log(e);
    
      this.btn.addEventListener("click", e => this.btnHandler(e));
    }
    
    let p = new Popup();
    
    p.btnHandler = e => console.log(111);
    Ответ написан
    Комментировать
  • Поведение addEventListener отличается при анонимной и именованной функции?

    Stalker_RED
    @Stalker_RED
    Есть переменная, которая хранит функцию для вызова.
    Вот здесь первое заблуждение. Не хранит она функцию. В переменной ссылка (указатель) на функцию, и таких ссылок-переменных может быть несколько. И когда вы делаете pup.btnHandler = function() ..., то переменная теперь указывает на другую функцию, но старая функция, которая уже привязана - никуда не исчезает.

    Если надо менять - можно так:

    Кривовато выглядит, потому что подгонял под ваш код, чтоб понятнее.
    Ответ написан
    3 комментария
  • Простым языком о замыканиях?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    1. Для чего замыкание существуют?
    Для инкапсуляции данных.
    В ООП есть модификаторы доступа (private, protected), которые закрывают доступ к данным извне класса, но позволяют обращаться к ним из методов.
    В ФП для этой задачи используют замыкания, закрывая данные внутри функции. Из вне данные недоступны, но вложенные функции имеют к ним доступ.

    2. В каких условиях они создаются?
    Когда вложенная функция обращается к переменным внешней функции.

    Хоть и просили без примеров, но на примере показать проще:
    // makeCounter - внешняя функция
    function makeCounter(initialValue) {
      var value = +initialValue || 0;
      // counter - внутренняя функция
      // она использует переменную value из внешней функции
      // что-бы это было возможным, для counter создается замыкание,
      // в котором хранится переменная value
      // переменная initialValue функции counter не нужна, поэтому ее можно "забыть"
      return function counter() {
        return value++;
      };
    }
    
    // у нас 3 экземпляра функции counter
    var counter1 = makeCounter();
    var counter2 = makeCounter();
    var counter3 = makeCounter(100);
    // и для каждой есть своя переменная value
    console.log(counter1()); // 0
    console.log(counter1()); // 1
    console.log(counter2()); // 0
    console.log(counter1()); // 2
    console.log(counter3()); // 100
    
    // а вот получить как-то напрямую переменную value мы не можем
    // инкапсуляция нам не дает поломать данные
    Ответ написан
    Комментировать
  • Как правильно использовать Git при работе над SPA приложением одному разработчику?

    JorryGo
    @JorryGo
    Backend разработчик
    Здесь уже больше зависит от твоих потребностей.
    Обычно делают два отдельных git репозитория для фронта и бека.
    Так ты всегда сможешь отдельно откатывать изменения для них.

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

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

    И да, чтобы не делать бекап структуры базы используй миграции, если еще не используешь их.
    Ответ написан
    3 комментария
  • Как правильно использовать Git при работе над SPA приложением одному разработчику?

    Не особо понятно, что вы подразумеваете под словом "правильно". Берёте GIT и просто используйте. У нас все проекты делятся две ветки (SPA. Vue + Laravel):
    1) master
    2) develop

    Разработка ведётся в develop, когда всё протестировано, делается merge в master. Если у вас какая-то большая фича, то можно ответвляться от develop и когда она закончена сливать и удалять её.
    Ответ написан
    12 комментариев
  • Что должно быть в портфолио у React разработчика?

    vUdav
    @vUdav
    Front-end developer
    Я с реактом работаю уже около полугода, а на гитхабе своих проектов на нем не было. Поэтому я поступил так: взял за прототип свой сайт и вложил в него максимум из того что я знаю. Пусть сам сайт весьма небольшой, но можно придумать как впихнуть ту или иную технологию чтобы показать что я умею с этим работать и как я это делаю.

    Ну а какие технологии использовать это уже зависит от твоих знаний) По факту маст-хэв: ООП подход, правильное использование жизненных циклов, работа со state и props, асинхронные функции, react-router, react-redux. Следующими по значимости я бы назвал автоматические тесты. Ну а далее уже наверное моменты сугубо субъективные, вроде выбора способа работы со стилями, TypeScript и прочее.
    Ответ написан
    Комментировать
  • Как изучать, что то новое имея фуллтайм работу?

    trevoga_su
    @trevoga_su
    Изучать на работе. Мне когда работа "позволяла" это делать - я и изучал и/или свой проект писал.
    Да-да. Именно так. Совесть пусть идет в жопу.

    Остальные советы - это бред школьников.
    Если человек спрашивает, значит у него реально нет времени. Если есть семья - то подавно.
    Если устает - то значит устает. Я помню, что значит тратить на дорогу 4 часа в день.
    По вых лучше не работать слишком много - реально можно перегореть. Сам сгорал не один раз.
    Оптимальное время для всего этого дела - будни.
    Ответ написан
    7 комментариев
  • Как работает на низком уровне Node.js и Angular?

    @xfg
    У вас на сервере должен быть запущен постоянно работающий процесс, чтобы обрабатывать входящие запросы от клиентов. На PHP как правило пишут скрипты, которые не висят постоянно в памяти, а выполняются и умирают раз за разом. В таких условиях нужен посредник в виде постоянно работающего процесса. Поэтому вы используете apache, nginx, etc или пользуетесь встроенным php -S localhost:8080 mysite/index.php

    В node.js можно несколько иначе. Скрипты висят в памяти. Чтобы с ними как-то взаимодействовать по сети, вы должны позаботиться об этом самостоятельно и реализовать некий протокол взаимодействия с вашей программой поверх tcp. Это может быть популярный и всем известный http протокол или что-то менее известное или даже придуманное вами.

    Поскольку http протокол довольно популярен, то в node.js предоставили готовую реализацию в виде http модуля, который позволяет написать http сервер в несколько строк.

    Строго говоря, вы это всё можете делать на любом языке, который умеет работать с сетью и PHP здесь не является исключением. Например вот одна из реализаций http сервера на PHP https://github.com/reactphp/http
    Ответ написан
    4 комментария
  • Как работает на низком уровне Node.js и Angular?

    @cluberr
    думаю это Вам поможет Объясняем современный JavaScript динозавру
    Как объяснить 10 лет веб-разработки путешественник...
    NodeJs - это движок для JavaScript , который вынесли из браузера и добавили возможности , которые в браузерном JS были невозможны из-за безопасности , например работа с файловой системой и другие. Сам движок NODEJS называется V8 , написан на C++ и компилит JS в машинный код.

    Вебсервер - это процесс который слушает определенный порт на HTTP запросы , принимает их , парсит и отдает назад ответ в зависимости от запроса. Раньше в этот ответ помещался готовый html код c данными , которые подтягивались из базы, что и было страницей.

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

    Сейчас же при запросе к серверу , сервер отдает сразу HTML код страницы с JS кодом и из этого js кода посылаются асинхронные запросы к бекенду (AJAX) на определенные url адреса сервера RESTip , которые отдают не готовые страницы , а только данные в чистом виде в формате JSON и JS парсит эти данные и вставляет в стандартные html узлы или же кастомные , которые зовутся WebComponets, но пока имеют слабую поддержку браузеров , страницы. Angular упрощает написание кастомных html узлов и внедрение в них данных плюс позволяет их реиспользовать.

    Получается что у Вас может один раз прийти html + js код и потом вся работа с сайтом будет идти через одну страницу в которую javascript будет вставлять нужные данные, а при необходимости еще и обрабатывать их перед вставкой. Сайты , которые так работают называются SPA (Single Page Aplication).
    Ответ написан
    Комментировать
  • Как работает на низком уровне Node.js и Angular?

    AlexMaxTM
    @AlexMaxTM
    Angular это просто фреймворк JS, но отличающийся от JQuery тем, что использует не императивный подход, а декларированый.
    Node.js - это среда для работы JS, написанная на Си, и позволяющая в конечном итоге переводить JS-код в машинный код. Node.js не держит соединения постоянно с клиентом, (для постоянного соединения нужно использовать сокеты), но он предоставляет API для взаимодействия с устройствами ввода-вывода сервера.
    Плюс в том, что вся тормоза интерпретируемых языков перемещается с сервера к клиенту, за счет чего, как правило, достигается прирост скорости. В Node.js много плюсов, но и появляются и минусы, главный образом связанных с тем, что поскольку всё это переместилось на фронтенд, то теперь программировать сайты стали те, кто раньше занимался версткой, со всеми вытекающими последствиями.
    Ответ написан
  • Что учить frontend разработчику?

    1. Сначала учим фундаментальщину (как работают компьютеры, сети и браузер, http, основы программирования).
    2. Затем изучаем как работают конкретные веб-технологии (html, js, css, как всё это парсится браузером и рендерится в веб-страницу, учимся верстать и использовать js, книжек и курсов масса).
    3. Далее изучаем технологии, которые всё это автоматизируют, упрощают и абстрагируют (фреймворки, бутстрапы, реакты, сборщики, jquery, новые стандарты, гриды итд итп).
    4. Практика, применение изученного, выбор специализации (зависит от того, что хотите далее делать во фронте - это может быть просто вёрстка, создание интерфейсов или визиуализация данных, а может быть и работа с графикой\аудио\видео, тренды (сейчас это react, bootstrap, foundation, babel, es6, d3, RxJS, функциональное программирование)), далее развиваться на протяжении жизни можно до бесконечности. Но без первых пунктов это всё ничто.
    Ответ написан
    Комментировать
  • Какие преимущества у одностраничных веб-приложений (SPA)?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    хорошим ли выбором будет react?

    Если вам действительно важно SEO (вы упоминаете об этом), то react как раз таки снимает эту проблему, т.к. умеет рендериться на сервере.

    SPA проще со стороны бэкенда (хотя что может быть проще бэкенда). Есть строго определенный контракт на API, достаточно его выполнить (причем, чаще всего, для платформы есть готовое решение по организации REST) и можно идти пить чай.
    SPA проще со стороны фронтенда, можно начинать работу (и даже всю ее сделать) еще до того, как бэкендер перестанет пить чай (при наличии, опять же, контракта на API).
    SPA лучше по архитектуре (как правило). Никакого тебе PHP+SQL+HTML+JS+CSS в одном файле, даже при всем желании.

    Что же до выбора между SPA и более традиционным сайтом -- надо смотреть, приложение у вас или что. Прелесть gmail, например, в том, что это именно приложение. Оно какое-то время загружается, потом быстро работает и имеет богатый функционал. А прелесть хабра в контенте, никакой динамики там и не надо.
    Ответ написан
    2 комментария
  • Каков список базовых книг по математике?

    @Source
    Лучшие справочники по основам математики, которые я встречал, это:
    Выгодский М.Я. «Справочник по элементарной математике»
    Выгодский М.Я. «Справочник по высшей математике»

    «Справочник по элементарной математике» написан в очень увлекательной манере, с краткими историческими очерками, что весьма полезно для понимания в разрезе «а почему именно так?». К тому же, несмотря на небольшой размер, данный справочник содержит гораздо больше полезной информации, чем вся школьная программа по математике.
    Ответ написан
    4 комментария
  • Какие проекты взять новичку в JAVA для самостоятельной реализации?

    driversti
    @driversti
    Кратко о себе
    Всё выше вами перечисленное затрагивают предложения комментаторов. От себя добавлю, что можете создать клиент-серверное приложение в виде каталога автомобилей, телефонов etc. Тут вопрос в технологиях которые вы хотите/можете/умеете использовать. Можно писать всё ручками (servlets, JDBC, SQL, HTML, CSS, JS), а можно использовать фреймворки (Spring, Hibernate, Angular) или разные другие библиотеки (React для фронта). У вас слишком общее описание.
    Ответ написан
    Комментировать
  • Как эффективно использовать GIT одному человеку в разных проектах?

    compilator
    @compilator
    Senior Data Engineer
    Возьмите за правило, что когда вы пишете новый функционал - всегда отводить новую ветку от основной. В основной у вас будет лежать код, который на данный момент работает на продакшене.

    Тоесть, у вас есть проект. Надо реализовать новую фичу шифрования, например. Вы отводите ветку от основной
    git checkout -b feature/encryption

    Пишете код, тестируете, рефакторите при необходтимости. После того как фича реализована, мержите ее с основной веткой. Для небольшой команды достаточно вот этих основных команд

    git clone - выкачать репозиторий
    git pull – получение изменений из удаленного репозитория
    git checkout - переключиться на ветку
    git checkout –b - отведение новой ветки от текущей с переключением на нее
    git add – добавление файлов в индекс
    git commit –m ‘’ – коммит с комментарием
    git push origin - пуш закоммиченных изменений в удаленный репозиторий origin
    git branch –d - локальное удаление ветки
    git stash save –keep-index + git stash drop – локальное удаление изменений в отслеживаемых файлах
    Ответ написан
    3 комментария
  • Какие проекты взять новичку в JAVA для самостоятельной реализации?

    @frozen_coder
    Java-developer
    В идеале нужно, что бы проект затрагивал разные важные моменты в языке: работа с сетью, базу данных, интерфейсные решения и прочее.

    Напишите файловый сервер с возможностью загрузки файлов через ftp-клиент, через web-морду, через SOAP, через мобильную приложуху с аутентификацией, базой юзеров, также можно в базе хранить какую-нибудь метоинформацию о файле. Например, может быть такой маленький личный фотоальбом с подписями(блог-постами, комментами etc.), фотки из которого доступно скачать и залить повсякому. Попробуете всё)
    Ответ написан
    Комментировать
  • Какие проекты взять новичку в JAVA для самостоятельной реализации?

    @ivanessence
    Android Developer
    Я бы порекомендовал сделать простенький сайт-сервер и в дополнение к этому простенькое приложение под android, которое сможет с этим сервером взаимодействовать. Легенду для сайта/приложения придумайте сами, но пРоФиТ от реализации вышеописанного будет нереальный =)
    Ответ написан
    Комментировать
  • Какие проекты взять новичку в JAVA для самостоятельной реализации?

    Выберите то, что вас по жизни интересует, и запилите соответствующее простое приложение (если хотите идти в сторону Андроид) или сайт (если имеете в виду серверную часть веб-приложений).
    Или, наоборот, сделайте какое-то приложение для коммерции, вроде интернет-магазина.
    Или возьмите задёшево проект на фрилансе, заодно будет доп.стимул в заданные сроки уложиться.
    Ответ написан
    4 комментария