Начало работы
Есть два основных способа использовать LitElement:
Создание повторно используемых компонентов для других разработчиков. Отдельные компоненты или наборы связанных компонентов обычно публикуются в npm. Чтобы создать проект с повторно используемыми компонентами, см. Создание проекта компонентов LitElement.
Создание компонентов для конкретного приложения. Исходный код этих компонентов может быть частью проекта приложения. Чтобы добавить компоненты LitElement в приложение, см. Добавление LitElement в существующий проект.
Создание проекта компонентов LitElement
Начните работу над повторно используемым компонентом LitElement, который можно опубликовать для других разработчиков.
Чтобы начать локальную работу над компонентом, можно использовать один из этих стартовых проектов:
В обоих проектах определён компонент LitElement. Кроме того, в них добавлен набор дополнительных инструментов для разработки, проверки стиля кода и тестирования компонента:
- Node.js и npm для управления зависимостями. Требуется Node.js версии 10 или выше.
- Локальный сервер разработки ES dev server.
- Проверка кода с помощью ESLint и lit-analyzer.
- Тестирование с помощью Karma.
- Статический сайт документации, созданный с помощью web component analyzer и eleventy.
Ни один из этих инструментов не является обязательным для работы с LitElement. Это один из возможных наборов инструментов, обеспечивающих комфортную работу разработчика.
Другой вариант для начала работы. В качестве альтернативы официальным стартовым проектам LitElement проект open-wc предлагает генератор проектов веб-компонентов с использованием LitElement. Скрипт open-wc задаёт ряд вопросов и создаёт для вас структуру проекта.
Скачивание стартового проекта
Самый быстрый способ опробовать проект локально — скачать один из стартовых проектов в виде ZIP-архива.
-
Скачайте стартовый проект с GitHub в виде ZIP-архива:
Распакуйте ZIP-архив.
-
Установите зависимости.
cd <project folder> npm i
Хотите разместить проект на GitHub? Если вы знакомы с git, возможно, вам будет удобнее создать репозиторий GitHub для стартового проекта, а не просто скачивать ZIP-архив. С помощью функции создания репозитория на основе шаблона GitHub можно создать собственный репозиторий на основе стартового проекта на JavaScript или стартового проекта на TypeScript. Затем клонируйте новый репозиторий и установите зависимости, как описано выше.
Попробуйте проект
-
Если вы используете версию стартового проекта на TypeScript, соберите JavaScript-версию проекта:
npm run build
Чтобы отслеживать изменения файлов и пересобирать проект при их изменении, выполните следующую команду в отдельной оболочке:
npm run build:watch
Если вы используете версию стартового проекта на JavaScript, этап сборки не требуется.
-
Запустите сервер разработки:
npm run serve
-
Откройте демонстрационную страницу проекта в новой вкладке браузера. Например:
Сервер может использовать другой номер порта. Правильный номер порта указан в URL в выводе терминала.
Изменение компонента
Измените определение компонента. Файл, который нужно редактировать, зависит от используемого языка:
- JavaScript. Отредактируйте файл
my-element.jsв корневом каталоге проекта. - TypeScript. Отредактируйте файл
my-element.tsв каталогеsrc.
Обратите внимание на следующие особенности кода:
-
В коде определяется класс компонента (
MyElement) и регистрируется в браузере как пользовательский элемент с именем<my-element>.JavaScript
export class MyElement extends LitElement { ... } customElements.define('my-element', MyElement);TypeScript
@customElement('my-element') export class MyElement extends LitElement { ... } -
Метод
renderкомпонента определяет шаблон, который будет отрисован как часть компонента. В данном случае он содержит текст, привязки данных и кнопку. Подробнее см. в разделе Шаблоны.export class MyElement extends LitElement { ... render() { return html` <h1>Hello, ${this.name}!</h1> <button @click=${this._onClick}> Click Count: ${this.count} </button> <slot></slot> `; } } -
В компоненте определены некоторые свойства. Компонент реагирует на изменения этих свойств (например, при необходимости повторно отрисовывая шаблон). Подробнее см. в разделе Свойства.
JavaScript
export class MyElement extends LitElement { static get properties() { return { name: {type: String} } } constructor() { super(); this.name = 'World'; } ... }TypeScript
export class MyElement extends LitElement { ... @property({type: String}) name = 'World'; ... }
Переименование компонента
Вероятно, вы захотите заменить имя компонента «my-element» на более подходящее. Проще всего сделать это с помощью IDE или другого текстового редактора, который позволяет искать и заменять текст во всём проекте.
-
Если вы используете версию на TypeScript, удалите сгенерированные файлы:
npm run clean
Найдите и замените «my-element» на новое имя компонента во всех файлах проекта (кроме папки
node_modules).Найдите и замените «MyElement» на новое имя класса во всех файлах проекта (кроме папки
node_modules).-
Переименуйте исходные файлы и файлы тестов в соответствии с новым именем компонента:
JavaScript:
src/my-element.jssrc/test/my-element_test.js
TypeScript:
src/my-element.tssrc/test/my-element_test.ts
-
Если вы используете версию на TypeScript, пересоберите проект:
npm run build
-
Проверьте, что компонент продолжает работать:
npm run serve
Следующие шаги
Готовы добавить новые возможности в компонент? Перейдите к разделу Шаблоны, чтобы узнать, как писать шаблоны для компонентов LitElement.
Подробнее о запуске тестов и использовании других инструментов см. в файле README стартового проекта:
Добавление LitElement в существующий проект
Для проектов LitElement не требуется много инструментов. Скорее всего, если у вас уже есть набор инструментов, вы сможете интегрировать LitElement с минимальными изменениями. В этих инструкциях предполагается, что вы используете npm для управления пакетами и такой инструмент, как Rollup или webpack, для сборки кода для production.
Подробнее о сборке проектов, включая примеры конфигураций Rollup, см. в разделе Сборка для production.
Если вы начинаете с нуля, проект open-wc предлагает генератор проектов, который поможет создать структуру приложения с использованием LitElement.
Предварительные требования
Ваша система сборки должна поддерживать использование спецификаторов bare-модулей:
import {LitElement, html} from 'lit-element';
Webpack автоматически обрабатывает спецификаторы bare-модулей; для Rollup понадобится плагин (@rollup/plugin-node-resolve).
Установка LitElement
LitElement доступен в npm:
npm i lit-element
Добавление элемента
Выберите место для хранения компонентов LitElement и создайте тестовый элемент:
components/my-element.js
import {LitElement, html} from 'lit-element';
class MyElement extends LitElement {
render() {
return html`
<div>Hello from MyElement!</div>
`;
}
}
customElements.define('my-element', MyElement);
Импортируйте компонент:
Index.js
import './components/my-elements.js';
Используйте компонент:
index.html
<my-element></my-element>
Теперь вы должны иметь возможность собрать и запустить проект и увидеть сообщение «Hello from MyElement!».
Настройка системы сборки
Способ импорта компонента может немного различаться в зависимости от системы сборки и структуры проекта. Если вы пишете на TypeScript, используйте файлы TypeScript и декораторы LitElement. (Пример элемента на TypeScript можно найти в стартовом проекте на TypeScript.)
Подробнее и примеры конфигураций сборки см. в разделе Сборка для production.
Дополнительно: использование ES dev server
Если у вас уже есть сервер разработки, совместимый с системой сборки, он должен работать с LitElement. ES dev server — это альтернативный сервер разработки, предоставляющий простой рабочий процесс без сборщика. Он выполняет несколько полезных преобразований, в том числе преобразует спецификаторы bare-модулей, при необходимости транспилирует код в ES5 и добавляет полифилы для старых браузеров.
-
Установите es-dev-server
npm i -D es-dev-server
-
Добавьте команду запуска сервера разработки в
package.json:{ "scripts": { "serve": "es-dev-server --app-index index.html --node-resolve --watch --open" } } -
Запустите ES dev server:
npm run serve
Поддержка старых браузеров
Чтобы поддерживать старые браузеры, в которых не реализованы ES6 и спецификации веб-компонентов, потребуется выполнить несколько дополнительных шагов, чтобы подготовить код для запуска в таких браузерах.
Подробнее см. в разделе Сборка для production.
Следующие шаги
Готовы добавить новые возможности в проект? Перейдите к разделу Шаблоны, чтобы узнать, как писать шаблоны для компонентов LitElement.
Подробнее о создании приложений с использованием веб-компонентов см. в рекомендациях open-wc по сборке.
© Google LLC
Licensed under the Creative Commons Attribution 3.0 Unported License.
https://lit.dev/docs/v1/getting-started/