Как стать автором
Обновить

TechnoMeetsFront. Открытый онлайн-митап по Frontend-разработке 24/06

API *Конференции

26 июня вместе с разработчиками из «Технократии» и KODE обсудим поговорим о фронтенд-разработке, а именно обсудим что такое WebRTC, узнаем как упростить работу с API, а также подискутируем о важности чистого кода.

Присоединяйтесь к нам

Подробнее
Всего голосов 4: ↑3 и ↓1 +2
Просмотры 446
Комментарии 0

Как применять GraphQL и не переделывать все с нуля, и как Nx ускоряет Angular разработку: митап LoGeek Night Front-End

Блог компании Luxoft JavaScript *Конференции

Привет, Хабр! Приглашаем на митап, посвященный технологиям и тулам в Front-End разработке 2 сентября.

Наши эксперты расскажут о применении GraphQL на проекте и как не переделывать все с нуля, как Nx ускоряет Angular разработку, о преимуществах использования Nx и на что обращать внимание при использовании Nx.

Все подробности под катом.

Читать далее
Всего голосов 4: ↑3 и ↓1 +2
Просмотры 988
Комментарии 0

Х5 Frontend Meetup

Блог компании X5 Tech Управление разработкой *Управление проектами *IT-компании

21 июля в 19:00 X5 Tech проведёт офлайн-митап про фронтенд-разработку.

Эксперты поделятся опытом и расскажут, как избежать проблем при разработке ui-kit, окунут вас в мир React Native, поставят провокационные вопросы про нативную разработку и предложат попробовать вместе натянуть веб на мобилку. Завершим нашу горячую дискуссию софтовой темой про нетворкинг, и как он может помочь для развития личного бренда в карьере и иногда даже в жизни.

Митап будет полезен frontend-разработчикам любого уровня и в целом всем причастным к javascript-программированию от NodeJS до мобильных приложений.

Обещаем много реального опыта и обсуждения злободневных вопросов от крутых экспертов из Х5 и Skillbox.

Регистрация.

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Просмотры 333
Комментарии 0

Запросы к JavaScript

Чулан
Есть необходимость: передавать параметры непосредственно JavaScript.
Мы можем передавать параметры через GET, POST, но при передаче этих параметров просто будет загружаться новая страница, т.е. если в кеше браузера есть

some.so/index.php?id=2

а мы запрашиваем

some.so/index.php?id=3

то сервер для нас сгенерирует новую страницу, он не будет брать из кеша some.so/index.php?id=2 (и правильно будет делать).

Таже самая ситуация и с POST, поэтому говорить о том, что методами GET и POST можно передать параметры яваскрипту конечно можно, но это будет не совсем правдой. Т.к. параметры передаются на сервер, там генерируется новый контент, а там можно что угодно делать. Хоть напрямую GET переменные брать из window.location.href, хоть как-то серверным языком каждый раз заново генерить JavaScript. а это всё только имитация запросов к JavaScript.

Однако, есть один символ в стандарте URL, который нам поможет.

Читать дальше →
Всего голосов 9: ↑7 и ↓2 +5
Просмотры 1.4K
Комментарии 25

W3Cast #5

Чулан

  • Проектирование Web-документов
  • Командная работа в Web-разработке
  • Процесс вёрстки — с какого конца приступать?
  • Фразовые элементы
Всего голосов 1: ↑1 и ↓0 +1
Просмотры 235
Комментарии 27

Суровые челябинские 1С-разработчики и как же юзать XSLT

Чулан
Озадачился я вопросом — а что такое «шаблонизаторы» и какой в них смысл?

Полез читать, да все как-то про «сипульки для сипуления в сипулярии». Но за пол-дня в общем и целом начал осозновать, что именно имеют некоторые, говоря об отделении логики от представления и благе шаблонизаторов для больших проектов, где не нужно дергать кодера для того чтобы что-то где-то поправить, мол — «дизайнера это работа».

Вся сложность восприятия этой темы возникает лишь из-за того, что есть настоящие шаблонизатор — например XML -> XLST -> «Привет мир!» и многие другие, по факту являющееся библиотеками расширения языка.

Что я хочу этим сказать? Да то что Smarty к примеру — не шаблонизатор, а лишь библиотека акронимов, позволяющая писать (я не знаю ни PHP ни Smarty, это лишь попытка объяснения на пальцах, не приставайте к коду)
{foreach from=$data item="entry"}
{$entry.Comment|escape}

{/foreach}

Вместо
<?php
//... а здесь мы пишем функцию, которая читает из базы и последовательно вставляет полученное нами в
$output = $output.''.$entry.''
//... и делает это наверное в цикле
?>

