SlideShare a Scribd company logo
Евгений Жарков
Juno
Как быть хорошим фронтенд-разработчиком
Не завязывать свой опыт
на одном фреймворке
Думать о решении, а не как заставить это работать в
%название_фреймворка%
Иногда Single Page Application лишний
Он слишком большой
to make smart decisions
How to be a good frontend developer
Он слишком мал
Как насчет CMS?
Ой, вы наверное забыли, что это также задачи
frontend-разработчика?
Нет ничего вменяемого на “модных” технологиях
Uber, судя по исходному коду, написал свое решение
Но сколько для этого нужно ресурсов?
Wordpress, Django CMS…прочее
Да, не все проблемы
можно решить с помощью SPA
Статические генераторы,
например Hugo.
Без нормального UI
для пользователя.
А иногда желание бизнеса и возможности браузера
совсем не пересекаются
История со сканером
водительских прав
•Браузер не умеет контролировать камеру, стандарт есть - реализации нет
•Решений для качественного сканирования PDF417 нет
•Насильственный опыт для пользователя
•Нужно что-то делать
• Изучаем платформу, где используют веб-приложение
• iOS, отлично
• Находим качественную библиотеку сканирования штрих-кодов
Но я не умею разрабатывать
под iOS, это же сложно
- Apache Cordoba
- ReactNative
- NativeScript
- Native Proxy
Замечательно, это JS!
Но решать задачу, забивая гвоздь трактором, мы не
будем
Берем 1-2 дня на реализацию “прокси” между
WebView и вашим JS кодом на Swift
Как изолировать и упростить жизнь с backend?
Написать свой mock-сервер и забыть обо всем
зоопарке для старта приложения
"id": faker.random.uuid(),
"customer": {
"id": faker.random.uuid(),
"first_name": faker.name.firstName(),
"last_name": faker.name.lastName()
},
"phone": faker.phone.phoneNumber(),
"active": faker.random.boolean(),
"created_at": faker.date.past().toISOString(),
"expire_at": faker.random.arrayElement([
faker.date.past().toISOString(),
faker.date.future().toISOString(),
null])
faker.js
Все очень плохо? Нет времени внедрять в
существующий проект? Отгородись от зоопарка.
Docker
Но я же, я же JS-разработчик
Несколько дней на разбор Docker
и больше ничего, кроме frontend’а, на твоей машине
FROM python:3.4
ENV PIP_REQUIRE_VIRTUALENV false
RUN mkdir -p /cms/requirements/
ADD requirements/base.txt /cms/requirements/base.txt
RUN pip install -r /cms/requirements/base.txt --trusted-host
pypi.customhost
EXPOSE 8090
CMD python /cms/src/manage.py runserver
--settings=config.settings.docker 0.0.0.0:8090
.PHONY: init clean start stop
current_dir = $(shell pwd)
init:
docker build . -f python.dockerfile -t cms-python
docker run --name cms-mysql -e MYSQL_ROOT_PASSWORD=secretpassword
-d mysql/mysql-server:5.7
docker exec cms-mysql bash -c "mysql -u'root' -p'secretpassword'
-e 'CREATE DATABASE __cms’" || :
docker run --name cms-web --link cms-mysql:mysql -v "${current_dir}/src:/cms/src/"
-p 0.0.0.0:8090:8090 -d cms-python
docker exec cms-web bash -c "python manage.py migrate --settings=config.settings.docker"
docker exec -it cms-web bash -c "python manage.py createsuperuser —
settings=config.settings.docker"
start:
docker stop cms-mysql
docker stop cms-web
stop:
docker start cms-mysql
docker start cms-web
Немного о лицензионных соглашениях
Читайте лицензионные соглашения, чтобы не
подставить компанию
Помните историю с лицензией React.js?
LICENSE > PATENT
The license granted hereunder will terminate, automatically and without
notice,
if you (or any of your subsidiaries, corporate affiliates or agents) initiate
directly or indirectly, or take a direct financial interest in, any Patent
Assertion: (i) against Facebook or any of its subsidiaries or corporate
affiliates, (ii) against any party if such Patent Assertion arises in whole
or
Google Analytics User ID Policy
• You will not upload any data that allows Google to personally identify an
individual (such as certain names, Social Security Numbers, email
addresses, or any similar data), or data that permanently identifies a
particular device (such as a unique device identifier if such an identifier
cannot be reset).
• If you upload any data that allows Google to personally identify an individual,
your Google Analytics account can be terminated, and you may lose your
Google Analytics data.
Вернемся к ежедневным проблемам
Мониторинг package.json
или через год ваш проект утонет в поддержке всего
этого г*вна
How to be a good frontend developer
Использовать Alpha/Beta/RC ветки - это круто.
Глаза светятся от счастья, пока на версии N17 все
перестает работать
Окей, сел, исправил
Выходит N18
“Мы пофиксили 1 баг, который нарушал общий
механизм работы”
А у тебя этот баг был фичей
10-20%
именно столько нового
стоит использовать на продакшене
Принесите домой больное растение и оно заразит
все остальные, аналогично с кодом.
Не все хорошие вещи становятся публичными и
получают поддержку комьюнити.
Не все публичные проекты являются качественно
спроектированными и готовыми к реальной жизни,
которая начинается за пределами ToDo списков и
Counter’ов
eu.zharkov@gmail.com

@2j2e

