how to be a good frontend developer

Post on 16-Apr-2017

53 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Евгений Жарков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’ов

eu.zharkov@gmail.com@2j2e

top related