Т.е. разделения логики и отображения не происходит — мы просто используем расширение языка. Мы обязаны быть в курсе, какие именно переменные и в каком виде (какого типа) у нас возвращаются из основного кода, после чего в «шаблонизаторе» мы эти переменные используем для отображения.

Сериализации данных не происходит, а лишь сериализация позволяет гарантировать «чистоту» данных от логики источника. Я не говорю о том, что в сериализованных данных не может содержаться какой-то код, я говорю о том, что он перестает быть исполняемым. Адресат данных должен самостоятельно решать, как именно будут восстановлены полученные им данные, в «предложении» же должны содержатся как минимум и подлежащее и сказуемое для возможности самостоятельного восстановления сути сказаного. Содержащиеся данные не «подразумевают» чего-либо еще или не умалчивают о чем-то, они ровно то, что они есть.

Ну например, если принять выражение -«Эта булка стоит 5 рублей!» за сериализованное, то варианты несереализованных выражений будут такими — «Это стоит 5 рублей! (Что?)», «Булка стоит 5 рублей (Какая?)», «Эта булка стоит 5 (Чего?)», «Эта булка — 5 рублей!(Местная валюта-хлеб?)» ну и апофеозом будет «Это стоит денег (???)» и «Смотрите прайс-лист! (wtf?!)».

Smarty позволяет разработчику сказать что-то типа "-Эта булка стоит 5 тышш рублей, потому что мы — пафосный бутик на Тверской!" и следует принимать решение на основе полученных от него данных и находясь в границах его логики. То есть начать соображать "- А, этож Тверская, тут же все дорого, значит надо баблос слюнявить как сказали".

Сериализация позволяет отстранится от логики источника и вполне обосновано предположить "- Дороговато!", соотнеся услышанную стоимость со своим представлением о том, чего должен стоить хлеб, после чего вежливо поинтересовавшись, не отведывали ли тут рыбного супа предложить продавцу отправиться налегке в пешее эротическое путешествие.

Сериализация — это пачка распечатанных фотографий из последней поездки, которые Вы прихватили с собой показать бабушке в деревне. Не-сериализованные данные — когда вместо распечатанных на матовой бумаге фотокарточек 13х15 Вы везете с собой Blu-ray диск, находя очевидным, что уж где-нибудь там найдется ноут с поддержкой Blu-ray.

Отлично, мы прониклись идеей, что «сериализация» есть благо, но при чем тут 1С?

Ну, они похоже этой идеей просветлились, во всяком случае г-н Рыжиков, создавший незабвенную виршу Иллюзии XML/XSLT технологий. Я лично смутно себе представляю, сколько и чего нужно раскурить, чтобы «я сам программист», прочитавший
много книг и учебников, в которых программистов и проектировщиков учили, что лучший способ создать шаблонизатор или абстрагировать внешний вид (представление) от данных — это загнать все в XML, пропустить потом через XSLT и уже на выходе получить HTML.

наложил табу на back-end логику и
Все восприняли это буквально и начали делать подобные продукты. Ну и конечно мы тоже наслушались и уверовали, что наше будущее — это XML/XSLT технологий.
Совершили подвиг, заставив XSLT шаблоны работать достаточно быстро, вложили кучу сил, времени и денег в разработку технологии… Самые большие каталоги товаров вмещали по 70 тысяч товаров.

сделал вывод, что:
Как не стараются РАЗРАБОТЧИКИ, производительность XML/XSLT систем остается очень низкой, несмотря на все усилия индустрии. Да и как выжать эту производительность? Сначала данные из SQL базы преобразуются в XML (а это текстовый файл большого размера в силу своей структуры). Потом XML данные загружаются в XML парсер уже в серверной части, где они занимают еще больше памяти для работы XPATH, формирования индексов по XML данным в момент загрузки и т.п. Далее XSLT проходит по огромному массиву данных, получая на выходе опять же текст, который занимает память.

При этом искренне не понимал о чем идет речь, когда ему задавали вопрос — «Откуда берутся огромные объемы данных, если контента на страницу бывает кило 100 максимум???».

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

Безумству храбрых поем мы песню!

Не менее весело читать «независимых разработчиков», которые согласны с мэтром — «XSLT — тормоза и отстой!».

Нет, ну вообразите себе — это ровно (в смысле абсолютно эквивалентно) как наткнутся в ЖЖ на топик
-Сегодня взялся за голые провода, стоя в мокрой ванне. Нехило меня током долбануло, 3 часа в себя приходил!

с толпой комментов:
— И я сегодня взялся за провода! И меня долбануло!

-+1, ванны отстой! Резиновые коврики рулят!

