Frontend developer от бога

Redjik

Джедай-мастер
Накидал простенький readme для фронтендщика.

  • Install node-js
  • Install npm
  • Install gulp globally $ npm install --global gulp-cli
  • run npm install in app root folder
  • run gulp --path="/" for webserver or gulp --path="./" for simple direct rendering
В ответ получил

I would really appreciate if you update the read.me on the github
because you put over there some commands that only you understand
and in the past 3 days I wasn’t able to see the site in the browser
I need to know what are the commands to install those things and run the site in the browser on a mac
not google this for 3 hours and not be able to install it
 

fixxxer

К.О.
Партнер клуба
Не очень совет - что делать, если мне одновременно нужны gulp 3 и gulp 4? Я просто кладу шелл-скрипт gulp вида ./node_modules/gulp/bin/gulp.js $@

Хотя этому товарищу вряд ли актуально. :)
 

fixxxer

К.О.
Партнер клуба
brew нету, ноды нету... ты уверен, что это фронтендщик? :)
 

AmdY

Пью пиво
Команда форума
and in the past 3 days I wasn’t able to see the site in the browser
это самый печальный момент, проблема решается пятиминутным созвоном по скайпу, а не растягивается на 3 дня. да и толку, в итоге получишь замусоренную вёрстку с огромными стилями в одном файле без всяких миксинов и префиксеров.

Вот ещё печально-смешное собеседование, человек пять лет назад стал учить язык, взяли его на пол года куда-то на проект стажироваться, потом полез на фриланс, затем попал к нормальным ребятам и Кирилл дал что почитать, а через пол года итог

 

Redjik

Джедай-мастер
с чего это я должен объяснять элементарные вещи, которые гуглятся меньше чем за минуту?
он 3 дня даже не пытался решить вопрос
 

Redjik

Джедай-мастер
@AmdY, а зачем автор-мудак в течении часа мурыжит парня, когда все понятно в первые 10 минут?
Для видоса на ютубе? Чсв почесать?
 

hell0w0rd

Продвинутый новичок
@Redjik, ну это не фронтендер, а верстальщик, отставший от индустрии на 2-3 года. Я, как и другие нормальные разработчики, когда видят gulpfile/gruntfile/webpack.config, да просто package.json без подобных инструкций знаем что делать.

И да, @fixxxer все правильно сказал, не надо никогда ничего глобально ставить. добавляешь start скрипт в package.json, при запуске любого скрипта через npm run <task_name> в $PATH добавляется node_modules/.bin, так что локальный gulp запустит точно ту же версию gulp.

test, start, build - таски, которые должны быть в каждом package.json.
 

hell0w0rd

Продвинутый новичок
Мда, автор видео - вообще классный чувак. Смотрел его доклад про react, отлично все рассказал. Но собеседование реально странное.
Интересно, тут хоть кто-то вообще согласился бы так собеседоваться?
 

Breeze

goshogun
Команда форума
Партнер клуба
Я, как и другие нормальные разработчики, когда видят gulpfile/gruntfile/webpack.config, да просто package.json без подобных инструкций знаем что делать.
Ключевое слово "нормальные".
Нормальный, даже неопытный или просто не в теме(как я, хехе), если ниразу не видел что-то, первым делом в поисковик пойдёт ^_^
 

fixxxer

К.О.
Партнер клуба
@hell0w0rd, в свете последних событий с npm я как-то стал опасаться npm scripts. Особенно всяких postinstall :)

Ну а так да, с тасками идиоматичее. И еще npm shrinkwrap, если уж про практики.

Оффтоп: у меня как-то сложилось впечатление, что js-сообщество старательно собирает все грабли, по которым в более, мм, mature средах все прошли 10-20 лет назад. :) И не только с пакетированием и зависимостями. Скажем, нынешняя общепринятая практика использовать es6-импорты (как в проектах на react, angular2 etc) мне кажется их абсолютно некорректным использованием - этот механизм явно для подключения уже собранных библиотек (можно провести аналогию с jar), а не замена чему-то вроде php-шного include - тут были бы более уместны тайпскриптовые референсы. Интересно, когда придумают автолоад а-ля композер =)
 
