Обновить
206.25

JavaScript *

Прототипно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Engine-version — npm пакет, который позволит задать корректное окружение разработки

Время на прочтение1 мин
Охват и читатели10K

Некоторые проекты зачастую требуют специфичные версии локально установленных программ. Это может быть как определенная версия node.js или npm (например, npm@7 с поддержкой workspaces), так и определенная база данных, менеджер пакетов и другие утилиты, которые нельзя установить из npm. Зачастую команды фиксирую версии в чатиках, readme или вики.

npm позволяет задекларировать в package.json файле необходимые версии node и npm, но никак не проверяет их. Чтобы исправить это и расширить список инструментов был написан небольшой npm пакет engine-version. Пакет работает очень просто: сначала он считывает описание необходимого софта из package.json, а затем смотрит установлена ли программа и совпадает ли установленная версия описанной. И если проверки прошли неудачно, отображается список ошибок.

Читать далее

Представляем Quarkly – инструмент для react-разработчиков и дизайнеров, который поможет оптимизировать вашу разработку

Время на прочтение3 мин
Охват и читатели8.7K

Всем привет! Идеологически Quarkly – это проект, который призван упростить жизнь веб-разработчикам и веб-дизайнерам. В этом посте я коротко расскажу, за счет чего это возможно.


Прежде всего, давайте посмотрим, как выглядит типичный цикл разработки веб-приложения в 2020 году? Есть команда. В этой команде есть дизайнер и разработчик. Первый создает дизайн-спецификацию в Figma. Второй, на основе дизайн-спецификации, создает компоненты, переносит тему. Результат своей работы программист показывает дизайнеру в Storybook. Дизайнер его проверяет и утверждает проект, если всё хорошо. Далее он начинает создавать макеты, а разработчик верстает их при помощи компонентов из спецификации.



Vue 3 на Typescript

Время на прочтение10 мин
Охват и читатели61K

vue3+ts


Популярность Typescript растет день ото дня. Javascript нетипизированный язык(или слабо типизированный, если точнее), и одна и та же переменная способна принимать и строку, и число, и даже объект. С одной стороны, это делает язык гибким, с другой, потенциально ведет к многочисленным ошибкам. Typescript создан, чтобы решить эту проблему. Vue старается не отставать от моды, и в новой версии фреймворка была значительно улучшена поддержка языка. Теперь переход на Typescript проще и приятнее, чем был раньше. Хороший повод научиться чему-то новому, тем более, что в требованиях к вакансиям он встречается все чаще и чаще.


В этой статье мы перепишем тестовое задание, которое я разбирал ранее, на Vue 3 и Typescript и вдобавок используем обновленные Vue-Router и Vuex(критики, вы были услышаны).


Update: код в статье был улучшен в соответствии с пожеланиями.

Читать дальше →

Рендеринг на клиенте, на сервере и генерация статических сайтов

Время на прочтение5 мин
Охват и читатели17K

Приветствую всех профессионалов и любителей сайтостроения! Предлагаю вашему вниманию перевод статьи "Client-Side Rendering vs Server-Side Rendering vs Static-Site Generation" от Malcolm Laing.


Фронтендеры часто используют эти термины для описания своих приложений. Однако людей, хуже знакомых с веб-технологиямм, эти понятия часто вводят в заблуждение. Если вам сложно понять различия между рендерингом на стороне клиенте, рендерингом на стороне сервера и генерацией статических сайтов — эта статья для вас!

Читать дальше →

JS и его запретные тайны

Время на прочтение4 мин
Охват и читатели21K
Так вышло, что наша компания искала разработчиков. В работе мы используем стандартный набор веб-технологий: HTML, CSS, Javascript, PHP, SQL. Во время проведения собеседований я был не то чтобы расстроен, а скорее обескуражен. Вопросы, на которые не могли ответить кандидаты, а именно разработчики с тремя и более годами опыта, были тривиальными. Они практически не касались специфики фреймворков или сложных алгоритмов, это просто скрининговые вопросы на знание языка и программирования в целом.

Не задачи, подчеркну, именно вопросы. От соискателей никто не требовал написать на доске программу для парсинга обратной польской нотации. Более того, не требовалось даже давать какие-то академические определения — просто как-то объяснить что такое Х и для чего его можно применять.

Особо меня впечатлили навыки JS и я бы хотел предоставить вашему вниманию список вопросов, которые вызывали затруднение у опытных разработчиков.
Читать дальше →

Интересная форма

Время на прочтение2 мин
Охват и читатели8K
Хабр, привет. Эта статья не претендует на большую серьезность, я просто хочу поделиться новой формой, которую я открыл. Это такой круг, цвет точек которого равен сумме квадратов координат заданной точки. Другими словами pixel_color=(pixel_x^2+pixel_y^2).toString(16).
Читать дальше →

Задай вопрос Дэну Абрамову: программа HolyJS в двух вариантах

Время на прочтение13 мин
Охват и читатели2.1K


Есть два способа знакомиться с программой конференции. Если открыть официальные описания докладов, будет информативно: узнаешь, о чём каждый из них. А если дёрнуть за рукав людей из программного комитета, получится неформальное обсуждение, где и общие тренды выделят, и посмеются в процессе.


