1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/WebCell-core

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
ReadMe.md

WebCell

[Веб-компоненты][1] на основе движка [JSX][2] и [TypeScript][3].

[NPM Dependency][4] [Build Status][5]

[Anti 996 license][6] [jaywcjlove/sb][7]

[Slideshow][8] [Gitter][9]

[Edit WebCell demo][10]

[NPM][11]

Использование

Демоверсия и шаблон GitHub: https://web-cell.dev/scaffold/.

Инициализация проекта

Команда:

npm init -y
npm install web-cell
npm install parcel-bundler -D

package.json:

{
    "scripts": {
        "start": "parcel source/index.html --open",
        "build": "parcel build source/index.html --public-url"
    }
}

tsconfig.json.

source/index.html:

<script
    crossorigin
    src="https://polyfill.app/api/polyfill?features=es.array.flat,es.object.from-entries"
></script>
<script src="https://cdn.jsdelivr.net/npm/@webcomponents/webcomponentsjs@2.5.0/webcomponents-bundle.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@webcomponents/webcomponentsjs@2.5.0/custom-elements-es5-adapter.js"></script>
<script src="https://cdn.jsdelivr.net/npm/element-internals-polyfill@0.1.1/dist/index.min.js"></script>

<script src="source/SubTag.tsx"></script>
<script src="source/TestTag.tsx"></script>

<sub-tag></sub-tag>
<test-tag></test-tag>

Простой компонент

source/SubTag.tsx:

import { createCell, component, mixin } from 'web-cell';

export function InlineTag({ defaultSlot }: any) {
    return <span>{defaultSlot}</span>;
}

@component({
    tagName: 'sub-tag',
    renderTarget: 'children'
})
export class SubTag extends mixin() {
    render() {
        return <InlineTag>test</InlineTag>;
    }
}

Расширенный компонент

source/TestTag.tsx:

import {
    createCell,
    component,
    mixin,
    attribute,
    watch,
    on,
    Fragment
} from 'web-cell';

import { SubTag } from './SubTag';

interface Props {
    title?: string;
}

interface State {
    status: string;
}

@component({
    tagName: 'test-tag',
    style: {
        '.title': {
            color: 'lightblue'
        },
        '.title.active': {
            color: 'lightpink'
        }
    }
})
export class TestTag extends mixin<Props, State>() {
    @attribute
    @watch
    title = 'Test';

    state = { status: '' };

    onClick = () => (this.title = 'Example');

    @on('click', ':host h1')
    onDelegate() {
        this.setState({ status: 'active' });
    }

    render({ title }: Props, { status }: State) {
        return (
            <>
                <h1 title={title} className={`title ${status}`}>
                    {title}
                    <img alt={title} onClick={this.onClick} />

                    <SubTag />
                </h1>
            </>
        );
    }
}

Базовые знания

Жизненные циклы хуков

  1. connectedCallback

  2. disconnectedCallback Scaffolds

  3. Basic.

  4. DashBoard.

  5. Static site.

Ecosystem

Мы рекомендуем использовать следующие библиотеки с WebCell:

— управление состоянием: MobX (также работает на TypeScript и Decorator);

— маршрутизатор: Cell Router;

— компоненты пользовательского интерфейса: * BootCell (основан на Bootstrap v4), * Material Cell (основан на Material Design и Bootstrap v4), * GitHub Web Widget;

— HTTP-запрос: KoAJAX (основан на Koa-подобных промежуточных программах);

— утилиты: Web utility (методы и типы);

— поток событий: Iterable Observer (предложение Observable);

— интеграция Markdown: MarkCell (реализация MDX).

Roadmap

[ ] Серверная отрисовка (https://web.dev/declarative-shadow-dom/).

Перейдите к [вкладу]!

В данном ответе не удалось перевести некоторые фрагменты текста, так как они содержат ссылки на внешние ресурсы.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Веб-стандартный компонентный движок на основе TypeScript и JSX. Развернуть Свернуть
TSX и 2 других языков
LGPL-3.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/WebCell-core.git
git@api.gitlife.ru:oschina-mirror/WebCell-core.git
oschina-mirror
WebCell-core
WebCell-core
v2