Запустите npx co-commit чтобы начать. — Установка не требуется.
? Справочная информация
GitHub позволяет вам соавтор коммитировать, добавив соавтором: name к сообщению о фиксации.
? Дополнительно (необязательно)
Чтобы ускорить рабочий процесс, вы можете предварительно установить совместное использование с помощью npm i -g co-commit .
Вы также можете использовать git flags с co-commit: например, git commit --all становится npx co-commit --all . Кроме того, вы можете пропустить подсказки с использованием флагов: например: -m «ваше сообщение о совершении» или -co «mariiapunda, juliettepretot» .
В 22:52 по воскресеньям UTC несколько сервисов на GitHub.com пострадали от сетевого раздела и последующего сбоя базы данных, в результате чего на нашем веб-сайте была представлена несовместимая информация. Из множества предосторожности мы предприняли шаги для обеспечения целостности ваших данных, включая приостановку событий в сети и других внутренних систем обработки. Мы знаем, насколько важны наши…
Omi: веб-инфраструктура следующего поколения в JavaScript 4kb
Объединить JSX, веб-компоненты, прокси, магазин, обновление пути вместе
Почему Оми?
Крошечный размер. ( 4kb gzipped)
Поддерживает TypeScript.
Реактивная привязка данных
На основе Shadow DOM
Легко отлаживается через расширение Omi DevTools [Install from Chrome WebStore]
Соблюдение тенденции браузера и дизайна API.
Объединить JSX и веб-компоненты в одну структуру.
Веб-компоненты также могут быть ориентированы на данные, UI = fn (данные) .
JSX — лучший опыт разработки (интеллектуальное завершение кода и подсказка). Выражение пользовательского интерфейса с наименьшим грамматическим шумом.
Оригинальная система Path Updating . Автоматическое автоматическое обновление потребление низкой мощности высокая степень свободы, отличная производительность, легкая интеграция requestIdleCallback
Попробуйте this.update метод при использовании системы хранения ! Он будет автоматически обновлять пользовательский интерфейс при изменении данных.
Посмотрите на Facebook React vs Web Components, Omi сочетает в себе свои преимущества и дает разработчикам свободу выбора 19459017 .
Shadow DOM объединяется с Virtual DOM Omi использует как виртуальную DOM, так и реальную DOM DOW, чтобы сделать просмотр обновлений более точным и быстрым.
В системе Store 99,9% проектов не требуют путешествий во времени, и не только Redux может путешествовать, пожалуйста, не придумывайте Redux, система магазинов Omi может удовлетворить все проекты
Лучшее решение с CSS — это Shadow DOM сообщество, разбивающее фреймворки и библиотеки для Scoped CSS (с использованием стилей записи JS или JSON, таких как Radium, jsxstyle, стиль, привязка к webpack с использованием сгенерированного уникального className filename-classname-hash такого как CSS-модули, Vue), являются хакерскими технологиями; и Shadow DOM Style — идеальное решение .
Сравнить TodoApp от Omi и React, Omi и React, рендеринг структуры DOM:
Оми
React
Добавить Оми в одну минуту
Эта страница демонстрирует использование Omi без инструмента для сборки .
< HTML >
< глава >
meta charset = " UTF-8 " />
< название > Добавить Оми в одну минуту </ название >
</ глава >
< тело >
src = " https://unpkg.com/omi " > </ ] сценарий >
< сценарий >
const { WeElement h render определяют } = Оми класс LikeButton распространяется WeElement { установить () { = {понравилось : false } } () {если ( это . данные . понравилось ) { return ' Вам понравилось. ' } возвращение h ( { onClick : () => { это . данные . понравилось = true это . обновление () } }, ') } } определяют ( » аналогичная кнопка 'LikeButton) h ( » аналогичная кнопка ), ' тела ) </ сценарий >
</ тела >
</ HTML >
Вы также можете использовать тег как кнопка непосредственно в HTML:
< тело >
<как-кнопки > </ как-кнопки >
</ тела >
Начало работы
Установите
$ npm i omi-cli-g # установить cli
$ omi init your_project_name # init project, вы также можете выполнить команду 'omi init' в пустой папке
$ cd your_project_name # пожалуйста, проигнорируйте эту команду, если вы выполнили 'omi init' в пустой папке
$ npm start # разработать
$ npm run build # выпуск
Описание в каталоге:
├─ config
├─ общественность
├─ скрипты
├─ src
│ ├─ активы
│ ├─ elements // Хранить все пользовательские элементы
│ ├─ store // Хранить все это хранилище страниц
│ ├─ admin.js // Запись js компилятора, будет создана для admin.html
│ └─ index.js // Запись js компилятора, будет создана для index.html
Автосозданные строительные леса CLI основаны на одностраничном приложении create-response-app, которое будет преобразовано в многостраничное, с проблемами конфигурации, чтобы увидеть руководство пользователя для создания-реагирования-приложения
Hello Element
Определите пользовательский элемент, расширив WeElement базовый класс и назовите его с помощью @tag decorator:
Если вы не хотите писать CSS в JS, вы можете использовать to-string-loader,
Например, следующая конфигурация:
{
: / [ | / ] _ [ ] S ] * . CSS $ / ,
использование : [
в строке-загрузчик ,
CSS-погрузчик
]
}
Если ваш файл CSS начинается с « _ », CSS будет использовать для-string-loader ., Например:
import { tag WeElement render } из ' оми // typeof cssStr является строкой импорт cssStr из ' ./_ index.css '
@ Тег ( мое-приложение )
класс MyApp распространяется WeElement {
css () {
возвращение cssStr
}
... ... ...
TodoApp
Вот относительно полный пример TodoApp:
import { tag WeElement render } из оми
@ Тег ( TODO-лист )
класс TodoList extends WeElement {
render ( реквизит ) {
возвращение (
< уль >
{19459049] реквизит . предметы . карта ( пункт => < li key = { Пункт . id } > { Пункт . текст } < / Li >
))}
< / уль >
);
}
}
@ Тег ( TODO-приложение )
класс TodoApp extends WeElement {
static get данные () {
{пункты : []текст : '}
}
render () {
возвращение (
< DIV > < Н3 > TODO < / Н3 > < todo - перечислил элементы = {. данные . пункты } / > < форма onSubmit = { этот . рукояткаSubmit } > < вход
ID = " новый список задачи "
OnChange = { это . handleChange }
значение = { это . Данные . текст }
/ > < Кнопка > . длина + 1 }
< / Кнопка > < / форма > < / DIV >
);
}
handleChange = ( e ) => {
текст = e . Цель . значение
}
handleSubmit = ( e ) => {
е preventDefault ().
если это . данные . текст . обрезка (). длина ) {
возвращение ;
}
это . Данные . элементов . толчок ({
текст : это . данные . текст ,
id : Дата . сейчас ()
})
данные . текст = ;
это . Обновление ()
}
}
< todo - приложение / > ' тело )
Магазин
Попробуйте this.update метод при использовании системы магазинов! При изменении данных он будет автоматически обновлять пользовательский интерфейс. Мощная архитектура Store отличается высокой производительностью, поскольку все данные монтируются в хранилище, за исключением компонентов, которые полагаются на опоры для определения состояния компонента.
экспорт по умолчанию {
данные : {
пункты : [],
текст : '' ,
firstName : ' dnt ' ,
lastName : ' zhang ' ,
fullName : функция () {
возвращение это . firstName + это . lastName
},
: abc ' // Изменить, он обновит все элементы без изменения компонентов и страницы, объявляющих зависимость данных.
ccc : : : 1 } // Изменить это будет обновлять все элементы без изменения компонентов и объявления страниц. зависимость.
},
globalPropTest '' ccc.ddd '],
добавить : function () {
если это . данные . текст . обрезка (). длина ) {
возвращение ;
}
это . Данные . элементов . толчок ({
текст : это . данные . текст ,
id : Дата . сейчас ()
})
данные . текст =
}
// Значение по умолчанию - false, значение true будет обновлять все экземпляры при изменении данных. // updateAll: true
}
Пользовательский элемент требует объявления зависимых данных, так что Omi сохраняет вычислительный путь зависимости на основе данных, объявленных на пользовательском компоненте, и обновляет их локально по мере необходимости. Например:
класс TodoApp распространяется WeElement {
// Если вы используете хранилище, данные используются только для объявления зависимостей. static get данные () {
{пункты : []текст : '}
}
// ... handleChange = ( e ) => {
текст = e . цель . значение
}
handleSubmit = ( e ) => {
е . preventDefault ()
это . магазин . добавить ()
}
}
Логика данных инкапсулирована в методе определения хранилища (например, store.add ).
Взгляды — это только ответственные за передачу данных для хранения таких как вызов store.add или установка store.data.text сверху.
Вам нужно ввести магазин из корневого узла во время рендеринга, чтобы использовать этот магазин:
< todo - приложение / > тело 'магазин)
→ Сохранить исходный код
Резюме:
store.data используется для отображения всех атрибутов и значений по умолчанию (кроме компонентов представления, определенных реквизитами).
Данные компонента и страницы используются для перечисления атрибутов зависимого store.data (Omi будет записывать путь) и обновления по запросу.
Если на странице несколько простых компонентов, updateAll может быть установлено в true а компонентам и страницам не нужно декларировать данные, и они не обновляются по запросу
Путь, объявленный в globalData обновляет все страницы и компоненты, изменяя значение соответствующего пути, который может использоваться для отображения всех страниц или большинства путей общедоступных свойств
Жизненный цикл
Метод жизненного цикла
Когда его назовут
установите
перед тем, как компонент подключится к DOM
установлен
после того, как компонент подключается к DOM
удалить
до снятия с DOM
BeforeUpdate
до render ()
AfterUpdate
после render ()
Компонентная экосистема
Я считаю, что вы можете легко преобразовать элементы веб-компонентов в элементы omi.
Отладка
Используя Omi DevTools, вы можете просто отлаживать и управлять своим пользовательским интерфейсом без какой-либо конфигурации . Просто установите и отлаживайте.
Поскольку Omi использует веб-компоненты и Shadow-DOM, ему не нужно иметь другую панель элементов, такую как React или Vue. Он просто добавляет панель к боковой панели элементов и она настолько же эффективна, как и React и Vue DevTools.
Поддержка браузеров
Omi 4.0+ работает в последних двух версиях всех основных браузеров: Safari 10+, IE 11+ и вечнозеленых Chrome, Firefox и Edge.
Ссылки
Вклад
Вилка (https://github.com/Tencent/omi/fork)
Создайте свою ветку ( git checkout -b мое-срочное исправление )
Зафиксируйте свои изменения ( git commit -am «Исправлено что-то» )
Нажмите на ветку ( git push origin my-emergency-hotfix )
Добро пожаловать в dev.to codebase. Мы так рады, что у вас есть. С вашей помощью мы можем построить DEV, чтобы быть более стабильным и лучше обслуживать наше сообщество.
Что такое dev.to ?
dev.to (или просто DEV) — это платформа, на которой разработчики программного обеспечения пишут статьи, участвуют в обсуждениях и создают свои профессиональные профили. Мы ценим поддерживающий и конструктивный диалог в поисках отличного кода и карьерного роста для всех членов. Экосистема охватывает от начинающих до продвинутых разработчиков, и все желающие могут найти свое место в нашем сообществе. ❤️
Содержание
Вклад
Мы ожидаем, что вкладчики будут соблюдать наш базовый кодекс поведения. Все разговоры и обсуждения по GitHub (вопросы, запросы на тяну) и через dev.to должны быть уважительными и безжалостными.
Где внести вклад
Если у вас есть сомнения, обратитесь к основному члену команды! Вы можете упомянуть нас в каких-либо проблемах или спросить о потоке автора DEV. Любая проблема с хорошей темой первого выпуска как правило, является хорошим местом для начала.
Рефакторинг код, например. улучшение кода без изменения поведения — это область, которая, вероятно, может быть сделана на основе интуиции и может не требовать объединения большого количества сообщений.
Исправление ошибок также может не требовать много общения, но тем лучше. Удостоверьтесь в исправлениях ошибок с достаточными испытаниями. Ошибки — это магниты для других ошибок. Напиши тесты рядом с ошибками!
Особенности здания — это область, которая потребует наибольшего количества сообщений и / или переговоров. Каждая функция субъективна и открыта для обсуждения. Дорожная карта продукта должна быть хорошим руководством для последующего изучения. Как всегда, когда вы сомневаетесь, спросите!
Как внести свой вклад
Вилка проекта & клонировать локально. Следуйте первоначальной настройке здесь.
Создайте ветвь, назвав ее либо особенностью, либо ошибкой: git checkout -b feature / that-new-feature или ошибка / исправление-это-ошибка
Код и внести изменения. Бонусные баллы, если вы пишете сообщение о хорошей фиксации: git commit -m 'Добавить функцию'
Нажмите на ветку: git push изначальный особенность / эта новая функция
Создайте запрос на растяжение для вашего филиала ?
Руководящий документ
Создать вопрос
Никто не идеален. Что-то не работает? или может быть сделано лучше? Сообщите нам, создав проблему.
PS: четкий и подробный вопрос получает много любви, все, что вам нужно сделать, это следовать шаблону вопроса!
Чистый код с испытаниями
Некоторые существующие коды могут быть плохо написаны или непроверены, поэтому мы должны провести более тщательный анализ. Мы тестируем rspec, сообщите нам, если у вас есть какие-либо вопросы по этому поводу!
Создать запрос на растяжение
Постарайтесь, чтобы запросы на растяжение были небольшими; запрос на тягу должен стараться изо всех сил решить только одну проблему.
Убедитесь, что все тесты проходят и добавляют дополнительные тесты для кода, который вы отправляете.
Документируйте свои аргументы в пользу изменений. Объясните, почему вы написали код так, как вы это делали; код должен объяснить, что он делает.
Если существует проблема, связанная с запросом на pull, ссылайтесь на нее, добавив что-то вроде Ссылки / Закрытия / Исправления / Разрешения № 305 где 305 — номер проблемы. Подробнее здесь
Если вы следуете шаблону запроса на вытягивание, вы не ошибетесь.
Обратите внимание: все коммиты в запросе на тягу будут раздавлены при объединении, но когда ваш PR будет одобрен и пройдет наш CI, он будет жить на производстве!
Как получить помощь
Независимо от того, застряли ли вы в реализации функций, при первой установке, или просто хотите сказать нам, что что-то может быть сделано лучше, посмотрите наш поток OSS или создайте проблему. Вы также можете указать любого ключевого члена команды в проблеме, и мы ответим как можно скорее.
? Справка / обсуждение OSS ?
Суть
Мы все люди пытаемся работать вместе, чтобы улучшить сообщество. Всегда будьте добры и цените необходимость компромиссов. ❤️
Codebase
Стек
Мы работаем на бэкэнде Rails с главным ванильным JavaScript на передней панели, а некоторые Preact посыпаются. Одна из наших целей — переместить в основном Preact для нашего интерфейса.
Дополнительные технологии и услуги перечислены в наших документах.
Инженерные стандарты
Руководство по стилю
Этот проект следует за Руководством по стилю Ruby Style, которое использует Rubocop вместе с Rubocop-Rspec в качестве анализатора кода. Если у вас есть Rubocop, установленный с вашим текстовым редактором, вы должны быть в рабочем состоянии.
Для Javascript мы следуем Руководству по стилю JS Airbnb, используя ESLint и красивее. Если у вас установлен ESLint с вашим текстовым редактором, вы должны быть в рабочем состоянии.
Husky hooks
Когда совершаются коммиты, крюк preitmit git проходит через хриплый и строчный. ESLint, красивее и Rubocop будут работать на вашем коде до его совершения. Если есть ошибки перебора, которые не могут быть автоматически исправлены, коммит не произойдет. Вам нужно будет исправить проблему вручную, а затем попытаться зафиксировать ее снова.
Примечание: если вы уже установили пакет хаски хотя бы один раз (используется для сценария precommit npm), вам нужно будет запустить пряжу --force или npm install --no- кэш . По какой-то причине пост-установочный скрипт хаски не запускается, когда пакет вытаскивается из нити или кэш-памяти npm. Это не хаки, а скорее проблема с кешированным пакетом.
Начало работы
Предпосылки
Эти предпосылки предполагают, что вы используете macOS. Если вы используете другую ОС, вы должны установить эти предварительные требования, специфичные для вашей ОС.
Ruby: мы рекомендуем использовать rbenv для установки версии Ruby, указанной на значке.
Bundler: комплект установки gem
Форман: мастер установки драгоценных камней
Пряжа: используйте пряжу для заваривания для установки пряжи. Он также установит узел, если у вас его еще нет.
PostgreSQL: самый простой способ начать с этого — использовать Postgres.app.
В основном мы используем Rails-приложение, в котором используется несколько Webpack. В большинстве случаев просто работает сервер bin / rails . Если вы работаете с Webpack, вам необходимо запустить следующее:
Запуск bin / startup чтобы запустить сервер, Webpack и наш бегун delayed_job . bin / startup запускает стартовый мастер -f Procfile.dev под капотом.
alias start = "bin / startup" делает это еще быстрее. ?
Если вы используете pry для отладки в Rails, обратите внимание, что вместе с мастером и pry работает, но это не как чистый, как bin / rails server .
Ниже приведены некоторые синглтонные команды, которые могут вам понадобиться, обычно на отдельной вкладке / вкладке вашей оболочки.
Запуск сервера задания (при использовании bin / rails server ) — это в основном для уведомлений и писем: bin / rails jobs: work
Устранение вакансий (в случае, если вы не хотите ждать отставания в работе): bin / rails jobs: clear
Текущие исправления: необходимо разработать потенциальные проблемы с внешними службами.
Предлагаемый рабочий процесс
Мы используем Spring и уже включены в проект.
Используйте предустановленные булавки для автоматического запуска Spring, то есть bin / rails server bin / rspec spec / models / bin / rake db: мигрировать .
Если Spring не набирает новые изменения, используйте пружинный стоп . Например, Spring всегда следует перезапускать, если есть изменение в ключе среды.
Проверить состояние пружины, когда с пружинным статусом .
Предостережение: bin / rspec не имеет весны, потому что это влияет на результат Симпсова. Вместо этого используйте bin / spring rspec .
Дополнительные документы
Ознакомьтесь с нашей страницей посвященных документов, чтобы получить дополнительную техническую документацию.
Карта продуктов
Наша новая дорожная карта продукта находится здесь. Многие заметки должны быть преобразованы в проблемы, но это должно обеспечить обзор функций, над которыми мы планируем работать, а также возможности, которые мы рассматриваем.
Члены основной команды будут перемещать вопросы вдоль проектной панели по мере их продвижения.
Идеи и запросы: возможности для обсуждения.
Потребности Владельцы: функции, нуждающиеся в владельце.
Committed: функции, которые мы обязуемся строить — бесплатно для авторов, чтобы работать, но, пожалуйста, свяжитесь с владельцем заранее.
Выполняется (на ранней стадии): началась работа над функцией.
Выполняется (на поздней стадии): функция близится к завершению.
Основная команда
Лицензия
DEV лицензируется в соответствии с GNU Affero General Public License 3 (AGPL-3). Пожалуйста, просмотрите файл LICENSE в нашем репозитории для полного текста.
Как и многие проекты с открытым исходным кодом, мы требуем, чтобы участники предоставили нам Лицензионное соглашение для участников (CLA). Предоставляя код проекту DEV, вы предоставляете нам право использовать этот код в соответствии с условиями CLA.
Наша версия CLA была адаптирована из лицензионного соглашения Microsoft Contributor, которое они щедро предоставили общедоступному домену в Creative Commons CC0 1.0 Universal.
Любые вопросы, пожалуйста, обратитесь к нашей лицензии FAQ doc или по электронной почте yo@dev.to
Тип : а затем первые несколько букв для автозаполнения emojis. ? Установка Скачать последнюю версию, 0.2. Разархивируйте, если необходимо, и дважды щелкните Emoji Autocomplete.sketchplugin . Использование При редактировании текстовых слоев, переопределений или имен слоев введите : а затем несколько букв, чтобы отобразить список emojis для автозаполнения. С помощью клавиш со стрелками или мышью выберите его.…
SCSS стартер для создания гармонических цветовых палитр на основе цветовых колесных схем. Как Открыть scss / colorcalc.scss . Отредактируйте значения для оттенков, насыщенности, лёгкости и альфы в $ h $ s $ l $ a . Сохранить и скомпилировать. Цветовые схемы комплементарной Дополнительные схемы создаются путем комбинирования цветов с противоположных сторон цветового круга. Цвета 180…