До HolyJS осталось меньше месяца, её программа сформирована, и мы решили рассказать вам о ней обоими способами сразу. Для тех, кому важна информативность, под катом есть официальные описания всех докладов. А для тех, кому хочется неформальнее и аналитичнее, добавили также видеозапись нашего youtube-шоу «Тяжёлое утро с HolyJS»: там как раз участники ПК разбираются в более свободной форме (вплоть до закадрового смеха).


Воркшопы и фреймворки, Дэн Абрамов и Виталий Фридман — всё это ниже:

Заметка о перебираемых объектах

Время на прочтение5 мин
Охват и читатели9.4K


Доброго времени суток, друзья!

Данная заметка не имеет особой практической ценности. С другой стороны, в ней исследуется некоторые «пограничные» возможности JavaScript, которые могут показаться вам интересными.

Руководство по стилю JavaScript от Google советует отдавать предпочтение циклу for-of там, где это возможно.

Руководство по стилю JavaScript от Airbnb не рекомендует использовать итераторы. Вместо циклов for-in и for-of следует использовать функции высшего порядка, такие как map(), every(), filter(), find(), findIndex(), reduce(), some() для итерации по массивам и Object.keys(), Object.values(), Object.entries() для итерации по массивам из объектов. Об этом позже.
Читать дальше →

Как мы создали вкладку WebAuthn в Chrome DevTools

Время на прочтение8 мин
Охват и читатели2.8K
Сегодня, в преддверии старта нового потока курса по JavaScript, делимся с вами полезным переводом статьи о том, как разрабатывалась вкладка WebAuthn в Chrome DevTools, какие решения принимались и почему, с какой проблемой столкнулись разработчики.

image

Приятного чтения!

Quasar — швейцарский нож для Vue

Время на прочтение4 мин
Охват и читатели39K


Некоторое время назад (года два с половиной) чувак по имени Razvan Stoenescu собрал команду Vue-разрабов и начал пилить с ними свой фреймворк. Свечку не держал, но я твёрдо уверен что в первоначальном документе было что-то типа «Хотим свой фреймворк, чтобы в нём было вообще всё. Включая блэкджек и куртизанок». Довольно странно, что во многих материалах за прошедший год упоминается Quasar, но статья про него вышла всего одна и была приурочена к релизу 1.0, да ещё и оказалась переводом. Недавно я наконец распробовал этот чудесный фреймворк и с удовольствием поделюсь своими впечатлениями о нём.

Как стать фронтенд-разработчиком? Пошаговый гид в мир фронтенда

Время на прочтение14 мин
Охват и читатели297K


Приветствую всех! Меня зовут Пучнина Анастасия, я ведущий разработчик в компании ДомКлик, занимаюсь фронтендом Витрины объявлений. Сегодня я хотела бы поделиться с вами своим мнением на тему того, что важно знать фронтенд-разработчику. Эта статья будет полезна тем, кто только начинает свой путь в разработке, или имеет опыт программирования в другой области и решил перейти на сторону фронтенда.

Содержание:

  1. Кто такой фронтендер и чем он занимается?
  2. С чего начать и что читать? Чек-лист обучения
  3. Какие трудности могут быть? Ошибки в начале пути
  4. Подготовка к собеседованию на Junior-разработчика

Читать дальше →

Организация типовых модулей во Vuex

Время на прочтение11 мин
Охват и читатели4.5K

Как мы организовали Vuex-сторы и победили копипасту


Vuex — это официальная библиотека для управления состоянием приложений, разработанная специально для фреймворка Vue.js.


Vuex реализует паттерн управления состоянием, который служит централизованным хранилищем данных для всех компонентов приложения.


По мере роста приложения такое хранилище разрастается и данные приложения оказываются помещены в один большой объект.


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


Работая над проектом CloudBlue Connect и создавая очередной модуль, мы поймали себя на мысли, что пишем один и тот же шаблонный код снова и снова, меняя лишь эндпоинт:


  1. Репозиторий, в которой содержится логика взаимодействия с бекендом;
  2. Модуль для Vuex, который работает с репозиторием;
  3. Юнит-тесты для репозиториев и модулей.

Кроме того, мы отображаем данные в одном списке или табличном представлении с одинаковыми механизмами сортировки и фильтрации. И мы используем практически одинаковую логику извлечения данных, но с разными эндпоинтами.


В нашем проекте мы любим вкладываться в написание переиспользуемого кода. Помимо того, что это в перспективе снижает время на разработку, это уменьшает количество возможных багов в коде.


Для этого мы создали фабрику типовых модулей Vuex, сократившую практически до нуля написание нового кода для взаимодействия с бекендом и хранилищем (стором).

Читать дальше →

Дайджест свежих материалов из мира фронтенда за последнюю неделю №439 (26 — 31 октября 2020)

Время на прочтение3 мин
Охват и читатели8.9K
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.

Читать дальше →

Ближайшие события

Решение проблемы обеспечения доступности модального окна для людей с ограниченными возможностями