Последнее редактирование:

hell0w0rd

Продвинутый новичок
Автолоад а-ля композер невозможнен, пока не введут неймспейсы, а не введут их никогда. У JS рантайма есть возможность запускать несколько версий одной и той же библиотеки, что также не возможно в мире php.
Да, мне тоже страшно запускать npm install, однако такие проблемы есть и у остальных ПМов. В тч у композера, кстати в php научились нативные модули из composer подключать?
По поводу import - для меня это просто более приятный глазу инструмент, чем require. Пока в принципе нет никакой поддержки в браузерах, и мне не понятно, как все это должно в реальности работать. Плюс сейчас появились сборщики умнее browserify (rollup, webpack2), умеющие tree-shaking, как они это называют.
То есть пишешь import { memoize } from 'lodash', и в бандл попадет не весь lodash, а только нужная функция и ее зависимости.
 

fixxxer

К.О.
Партнер клуба
Автолоад а-ля композер невозможнен, пока не введут неймспейсы, а не введут их никогда.
Ну почему? В тайпскрипте вот вполне вменяемый подход к снаряду.

Пока в принципе нет никакой поддержки в браузерах, и мне не понятно, как все это должно в реальности работать.
Мне кажется, надо уже перестать притворяться, что все (якобы, когда-нибудь...) должно работать нативно в браузере без какого-либо препроцессинга.

Плюс сейчас появились сборщики умнее browserify (rollup, webpack2), умеющие tree-shaking, как они это называют.
Сборщики - ок, а с lazy load-ом люди зачастую бьют слишком мелко, чем усложняют себе жизнь, имея при этом в итоге не меньший, а то и бОльший (засчет оверхеда) трафик для конечного пользователя приложения. Хороший пример - ocLazyLoad, с ним почти всегда так и получается.

в php научились нативные модули из composer подключать?
В принципе, оно может запустить pecl install - но зачем это в эпоху контейнеров и вагрантов?
 

hell0w0rd

Продвинутый новичок
Ну ты же понимаешь, когда появился JS и когда TS? Это как C++ и Rust. Модули вроде хотели добавить в c++17, а не добавят, потому что не договорились, и обратную совместимость тянуть надо. А в новом языке старые проблемы изначально решены. Зато есть свои, нормально TS без babel не заведешь, а чтобы завести надо еще прилично попрыгать вокруг его инфраструктурных особенностей, tsd/typings - отличный пример. Хрен поймешь, как им пользоваться, а когда поймешь - уже ничего не хочется.
Мне кажется, надо уже перестать притворяться, что все (якобы, когда-нибудь...) должно работать нативно в браузере без какого-либо препроцессинга.
Это да :) Но писать код с оглядкой на то, что так когда-то будет - норм. А на самых новых высепропозалах - стремно. Об это споткнулись любители декораторов, например.
Сборщики - ок, а с lazy load-ом люди зачастую бьют слишком мелко, чем усложняют себе жизнь, имея при этом в итоге не меньший, а то и бОльший (засчет оверхеда) трафик для конечного пользователя приложения. Хороший пример - ocLazyLoad, с ним почти всегда так и получается.
Это какая-то angular-specific штука, как я понял. Не, в common.js есть require.ensure, который асинхронно подгружает нужный скрипт. В случае с react и react-router, можно так каждый роут завернуть, или только нужные. Получается нормально.
какие такие нативные?
которые на C
 

fixxxer

К.О.
Партнер клуба
Зато с декораторами на TS можно сделать нормальный DI.
Причем декоратор нужен просто чтобы был, просто так, noop, все, что от него требуется - чтобы emitDecoratorMetadata сработал :)
В aurelia вроде так и сделано.
 
Сверху