From 8ba8d3a9152330d63c656e6d770b70b84315886c Mon Sep 17 00:00:00 2001 From: bellord13 Date: Wed, 25 Aug 2021 19:25:10 +0300 Subject: [PATCH] fix --- README.md | 73 +++++++++++++++++++++++++++++++++------------ assets/core/core.js | 22 -------------- 2 files changed, 54 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index 7d100be..ccbec08 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,32 @@ ## Базовые принципы -Основные этапы работы с плагином: +✨ Инициализация + +> Выдержка из плагина `core` + +```js +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`. + +Пример вызова +```js +kit.$ +kit.jquery +``` + +✨ Основные этапы работы с плагином: | этап | метод | | ------ | ------ | @@ -26,8 +51,8 @@ ## Пример конфигурации -```sh -kit.PluginManager.registerPlugin('menu', { +```js +kit.PluginManager.register('menu', { path: kit.config.defaultPath + '/menu', module: '/menu.js', type: 'loader', @@ -39,17 +64,37 @@ kit.PluginManager.registerPlugin('menu', { ); ``` +## Описание параметров конфига для плагина + +| 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 +```js PluginManager.exec(deps, callback, argArr, context) ``` Запуск исполняемого кода после установки зависимостей и при загруженной странице: -```sh +```js PluginManager.ready(deps, callback) ``` > `kit.config.requiredDependencies` определяет зависимости (deps) по умолчанию @@ -76,23 +121,13 @@ PluginManager.ready(deps, callback) | 100 | flex-kit | .flex-card:hover .flex-card__content | -✨ Magic ✨ - - - -> The overriding design goal for Markdown's -> formatting syntax is to make it as readable -> as possible. The idea is that a -> Markdown-formatted document should be -> publishable as-is, as plain text, without -> looking like it's been marked up with tags -> or formatting instructions. - - ## Установка - +В директории определенной в `config.defaultPath` выполнить +```bash +git clone https://bellord@bitbucket.org/bellord13/kit.git ./ +``` ## License diff --git a/assets/core/core.js b/assets/core/core.js index 84cd579..db75bbd 100644 --- a/assets/core/core.js +++ b/assets/core/core.js @@ -30,28 +30,6 @@ window.kit = window.kit || {}; var __proto = PluginManager.prototype; - __proto.__manual = function(){ - return { - config: { - type: { - import: 'Значение по умолчанию. Нативный загрузчик модулей. Файл модуля содержит ключевые фразы "export" и "export default"', - loader: 'Файл модуля содержит функцию kit.PluginManager.register(pluginId, function(module, exports, require){})', - }, - alias: 'тип Array|string. Список ключей, которые могут быть использованы вместо pluginId, как и в require() так и в global', - import: 'тип string. Ссылка на файл с модулем', - loader: 'Используется для загрузки модулей типа loader', - deps: 'тип Array|string. Зависимости, Id плагинов.', - css: 'тип Array|string. Массив путей к стилям. Стили грузятся синхронно при загрузке плагина. Без событий', - js: 'тип Array|string. Массив путей к скриптам. Загрузка идет по цепочке. Для синхронной загрузки скрипты ложатся в массив. пр: [1.js, [1.1.js, 1.2.js]]', - loadJsAfterModule: 'определяет порядок загрузки скриптов и модуля', - onInstall: 'функция выполняемая после установки плагина (однократно)', - onLoad: 'функция выполняемая после загрузки плагина (однократно)', - path: 'префикс пути для модуля, скриптов и стилей', - modulePath: 'префикс пути для модуля. если не указан, то берется config.path', - }, - } - }(); - __proto.__checkState = function(pluginId, state){ return this.plugins.hasOwnProperty(pluginId) && this.plugins[pluginId].state >= state; };