— Резина — отстой, лучше пластик!

— Сам ты отстой, и пластик твой — фуфел!

— Ответил за базар, что пластик — фуфел?

— Ха, да у меня друг — директор шинного завода, они там только резину и юзают, а не какой-то говнопластик. Не надо же тебе объяснять, как это круто — делать шины! Это не какой-то там свечной заводик в Урюпинске, это же production!

— А меня так каждый раз током долбит, когда я за провода берусь, достало!

— Да ты лошара, вот меня один раз долбануло в ванне от проводов, так я нахрен их вырубил в щитке в подвале! Чтоб ни меня, не мою семью, ни соседей не било! Надо же и об окружающих думать!

Клиника, одним словом :)

Пожалуйста, не делайте так!

Шаблон должен делать ровно то, что он делает — взять с полки и укомплектовать товар аксессуарами, в зависимости от того — OEM это или Retail. Если Retail — то и диск положи, и шлейфы и мануалы на всех языках, и брелок. А если OEM — чихни в пакет для комплекта к самой железяке. При этом комплектовщик работает с конкретной железкой и каким-то конечным объемом аксессуаров, подходящих к этому устройству. Он не пытается запихнуть в коробку с видеокартой блок питания, потому что у нее есть дополнительный разъем — блок питания не входит в комплект по его ТИ, или вместо видюхи положить бутылку коньяка, метнувшись за ним в магазин, потому что это для «самого». И уж тем более ему не говорят — «Вот видюха, вот склад комплектов — выбери чего-нить и сунь туда, ты же головастый малый!»

Разделение логики означает ее, логики, разделение — не более и не менее!
(если Вас передернуло от такой формулировки — просто проигнорируйте, а если какая-то смутная догадка мелькнула в мозгу — перечитывайте до просветления)

У вас все еще есть база SQL с хреновой тучей записей (как и положено приличной SQL-базе); back-end который ходит в базу и получает от нее полтора десятка записей (в соответствии с запросом пользователя и логикой постраничного отображения, предписывающего отображать 15 записей, причем в названии не должно быть слова «Жопа» если в графе «Возраст» у юзера стоит «до 18») на выходе заворачивающий результаты своей работы в XML; front-end получающий коротенький XML и накладывающий на него свою таблицу стилей ака XLST в результате чего получается новый XML-файл, в котором первоначальный узел <bullshit>Костюм и галстук — $5000</bullshit> меняется на <Haute couture>Костюм и галстук — $5000</Haute couture>.

А где же HTML? Да здесь он, родимый, просто в другом шаблоне — toHTML, для узла <bullshit> задано другое правило, трансформирующего его в <span class=«amazing» >, которое отдается клиенту тем же front-end-ом, если пользователь не умеет читать XML. Да, суть front-end-а именно в том, чтобы говорить с клиентом на одном языке, при этом ему пофигу о чем ведется речь — про шмотки или бухло. Он и о том и о том может, если суфлер-back-end подскажет, что вставлять после «Это очень крутая штука, наша»…

Короче, если Вы смогли это дочитать и все еще пытаетесь реализовать back-end как XLST-преобразование XML-дампа базы данных — прямая дорога вам в 1С, делать «Битрикс-ы» под руководством г-на Рыжикова. Или нет, не возьмут Вас за слова XML и XSLT, они же уже «накололись» на этом и больше так не «лохонутся». Ну, тогда перечитайте еще разок этот опус или попробуйте написать гневный отклик на него, думая над каждой своей фразой.

UP. Disclaimer — сложность текста, его сумбурность, оторванность примеров от предмета и тэдэ — результат крайне поверхностных знаний автора в обсуждаемом предмете. На данный момент вся моя профессиональная подготовка по XLST состоит в прочтении первого предложения XLST — стандарта, гласящего:
This specification defines the syntax and semantics of XSLT, which is a language for transforming XML documents into other XML documents.

Еще вопросы?
Всего голосов 29: ↑21 и ↓8 +13
Просмотры 660
Комментарии 19

С чего начинается БЭМ?

Разработка веб-сайтов *
БЭМ расшифровывается как «Блок Элемент Модификатор». Это подход к web-разработке, позволяющий быстро создавать сайты с гибкой архитектурой. Он знаком многим, кто занимается HTML/CSS вёрсткой.

Изобретённый в Яндексе, БЭМ постепенно проникает и в разработку других компаний.
В данный момент основные мейнтейнеры работают над выводом в Open Source фреймворка, построенного по методологии БЭМ, инструментов и многих полезных утилит.

Читать дальше →
Всего голосов 90: ↑77 и ↓13 +64
Просмотры 52K
Комментарии 61

