diff --git a/README.md b/README.md index 2d96807..3f9f9b7 100644 --- a/README.md +++ b/README.md @@ -2,14 +2,60 @@ ## is a dependency wt.core [![Build Status](https://travis-ci.org/joemccann/dillinger.svg?branch=master)](https://bitbucket.org/andreyleoua/wt.core/) -Заполнится по ходу +Предназначен для асинхронной работы с ресурсами используемыми на веб-проектах. -Dillinger is a cloud-enabled, mobile-ready, offline-storage compatible, -AngularJS-powered HTML5 Markdown editor. -- Type some Markdown on the left -- See HTML in the right -- ✨Magic ✨ +## Термины и определения в контексте фреймворка +`Плагин` - сущность включающая в себя модуль, js-, css-файлы, шрифты. + +`Модуль` - составляющая плагина, определяемая как основной файл плагина (его наличие не обязательно в плагине) + +`PluginManager` - класс для работы с плагинами + +## Базовые принципы + +Работа с плагином сводится к 5 остновным пунктам: + +| этап | метод | +| ------ | ------ | +| Регистрация | registerPlugin(`pluginId`, `config`) или registerPlugins(`object`) | +| Загрузка | load(`pluginId`, `callback`) | +| Установка | install(`pluginId`, `callback`) | +| Запрос | require(`pluginId`, `callback`) | + +Запуск исполняемого кода с готовыми зависимостями: + + +## Пример конфигурации + +```sh +kit.PluginManager.registerPlugin('menu', { + path: kit.config.defaultPath + '/menu', + module: '/menu.js', + type: 'loader', + css: [ + '/menu.css' + ], + deps: ['lib', 'align', 'utils'] + } +); +``` + +## Использование + +```sh +PluginManager.exec(deps, callback, argArr, context) +``` + +Запуск исполняемого кода с готовыми зависимостями после DOMContentLoaded или при загруженной странице : + +```sh +PluginManager.ready(deps, callback) +``` + + + +✨ Magic ✨ ## Features diff --git a/assets/core/core.js b/assets/core/core.js index f305f7b..1bfedf4 100644 --- a/assets/core/core.js +++ b/assets/core/core.js @@ -462,14 +462,17 @@ window.kit = window.kit || {}; return module.exports; }; - __proto.exec = function (deps, callback, argArr = []) { + __proto.exec = function (deps, callback, argArr = [], context = undefined) { if(typeof deps === 'function') { + context = argArr; argArr = callback; callback = deps; deps = []; } - + if(context === undefined) { + context = this; + } if(!Array.isArray(deps) ) { deps = [deps]; } @@ -497,10 +500,10 @@ window.kit = window.kit || {}; if(depsPromise) { depsPromise.then(function(){ - callback.apply(this, getArgArr()); + callback.apply(context, getArgArr()); }); } else { - callback.apply(this, getArgArr()) + callback.apply(context, getArgArr()) } }; @@ -545,6 +548,23 @@ window.kit = window.kit || {}; }; + __proto.ready = function(deps, callback) { + if(typeof deps === 'function') { + callback = deps; + deps = []; + } + if (/complete|interactive|loaded/.test(document.readyState)) { + // In case the document has finished parsing, document's readyState will + // be one of "complete", "interactive" or (non-standard) "loaded". + this.exec(deps, callback); + } else { + // The document is not ready yet, so wait for the DOMContentLoaded event + document.addEventListener("DOMContentLoaded", function () { + this.exec(deps, callback); + }.bind(this)); + } + }; + __proto.__getPlugin = function (pluginId) { if(this.plugins.hasOwnProperty(pluginId)) { return this.plugins[pluginId]; @@ -582,6 +602,7 @@ window.kit = window.kit || {}; manager.install('config'); global.PluginManager = manager; + global.ready = manager.ready.bind(manager); global.exec = manager.exec.bind(manager); global.require = manager.require.bind(manager); })(kit || window); diff --git a/assets/core/core.register.js b/assets/core/core.register.js index f726b03..f7430e2 100644 --- a/assets/core/core.register.js +++ b/assets/core/core.register.js @@ -100,7 +100,7 @@ kit.PluginManager.registerPlugins({ ], deps: ['bsCore'], onRegister: function (plugin) { - kit.PluginManager.install('collapse') + //kit.PluginManager.install('collapse') }, onInstall: function (plugin) { }, @@ -114,7 +114,7 @@ kit.PluginManager.registerPlugins({ ], deps: ['jquery'], onRegister: function (plugin) { - kit.PluginManager.install(plugin.id) + //kit.PluginManager.install(plugin.id) }, onInstall: function (plugin) { }, @@ -122,23 +122,16 @@ kit.PluginManager.registerPlugins({ }); -kit.exec([], function () { +kit.config.debug && (function(){ + console.log('%ckit.reg', 'color:#2053ff'); + document.addEventListener("DOMContentLoaded", function () { + console.log('%cDOMContentLoaded', 'color:#2053ff'); + }); + kit.exec(function () { + console.log('%ckit.exec', 'color:#2053ff'); + }); + kit.ready(function () { + console.log('%ckit.ready', 'color:#2053ff'); + }); +}()); - function _init(){ - console.log('%ckit._init', 'color:#2053ff'); - kit.PluginManager.install('jquery'); - kit.PluginManager.install('toolkit'); - kit.PluginManager.install('tooltip'); - kit.PluginManager.install('bsCore'); - - } - - if (/complete|interactive|loaded/.test(document.readyState)) { - // In case the document has finished parsing, document's readyState will - // be one of "complete", "interactive" or (non-standard) "loaded". - _init(); - } else { - // The document is not ready yet, so wait for the DOMContentLoaded event - document.addEventListener("DOMContentLoaded", _init); - } -}); \ No newline at end of file diff --git a/tests/cheatsheet.php b/tests/cheatsheet.php index c8c85e9..d8d18a7 100644 --- a/tests/cheatsheet.php +++ b/tests/cheatsheet.php @@ -1,6 +1,9 @@ + +

BX.KIT FRONT-END FRAMEWORK