Upload
eugene-zharkov
View
56
Download
5
Embed Size (px)
Citation preview
Евгений ЖарковJuno
Как быть хорошим фронтенд-разработчиком
Не завязывать свой опыт на одном фреймворке
Думать о решении, а не как заставить это работать в %название_фреймворка%
Иногда Single Page Application лишний
Он слишком большой
to make smart decisions
Он слишком мал
Как насчет 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
или через год ваш проект утонет в поддержке всего этого г*вна
Использовать Alpha/Beta/RC ветки - это круто. Глаза светятся от счастья, пока на версии N17 все
перестает работать
Окей, сел, исправил
Выходит N18
“Мы пофиксили 1 баг, который нарушал общий механизм работы”
А у тебя этот баг был фичей
10-20% именно столько нового
стоит использовать на продакшене
Принесите домой больное растение и оно заразит все остальные, аналогично с кодом.
Не все хорошие вещи становятся публичными и получают поддержку комьюнити.
Не все публичные проекты являются качественно спроектированными и готовыми к реальной жизни, которая начинается за пределами ToDo списков и
Counter’ов
[email protected]@2j2e