Готовим Sublime Text 2 для front-end

Разработка веб-сайтов *Программирование *
Ни для одного опытного программиста или верстальщика не секрет, что настроенная под себя среда разработки (не в смысле IDE, а в более общем) — жизненная необходимость. Было время, когда я делал очередную верстку в практически голом Notepad++ на единственном мониторе, поочередно открывая Photoshop, браузер и редактор. Сегодня, в эпоху «автоматизации всего», мне сложно представить, как вообще можно было так работать.

Sublime Text 2 — популярный расширяемый кроссплатформенный текстовый редактор, для которого написано множество плагинов если и не на все случаи жизни, то на многие. В этом посте я попытаюсь рассказать как из этого конструктора сложить удобный инструмент front-end разработчика для работы с HTML, CSS и JavaScript.
Читать дальше →
Всего голосов 107: ↑95 и ↓12 +83
Просмотры 267K
Комментарии 134

Подборка инструментов для эффективной frontend разработки

CSS *
В эту прекрасную пятницу осмелюсь предложить хабрасообществую небольшую подборку приложений, предназначенных для увеличения продуктивности во время работы с фронтэндом. Если ваш любимый апп здесь не представлен — добро пожаловать в комментарии!

Form Builder

image

Этот прекрасный генератор форм поможет вам в создании красивейших CSS логин-боксов и прочих input вещей, при минимальных временных затратах. Помимо форм на сайте этого проекта можно создавать и другие не менее красивые CSS элементы, в том числе кнопки и ленты.
еще 24 ссылки
Всего голосов 204: ↑197 и ↓7 +190
Просмотры 100K
Комментарии 46

Point-Of-Sale: автоматизация промо-акций

Разработка веб-сайтов *
В этой статье хочу поделиться классификацией схем промо-акций, автоматически обрабатываемых POS-системами, выстроенной на опыте разработки таковых для множества клиентов в течении многих же лет. Надеюсь, она будет полезна как разработчикам, реализующим сами POS-модули и интерфейсы с ними, так и пользователям таких систем.
Читать дальше →
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 5.7K
Комментарии 1

Фильтрация элементов в cuSel

Разработка веб-сайтов *jQuery *HTML *
image

На одном из сайтов, который я имею честь обслуживать, для кастомизации селекта используется замечательный jQuery-плагин cuSel. Он удобен тем, что достаточно прост в настройке и позволяет кастомизировать даже полосу прокрутки.
Но иногда случается так, что список элементов может быть очень большим. И быстро найти нужный пункт не так просто.
Читать дальше →
Всего голосов 13: ↑6 и ↓7 -1
Просмотры 7.9K
Комментарии 8

Запуск проекта GeeksLab и анонс конференции «Happу New Front-End! О фронтенде по-новому!» 18 января в Одессе

Блог компании RootUA Media Разработка веб-сайтов *JavaScript *

Приветствую Хабрасообщество!

В 2014 году команда RootUA Media запускает новый образовательный проект GeeksLab. В рамках проекта будут проводиться узкоспециализированные мастер-классы, семинары, различные встречи и конференции. В состав проекта GeeksLab вошли такие мероприятия: FOSS Sea, WebCamp, Odessa Innovation Week, Startup Weekend Odessa, Odessa StartUP Coffee и IT Tech Meeting (в прошлом FOSS Fest и FOSS Meeting).

Список мероприятий проекта GeeksLab пополнит конференция: «Happу New Front-End! О фронтенде по-новому!». Она пройдет 18 января в Одессе на базе Коворкингового пространства HUB Odessa. В рамках конференции будут подняты темы современной верстки, разработки фронтенда на чистом JavaScript, а также использования различных CSS и JavaScrpt фреймворков для построения фронтенда веб-проектов.
Читать дальше →
Всего голосов 15: ↑12 и ↓3 +9
Просмотры 3.7K
Комментарии 1

Загрузка модуля по требованию в AngularJS

JavaScript *Angular *
Перевод
Если вы очень спешите: то да, отложенная загрузка модулей в AngularJS возможна, и код необходимый для этого вы можете видеть ниже.

Неужели AngularJS не поддерживает отложенную загрузку в каким либо способом?


AngularJS является одним из лучших шаблонов для front end разработки, но он все еще молод, и не имеет нескольких важных возможностей (кто сказал хорошего маршрутизатора?).
В то время как большинство из этих возможностей может быть добавлено в виде модулей, которые можно найти в google или на специализированных веб сайтах, есть некоторые функции, которые не получится добавить таким способом.
В настоящее время многим требуется асинхронная загрузка модулей, и кажется Google собирается реализовать ее во второй версии фремворка, но кто знает, когда это будет…
Читать дальше →
Всего голосов 19: ↑17 и ↓2 +15
Просмотры 17K
Комментарии 17

