Мы на работе пишем много часто меняющейся бизнес-логики на JS (стартап же). Даже слишком много. И всё это хочется по старой привычке тестировать, но как-нибудь побыстрее, чтобы тесты особо не мешали говнокодить, когда это нужно, и не подгонять под тесты особенно сильно структуру модулей. В какой-то момент пришла мысль, что можно это еще и автоматизировать как-то с помощью простенького babel-плагина, чтобы он для начала все приватные переменные и методы выворачивал в тестовой среде, а в продакшене не трогал. Это оказалось довольно просто и увлекательно. Так появился Introscope, которым мы теперь тестируем всё более-менее сложное.
Рубрика «javascript» - 134
Introscope: ну очень ленивое unit-тестирование
2019-01-22 в 13:06, admin, рубрики: babel, functional programming, javascript, jest, snapshotsBehaviors — конечный автомат без головной боли
2019-01-21 в 15:17, admin, рубрики: behavior, finite state machine, FSM, javascript, конечный автоматСтандартный подход к описанию последовательности вводов пользователя и реакции на них (например при управлении персонажем в игре) — это конечный автомат (state machine). Он, однако, часто приводит к громоздким программам, понимание которых требует немалых усилий или даже зарисовок на бумаге. В этой статье я предлагаю небольшой сдвиг в описании, который позволяет экономить место на экране и мозговой ресурс.
Сдвиг в описании заключается в использовании техники сопрограмм. Для применения этой техники, необходимо представить, какое поведение мы ожидаем от компьютера в итоге. Поэтому я назвал небольшую библиотеку, которую создал под эту задачу — Behaviors.
Читать полностью »
Оптимизация сайта для GooglePage Speed (учтены все особенности после его обновления) Часть 1
2019-01-21 в 14:53, admin, рубрики: css, html, javascript, оптимизация сайтаЭта статья будет интересна, кто столкнулся с разного рода проблемами после обновления Google PageSpeed и претензиям со стороны заказчиков или начальника, почему упал бал или возникло такое количество замечаний. А так же тем, кто производит оптимизацию сайтов.
В первую очередь стоит упомянуть, что вот в этой статье, на мой взгляд, всё очень грамотно и доступно расписано.
Я же от себя добавлю больше практических советов, а так же будет интересно послушать вашу точку зрения и увидеть ваши наработки. Читать полностью »
Транспилятор PAS2JS из Паскаля в JavaScript: несовместимости с Delphi и пути обхода
2019-01-21 в 14:41, admin, рубрики: Delphi, javascript, node.js, pas2js, Pascal, ПрограммированиеВ наше время в кармане обычного человека лежит мощный персональный компьютер, о котором 10-20 лет назад можно было только мечтать. И если у вас километры отлаженного Windows-кода и отлично работающие приложения и утилиты, написанные на Delphi, вы наверняка хотели бы задействовать это богатство для мобильной разработки. А также опыт, накопленный за время программирования под Windows. PAS2JS поможет вам совместить два мира: разработку под Windows и создание Web-приложений и Node.js модулей.
О некоторых обнаруженных трудностях из личного опыта идёт речь в этой статье.
Учебный курс по React, часть 10: практикум по работе со свойствами компонентов и стилизации
2019-01-21 в 9:00, admin, рубрики: javascript, React, ReactJS, Блог компании RUVDS.com, обучение, разработка, Разработка веб-сайтовСегодня, в десятой части перевода учебного курса по React, мы предлагаем вам выполнить практическое задание по работе со свойствами компонентов и по их стилизации.
→ Часть 1: обзор курса, причины популярности React, ReactDOM и JSX
→ Часть 2: функциональные компоненты
→ Часть 3: файлы компонентов, структура проектов
→ Часть 4: родительские и дочерние компоненты
→ Часть 5: начало работы над TODO-приложением, основы стилизации
→ Часть 6: о некоторых особенностях курса, JSX и JavaScript
→ Часть 7: встроенные стили
→ Часть 8: продолжение работы над TODO-приложением, знакомство со свойствами компонентов
→ Часть 9: свойства компонентов
→ Часть 10: практикум по работе со свойствами компонентов и стилизации
Читать полностью »
Дайджест свежих материалов из мира фронтенда за последнюю неделю №348 (14 — 20 января 2019)
2019-01-20 в 21:51, admin, рубрики: angular, css, ES6, html, html5, javascript, JS, React, vue, браузеры, дайджест, подкасты, Разработка веб-сайтов, ссылки, фронтендПредлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.
Thimble (Mozilla) переезжает на Glitch
2019-01-20 в 11:38, admin, рубрики: css, glitch, html, javascript, thimbleС середины декабря 2018 года на сайте проекта Thimble от Mozilla появилось объявление о переезде на платформу проекта Glitch. Переезд должен полностью состояться до 16 декабря 2019 года.
Обе платформы уже обсуждались на Хабре. Статьи о Thimble – статья 1, статья 2. Статья о Glitch.
Создание своего jsfiddle, часть 1
2019-01-20 в 9:20, admin, рубрики: ace editor, javascript, jsfiddleПривет всем читателем habr. В данной статье мы напишем свой онлайн редактор кода.
Зачем я писал свой онлайн редактор кода
В один день мне стало интересно насколько сложно создать свой онлайн редактор по типу jsfiddle, из-за чего я решил написать свой редактор. Написание своего редактора дало мне хорошие знания и понятия javascript'а.
Выбор библиотеки
Выбор библиотеки является важной составляющей создании своего редактора кода. Можно справиться и без библиотеки, но тогда редактор будет не таким красивым.
Есть две популярные библиотеки — Codemirror и Ace. Выбор мой пал на Ace.
Читать полностью »
Вам не нужен Redux
2019-01-19 в 11:45, admin, рубрики: flux, javascript, mvvm, React, ReactJS, redux, Совершенный кодОчередная статья, которая, возможно, так и останется в черновиках, но если вы это читаете, то все-таки это свершилось.
К написанию статьи послужил опыт с Redux
, потому что повестись на хайп было опрометчивым решением. Благо, архитектура приложения позволяла его выпилить безболезненно. =)
Долгое время и огромное количество человек я расспрашивал про то, как они используют Redux
и всегда удивлялся. Почему-то эта опьяняющая очевидность ко мне пришла далеко спустя время, хотя я имею опыт в написании приложений под Android
, где никакого Redux
нет и все живы, и здоровы.
Вся проблема в том, что никто не объясняет зачем нужен и когда нужен Redux
, пока ты не наступил на эти грабли спустя время. К примеру, в нашем проекте Redux
оправдывает себя только в нескольких местах, остальное можно реализовать тупо на Dump & Smart Components
. И в тех самых местах, где он оправдан, я бы также его убрал и использовал события. Если в приложении мало сепаратных частей, которые друг на друге могли бы быть зависимы, то это маловыгодная вещь. Отсюда и появляются всякие оптимизационные костыли (reselect
, например). Но люди, почему-то, ссут подумать своей головой. И сейчас я вам поведаю сказ о том, как жить без Redux
.
Redux vs Smart&Dumb Component vs MVVM
2019-01-19 в 11:45, admin, рубрики: flux, javascript, mvvm, React, ReactJS, redux, Совершенный кодОчередная статья, которая, возможно, так и останется в черновиках, но если вы это читаете, то все-таки это свершилось.
К написанию статьи послужил опыт с Redux
, который показал, что в нашем проекте он оказался лишним. Благо, архитектура проекта позволяет производить манипуляции по внедрению и извлечению архитектурных подходов.
Долгое время и огромное количество человек я расспрашивал про то, как они используют Redux
и всегда удивлялся. Почему-то эта опьяняющая очевидность ко мне пришла далеко спустя время, хотя я имею опыт в написании приложений под Android
, где никакого Redux
нет.
Вся проблема в том, что никто не объясняет зачем нужен и когда нужен Redux
, пока ты не наступил на эти грабли спустя время. К примеру, в нашем проекте Redux
оправдывает себя только в нескольких местах, остальное можно реализовать тупо на Dumb & Smart Components
. И в тех самых местах, где он оправдан, я бы также его убрал и использовал события. Если в приложении мало сепаратных частей, которые друг на друге могли бы быть зависимы, то это маловыгодная вещь. Отсюда и появляются всякие оптимизационные костыли (reselect
, например). Но люди, почему-то, не решаются подумать своей головой. И сейчас я вам поведаю сказ о том, какие еще есть варианты помимо Redux
.