Время на прочтение6 мин
Охват и читатели4.3K
Всем привет!

В этой статье я бы хотел рассказать как реализовать доступное модальное окно, без использования атрибута «aria-modal».
Читать дальше →

JAM-стэк — нищета на стероидах

Время на прочтение4 мин
Охват и читатели12K
Создавая сайты для малого бизнеса я сталкиваюсь с двумя крайностями. Но только я, как программист. Пользователи не сталкиваются, ведь нельзя столкнуться с тем чего для тебя не существует. Первая крайность — это когда клиент покупает за 50$ в месяц очередной хостинг для Wordpress. Человек не знает, что для Wordpress не нужен специальный хостинг, что такой специальный хостинг как правило хуже чем обычный хостинг и содержит кучу ограничений и стоит дороже. Вторая крайность — это когда используется JAM-стэк ради экономии. Но это экономия в плохом смысле этого слова, когда вы экономите на спичках, используя генератор для питания паяльника, от которого вы прикуриваете.
Читать дальше →

jsqry — лучше, чем jq

Время на прочтение8 мин
Охват и читатели10K

В своей прошлой статье на Хабре я писал про библиотеку Jsqry, которая предоставляет простой и удобный язык запросов (DSL) к объектам JSON. С тех пор прошло много времени и библиотека тоже получила свое развитие. Отдельный повод для гордости — библиотека имеет 98% покрытие кода тестами. Однако в этой статье речь не совсем о ней.


Думаю, многие из вас знакомы с инструментом jq, который является практически стандартом де-факто для работы с JSON в командной строке и скриптах. Я тоже являлся её активным пользователем. Но меня все время беспокоила неоправданная сложность и неинтуитивность синтаксиса запросов этой утилиты. И не меня одного, вот лишь несколько цитат с hacker news:


I have been using jq for years and still can't get it to work quite how I would expect it to.

I have the same issue with jq. I need to use my google fu to figure out how to do anything more than a simple select.

I don't know what the term would be, mental model, but I just can't get jq to click. Mostly because i only need it every once in a while. It's frustrating for me because it seems quite powerful.

I know I might be a dissenting opinion here, but I can never wrap my head around jq. I can manage jq ., jq .foo and jq -r, but beyond that, the DSL is just opaque to me.

Let's just say it: jq is an amazing tool, but the DSL is just bad.

Yeah, I find jq similar to writing regexes: I always have to look up the syntax, only get it working after some confusion why my patterns aren't matching, then forget it all in a few days so have to relearn it again later.

Одним словом, вы уже наверное догадались. Пришла идея, а почему бы не обратить мою JS библиотеку в исполняемый файл для командной строки.

Читать дальше →

Javascript: исходный код и его отображение при отладке

Время на прочтение7 мин
Охват и читатели5.8K

Программисты делятся на две категории: те, которые используют отладчик при разработке, и те, которые обходятся без него. В этом посте я попытался обобщить, какие типы сущностей можно выявить в исходном коде JS-программы, и как эти типы выглядят под отладчиком. JS-программисты из первой категории могут дополнить, если я упустил какой-либо тип сущностей, а JS-программисты из второй категории могут посмотреть на то, чего, возможно, никогда не видели.

Читать далее

Примеры использования наблюдателей в JavaScript

Время на прочтение8 мин
Охват и читатели31K


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

В JavaScript существует три основных вида наблюдателей:

  1. ResizeObserver
  2. IntersectionObserver
  3. MutationObserver

В данной статье я предлагаю сосредоточиться на практической реализации каждого наблюдателя.

Создание микросервисной архитектуры с использованием single-spa (миграция существующего проекта)

Время на прочтение14 мин
Охват и читатели23K
image

Это первая статья по в данной теме, всего их планируется 3:

  1. * Создание root application из вашего существующего проекта, добавление в него 3 микро-приложения (vue, react, angular)
  2. Общение между микро-приложениями
  3. Работа с git (deploy, обновления)

Оглавление


  1. Общая часть
  2. Зачем это нужно
  3. Создание root контейнера (определение см. ниже) из вашего монолита
  4. Создаем микро-приложение VUE (vue-app)
  5.  Создаем микро-приложение REACT (react-app)
  6.  Создаем микро-приложение ANGULAR (angular-app)

1. Общая часть


Задача этой статьи: добавить возможность использовать существующий монолитный проект как root контейнер для микросервисной архитектуры.
Читать дальше →

Визуализация изменения климата при помощи интерактивного генеративного искусства

Время на прочтение7 мин
Охват и читатели2.5K

Все знакомы с сайтами прогноза погоды, которые используют иконки климатических явлений, просто и удобно передающие нынешнюю или будущую погоду. Однако иконки не могут передать динамические свойства погоды, вроде ветра.

И поэтому мы подумали о создании «живого окна», которое показывает погоду и её изменение. Мы решили создать веб-приложение, которое будет показывать нынешние погодные условия, используя природный ландшафт, созданный путём вычислений, но в то же время эстетично. Другими словами, при помощи генеративного искусства.

Читать далее