# wt.core assets source [![Build Status](https://travis-ci.org/joemccann/dillinger.svg?branch=master)](https://bitbucket.org/bellord13/kit/) ## is a dependency wt.core [![Build Status](https://travis-ci.org/joemccann/dillinger.svg?branch=master)](https://bitbucket.org/andreyleoua/wt.core/) Предназначен для асинхронной работы с ресурсами на веб-проектах. ## Термины и определения в контексте фреймворка `Плагин` - сущность включающая в себя модуль, js-, css-файлы, шрифты. `Модуль` - составляющая плагина, определяемая как основной файл плагина (его наличие не обязательно в плагине) `PluginManager` - класс для работы с плагинами ## Базовые принципы ✨ Инициализация > Выдержка из плагина `core` ```sh manager = new PluginManager(global, plugins = {}); manager.register('PluginManager', { alias: 'pm', type: moduleTypeList.loader, loader: function(module, exports, require, global) { // return определяет, что выкинуть во внешку return module.exports = manager; } }); manager.install('PluginManager'); ``` Создается экземпляр класса PluginManager и регистрирует сам себя. Переменная `global` выполняем роль фасада для все установленных плагинов с допустимостью использования `alias`. Это позволит использовать функционал вне ядра. В качестве глобальной переменной используется `window.kit`. Пример вызова ```sh kit.$ kit.jquery ``` ✨ Основные этапы работы с плагином: | этап | метод | | ------ | ------ | | Регистрация | registerPlugin(`pluginId`, `config`) или registerPlugins(`object`) | | Загрузка | load(`pluginId`, `callback`) | | Установка | install(`pluginId`, `callback`) | | Запрос | require(`pluginId`, `callback`) | ## Пример конфигурации ```sh kit.PluginManager.register('menu', { path: kit.config.defaultPath + '/menu', module: '/menu.js', type: 'loader', css: [ '/menu.css' ], deps: ['lib', 'align', 'utils'] } ); ``` ## Описание параметров конфига для плагина | name | value | description | | --- | --- | --- | | type | import | Значение по умолчанию. Нативный загрузчик модулей. Файл модуля содержит ключевые фразы "export" и "export default" | | | loader | Файл модуля содержит функцию `kit`.`PluginManager`.`register`(`pluginId`, function(`module`, `exports`, `require`, `global`){}) | | | | | | alias | Array string | Список ключей, которые могут быть использованы вместо pluginId, как и в require() так и в global | | | | | | import | string | Ссылка на файл с модулем | | loader | | Используется для загрузки модулей типа loader | | deps | Array string | Зависимости, Id плагинов | | css | | Массив путей к стилям. Стили грузятся синхронно при загрузке плагина. Без событий | | js | | Массив путей к скриптам. Загрузка идет по цепочке. Для синхронной загрузки скрипты ложатся в массив. пр: [1.js, [1.1.js, 1.2.js]] | | loadJsAfterModule | bool | default: false. Определяет порядок загрузки скриптов и модуля | | onInstall | callback | функция выполняемая после установки плагина (однократно) | | onLoad | callback | функция выполняемая после загрузки плагина (однократно) | | path | string | префикс пути для модуля, скриптов и стилей | | modulePath | string | префикс пути для модуля. если не указан, то берется config.path | ## Использование Запуск исполняемого кода после установки зависимостей: ```sh PluginManager.exec(deps, callback, argArr, context) ``` Запуск исполняемого кода после установки зависимостей и при загруженной странице: ```sh PluginManager.ready(deps, callback) ``` > `kit.config.requiredDependencies` определяет зависимости (deps) по умолчанию ## Глобальный конфиг Параметры определяются в плагине `config` > Параметры допустимо определять до загрузки `PluginManager` | name | default | description | | --- | --- | --- | | defaultPath | /local/templater.dev/kit/assets | | | requiredDependencies | ['bsCore', 'toolkit'] | дополнительно определяет список зависимостей для любого колбека вызванного функциями `exec` и `ready` | | autoloadPluginList | ['tooltip'] | Автоматически загрузит ресурсы указанных плагинов. В случае модуля с типом `loader` код не будет исполнен сразу после загрузки. Исполнение бдует определятся функций `install` | | debug | false | Расширит список выводимой в консоль информации | ## z-index map | z-index | plugin | selector | | --- | --- | --- | | 100 | flex-kit | .flex-card:hover .flex-card__content | ## Установка В директории определенной в `config.defaultPath` выполнить ```bash git clone https://bellord@bitbucket.org/bellord13/kit.git ./ ``` ## License MIT [//]: # (These are reference links used in the body of this note and get stripped out when the markdown processor does its job. There is no need to format nicely because it shouldn't be seen. Thanks SO - http://stackoverflow.com/questions/4823468/store-comments-in-markdown-syntax) [dill]: