This commit is contained in:
2021-08-20 19:24:48 +03:00
parent ed40f5e0f2
commit 07c164357a
4 changed files with 94 additions and 31 deletions
+52 -6
View File
@@ -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
+25 -4
View File
@@ -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);
+14 -21
View File
@@ -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 () {
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);
}
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');
});
}());
+3
View File
@@ -1,6 +1,9 @@
<?require( $_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");?>
<?
?>
<div class="kit-wrapper">
<h1 style="text-align: center;">BX.KIT FRONT-END FRAMEWORK</h1>