smalljs$molПоиск⌘ KДокументацияПесочницаСравнениеЭкосистемаО проектеRU
Структура проектаGetting StartedВведениеМентальная модельБыстрый стартОт TypeScript к view.treeСтруктура проектаИнструментарийEssentialsУстановкаВьюСостояние и реактивностьРоутингРендерингТестированиеДеплойРешение проблемDataЗагрузка данныхСхемы данныхГипер БазаMoreВитринаИз React, Vue и SvelteСборник рецептовAdvancedПлагиныМетаданные модуляОфлайнGhost-вьюAboutЧастые вопросыКомандаРелизыAPI$mol_button_major$mol_button_minor$mol_string$mol_number$mol_text$mol_paragraph$mol_list$mol_row$mol_link$mol_check$mol_switch$mol_select$mol_scroll$mol_page$mol_pick

Структура проекта

У $mol-проекта четыре вложенных уровня: воркспейс, который вы склонировали, пакеты внутри него, модули внутри пакетов и файлы внутри модуля. Раскладка отвечает на один практический вопрос — куда класть новый проект и кому принадлежит его история, — и почти всё, что делает сборка, следует из неё.mam/ воркспейс — склонированный MAM├── .meta.tree реестр: какой пакет из какого репозитория├── mol/ пакет — сам фреймворк, свой git-репозиторий└── my/ пакет — ваш, ваш git-репозиторий ├── .gitattributes сохраняет собранные бинарники целыми ├── my.meta.tree реестр ваших проектов └── hello/ проект — модуль и свой git-репозиторий ├── index.html точка входа (только у модулей-приложений) ├── hello.view.tree разметка └── form/ подмодуль — $my_hello_formНа этой странице у каждой строки листинга есть вопросик с причиной, по которой она здесь; разделы ниже говорят то же самое подробно.

Как завести проект

Пять шагов. Повторяется только первый, а последние три за вас может сделать скаффолдер.1. Склонируйте воркспейс, один раз. Всё, что вы напишете дальше, живёт внутри него.1git clone https://github.com/hyoo-ru/mam.git2cd mam2. Заведите свой пакет. Одна короткая папка — ваше имя, ваша компания, ваш ник — и свой git-репозиторий. Это контейнер для всех проектов, которые вы начнёте:1mkdir my2cd my3git initВыложите его туда, где держите код, публично или приватно. Заодно положите рядом .gitattributes с единственной строкой * -text; зачем — в разделе про пакеты ниже.3. Добавьте реестр. my/my.meta.tree — список проектов внутри вашего пакета. Он начинается пустым и получает по строке на проект:1pack hello git \https://github.com/you/hello.gitMAM читает его ровно так же, как корневой .meta.tree уровнем выше, поэтому коллега, склонировавший my/, получит и проекты.4. Создайте проект со своим репозиторием. Папка и есть компонент — my/hello/ это $my_hello, — а история принадлежит ему, а не вашему пакету и не $mol:1mkdir hello2cd hello3git initВ этом разделении и смысл раскладки: коммит в my/hello/ уходит в репозиторий hello, никогда не в my и не в mol.5. Пропишите его. Добавьте строку pack из шага 3 в my/my.meta.tree — и свежий чекаут вашего пакета подтянет проект по имени. Скаффолдер напишет рабочий модуль за вас в любой момент после второго шага:1npx create-view-tree-lsp my/hello

Воркспейс

MAM клонируют один раз и работают внутри него. Это не папка, куда копируются зависимости: каждый пакет лежит там своим git-чекаутом, с историей, так что вы можете читать исходники фреймворка, поставить в них debugger и открыть pull request из той же рабочей копии.Корневой .meta.tree — реестр, который это обеспечивает:1pack mol git \https://github.com/hyoo-ru/mam_mol.git2pack hyoo git \https://github.com/hyoo-ru/mam_hyoo.git3pack lib git \https://github.com/hyoo-ru/mam_lib.gitКогда сборка встречает $mol_view, а папки mol/ ещё нет, она ищет имя здесь и клонирует репозиторий. Ничего не вендорится и ничего не уплощается.

Пакеты

Папка верхнего уровня — это пакет, а пакет — это git-репозиторий. Ваш собственный пакет просто папка, которую вы назвали: пока он живёт локально, регистрация ему не нужна, а строка pack понадобится в тот день, когда вы захотите получать его по имени.Пакеты вкладываются друг в друга. Пакет может нести собственные объявления pack для папок внутри себя, и MAM читает их из meta.tree той папки, которая будет содержать пакет. Этот сайт лежит в bog/smalljs/ и сам является репозиторием, перечисленным в bog/bog.meta.tree, который, в свою очередь, находится внутри чекаута bog/ из корневого .meta.tree.

Один файл, который нужен каждому пакету

Редактировать эту страницу на GitHubБыло полезно?ДаНетНазадОт TypeScript к view.treeВперёдИнструментарий
На этой страницеКак завести проектВоркспейсПакетыОдин файл, который нужен каждому пакетуМодулиФайлы в модулеСгенерированные папки начинаются с дефисаЧто на самом деле делает meta.treeДальше
Type to search the documentation.