URL.js или дружим JavaScript с обработкой ссылок

JavaScript *
Из песочницы
image

Доброго времени суток, уважаемые хабравчане!

Возникла передо мной сегодня задача генерации GET-параметров и всего URL в целом, на стороне клиента, прям вот щас, без возможности «поговорить» с сервером. Сразу оговорюсь, про этот пост я узнал вот прям перед написанием данной статьи ибо сначала закончил писать, а потом уже прибег к поиску, да и пост тот — не со всем про то же самое, что у меня.

Итак, к делу.

Задача и проблемы


Проблемы — те же что и в посте, который я привел выше:
  • Невозможность использовать window.location для «приготовления» URL;
  • Нельзя работать сразу с несколькими window.location в силу политики безопасности браузеров;
  • Отсутствие известных готовых решений ( да и сейчас, уже апосля, я не нашел подобного кода )

Задачи которые я поставил перед собой:
  • Удобный синтаксис
  • Возможность как читать части URL так и изменять их
  • Работа с GET-параметрами
  • Кроссбраузерность и универсальность


Писал я на чистейшем JavaScript, причем без использования prototype.__defineGetter__ или prototype.__defineSetter__ в угоду кроссбраузерности ибо IE < 9 такого не умеет. Более подробно про getters/setters написано в этом посте.

Для тех кому интересно — сядем разберем, а кому надо готовое решение — милости прошу в конец поста, ссылки на скачивание — там.

Приступим! Раньше сядем — раньше выйдем.
Читать дальше →
Всего голосов 60: ↑47 и ↓13 +34
Просмотры 47K
Комментарии 60

Автоматизированный шаблон для front-end проектов

Разработка веб-сайтов *CSS *JavaScript *CoffeeScript *


Человек изобрел компьютеры, чтобы они выполняли за нас большую часть повторяющихся задач. Это позволяет нам экономить много времени и использовать его с максимальной пользой. И, так как эта статья о front-end разработке, в этой области таких задач много: компиляция css- и js-препроцессоров, сборка спрайтов, оптимизация изображений, минификация файлов и др.
Познать дзен
Всего голосов 27: ↑22 и ↓5 +17
Просмотры 29K
Комментарии 30

Видео докладов с конференции IT NonStop Воронеж 2015

Блог компании DataArt Разработка веб-сайтов *Программирование *
Привет, Хабр!

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

Читать дальше →
Всего голосов 15: ↑13 и ↓2 +11
Просмотры 5.6K
Комментарии 0

Тонкости ES6: Коллекции (часть 1)

Разработка веб-сайтов *JavaScript *
Перевод
Ранее на этой неделе (статья от 19 июня — прим.) спецификация ES6, официально названная ECMA-262, 6th Edition, ECMAScript 2015 Language Specification, преодолела последний барьер и была утверждена как стандарт Ecma. Мои поздравления TC39 и всем остальным, кто помогал. ES6 закончен!

Даже лучше: больше не надо будет ждать следующего обновления 6 лет. Комитет собирается выпускать новую версию в срок около года. Предложения по ES7 уже примаются!

Я считаю, что уместно отпраздновать это событие поговорив о той части Javascript, которую я так желал в нем увидеть, и у которая все еще имеет потенциал к улучшению.

Читать дальше →
Всего голосов 13: ↑11 и ↓2 +9
Просмотры 31K
Комментарии 32

Распознаем коды Морзе с использованием Rx.js

Разработка веб-сайтов *JavaScript *
Tutorial


Задача: на входе сигналы с клавиатуры (keyup, keydown) — на выходе буквы и слова декодированные по азбуке Морзе. О том, как декларативно решить данную задачу используя FRP подход, в частности Rx.js — ниже под катом. (Зачем? Because we can)
Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 16K
Комментарии 17

Видео докладов с конференции IT NonStop Odessa 2015

Блог компании DataArt Разработка веб-сайтов *Программирование *


Привет, Хабр!

Недавно завершился одесский этап крупной международной конференции IT NonStop 2015. Спикеры были не ограничены жесткими рамками тем и направлений, каждый мог поделиться с аудиторией тем, что казалось важным и актуальным именно ему. В итоге мы получили массу отличных докладов на разные темы.

Делимся видео выступлений.

Еще два доклада были посвящены менеджменту, их можно найти в нашем блоге на Мегамозге.
Читать дальше →
Всего голосов 6: ↑3 и ↓3 0
Просмотры 2.7K
Комментарии 0