Намиране и извикване на компоненти и плъгини: FIND, COMPONENTS, SETTER, EXE, TAPI, MIDDLEWARE и ADAPT
FIND(selector, [all])връща компонент, който е готов:'notice'е неговото име,'.msg'неговият път (съвпада с пътищата, които го съдържат) и'#id'неговото id; сallнаtrueвръща списъка.COMPONENTS(path)връща списъка на готовите компоненти, чийто път е подpath; флаговете на пътя го филтрират ('msg @visible').SETTER('name/method', a, b, c, d)извикваmethodна всеки готов компонент с това име ('.path/method'за път,'#id/method'за id,'*/method'за всички). Име, което още не е заредено, се зарежда първо (мързелив компонент).ASETTER(...)не го извиква: връща функция, която ще го направи.EXE(name, a, b, c, d)(същото катоEXEC()) извиква това, което казва името:'plugin/method'метод на плъгин,'function'глобална функция или път в състоянието, който държи функция ('FUNC.save').SEEX(name, value)е същото, но когато името не е функция, задава пътя наvalue.TAPI(name, data, callback)еAPI(DEF.api, ...)иPIPE(name, data, callback)еAPI(DEF.pipe, ...): два адреса на endpoints, които задавате веднъж вDEF.apiиDEF.pipe.MIDDLEWARE(name, function(next) {})регистрира функция, която се изпълнява преди маршрут: трябва да извикаnext(), за да го пусне нататък. Маршрутът иска един (или повече, разделени със запетаи) като трети аргумент:ROUTE('/path/', handler, 'name').MIDDLEWARE(['a', 'b'], callback)изпълнява middleware по ред и после callback; този, който не извикаnext(), спира веригата.NEWUIBIND(element, path, config)създаваui-bindвърху елемент от кода (елементът не се нуждае от атрибутите) и го връща.ADAPT(path, id, text)подготвя текста на компонент, дошъл отвън: превежда@(...), замества~PATH~иCLASSс пътя и~ID~с id, и поставяpathв таговете<ui-plugin>, които нямат такъв.COMPILEе същата функция катоNOOPв jComponent 20: не прави нищо.- Обектите зад всичко:
jComponent,Total,MAINиMса един и същ обект (енджинът:M.componentsе списъкът на компонентите,M.versionверсията),Wеwindow,DEFса стойностите по подразбиране, аREPO,FUNC,TEMPиPLUGINSса ваши обикновени обекти:FUNCза функции, коитоEXE('FUNC.name')може да извика,TEMPсе изпразва от jComponent, когато страницата започне отново.
NEWACTION('Math/add', {
name: 'Add two numbers',
input: '*a:Number, *b:Number',
action: function($, model) {
$.callback({ sum: model.a + model.b });
}
});exports.install = function() {
ROUTE('API /api/ +math_add --> Math/add');
ROUTE('API /pipe/ +math_add --> Math/add');
};<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>jComponent</title>
<link rel="stylesheet" href="//cdn.componentator.com/spa.min@20.css" />
<script src="//cdn.componentator.com/spa.min@20.js"></script>
</head>
<body>
<ui-component name="notice" path="msg"></ui-component>
<ui-component name="notice" path="other"></ui-component>
<ui-plugin path="shop"></ui-plugin>
<p id="target">x</p>
<script>
COMPONENT('notice', function(self) {
self.make = function() { self.element.html('<b></b>'); };
self.say = function(text, extra) { self.find('b').text(text + (extra || '')); };
});
PLUGIN('shop', function(exports) {
exports.hello = function(a) { window.shoplog = 'hello ' + a; };
});
window.globalfn = function(a, b) { window.globallog = [a, b]; };
FUNC.local = function(a) { window.funclog = a; };
DEF.api = '/api/';
DEF.pipe = '/pipe/';
</script>
</body>
</html> Опитайте в браузъра си
Редактирайте примера и го изпълнете. Работи в изолирана рамка във вашия браузър; нищо не се изпраща към нашия сървър.
Преглед