More Related Content

PDF
5 urok
PDF
Faq2 online-business-master
PDF
Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...
PPT
Vlad savitsky. Church Site in 15 minutes
PPT
Kak cozdat sait
PPT
Wordpress promo
PDF
Основые безопасности WordPress
5 urok
Faq2 online-business-master
Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...
Vlad savitsky. Church Site in 15 minutes
Kak cozdat sait
Wordpress promo
Основые безопасности WordPress

Viewers also liked (20)

PPT
Inspirational research medea
PPTX
Medea: elements and principles
PPTX
Final Medea Set Design
PDF
AngularJS: Good parts
PPT
FINAL MEDEA LIGHT DESIGN
PPT
Medea: Final Light Design
PDF
Welcome to Health Managing Group
PPTX
WinRT Holy COw
PPTX
Final collage
PPTX
Theatre metaphor
PPTX
Medea: Set Design
PDF
Angular.JS: Do it right
PPT
Design tools
PPTX
Our classroom policies
PDF
Как объяснить на платьях процесс разработки?
PPTX
Medea: Costume design
PDF
Что там в summary
PPTX
Mnrega & clotehes as a scenario
PDF
Elm: give it a try
PPTX
Internal appraisal of the firm
Inspirational research medea
Medea: elements and principles
Final Medea Set Design
AngularJS: Good parts
FINAL MEDEA LIGHT DESIGN
Medea: Final Light Design
Welcome to Health Managing Group
WinRT Holy COw
Final collage
Theatre metaphor
Medea: Set Design
Angular.JS: Do it right
Design tools
Our classroom policies
Как объяснить на платьях процесс разработки?
Medea: Costume design
Что там в summary
Mnrega & clotehes as a scenario
Elm: give it a try
Internal appraisal of the firm
Ad

Similar to How to be a good frontend developer (20)

PDF
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
PPTX
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
PDF
Serghei Iakovlev "Chaos engineering in action"
PPT
Защита сайта от взлома и вирусов
PPT
Тестирование мобильных приложений
PPTX
Виды QA: Всё что вы не знали и боялись спростить
PPTX
Современные технологии сайтостроения для решения бизнес-задач
PDF
Модуль 15. Лекция 57-58. Обзоры платформ для различных проектов
PPT
Hl2009 1c Bitrix
PDF
Pavel Dovbush Toster
PDF
Mihail Zachepilo - WebAssembly powered Machine Learning
PDF
Mihail Zachepilo - WebAssembly powered Machine Learning
PPTX
Антон Сапожников. Еще один недостаток современных клиент-серверных приложений
PDF
Load testing with Tsung
PDF
Meet Magento Belarus 2015: Denis Bosak
PPTX
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
PDF
еще один недостаток современных клиент серверных приложений
PPTX
1С-Битрикс: Управление сайтом. Платформа для создания и управления корпоратив...
PDF
Изоморфные приложения и Python - Виталий Глибин, Huntflow
PDF
Губкин Александр
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Serghei Iakovlev "Chaos engineering in action"
Защита сайта от взлома и вирусов
Тестирование мобильных приложений
Виды QA: Всё что вы не знали и боялись спростить
Современные технологии сайтостроения для решения бизнес-задач
Модуль 15. Лекция 57-58. Обзоры платформ для различных проектов
Hl2009 1c Bitrix
Pavel Dovbush Toster
Mihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine Learning
Антон Сапожников. Еще один недостаток современных клиент-серверных приложений
Load testing with Tsung
Meet Magento Belarus 2015: Denis Bosak
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
еще один недостаток современных клиент серверных приложений
1С-Битрикс: Управление сайтом. Платформа для создания и управления корпоратив...
Изоморфные приложения и Python - Виталий Глибин, Huntflow
Губкин Александр
Ad

More from Eugene Zharkov (20)

PDF
Monorepo: React + React Native. React Alicante
PDF
Monorepo: React Web & React Native
PDF
Create React Native App vs Expo vs Manually
PDF
Build automation with Fastlane
PDF
GraphQL and/or REST
PDF
React Native Animation
PDF
React Native: Hurdle Race
PDF
Burn your grass with react native
PDF
Фронтенд сказки
PDF
Cycle.js: Functional and Reactive
PDF
Switch to React.js from AngularJS developer
PDF
Mobile applications in a new way with React Native
PDF
Angular 2: Всех переиграл
PDF
Angular 2.0: Brighter future?
PDF
SignalR: Add real-time to your applications
PDF
Roslyn compiler as a service
PDF
Creating windows store java script apps
PPTX
Big Bang Theory of JavaScript Metro Applications
PPTX
Windows 8 app java script dark side
PPTX
Silverlight 5
Monorepo: React + React Native. React Alicante
Monorepo: React Web & React Native
Create React Native App vs Expo vs Manually
Build automation with Fastlane
GraphQL and/or REST
React Native Animation
React Native: Hurdle Race
Burn your grass with react native
Фронтенд сказки
Cycle.js: Functional and Reactive
Switch to React.js from AngularJS developer
Mobile applications in a new way with React Native
Angular 2: Всех переиграл
Angular 2.0: Brighter future?
SignalR: Add real-time to your applications
Roslyn compiler as a service
Creating windows store java script apps
Big Bang Theory of JavaScript Metro Applications
Windows 8 app java script dark side
Silverlight 5

How to be a good frontend developer