Hľadanie a volanie komponentov a pluginov: FIND, COMPONENTS, SETTER, EXE, TAPI, MIDDLEWARE a ADAPT
FIND(selector, [all])vráti komponent, ktorý je pripravený:'notice'je jeho názov,'.msg'jeho cesta (zodpovedá cestám, ktoré ho obsahujú) a'#id'jeho id; sallnastaveným natruevráti zoznam.COMPONENTS(path)vráti zoznam pripravených komponentov, ktorých cesta je podpath; príznaky cesty ju filtrujú ('msg @visible').SETTER('name/method', a, b, c, d)zavolámethodkaždého pripraveného komponentu s týmto názvom ('.path/method'pre cestu,'#id/method'pre id,'*/method'pre všetky). Názov, ktorý ešte nie je načítaný, sa najprv načíta (lenivý komponent).ASETTER(...)ho nevolá: vráti funkciu, ktorá to urobí.EXE(name, a, b, c, d)(rovnaké akoEXEC()) zavolá to, čo hovorí názov:'plugin/method'metódu pluginu,'function'globálnu funkciu, alebo cestu v stave, ktorá drží funkciu ('FUNC.save').SEEX(name, value)je to isté, ale keď názov nie je funkcia, nastaví cestu navalue.TAPI(name, data, callback)jeAPI(DEF.api, ...)aPIPE(name, data, callback)jeAPI(DEF.pipe, ...): dve adresy endpointov, ktoré nastavíte raz vDEF.apiaDEF.pipe.MIDDLEWARE(name, function(next) {})zaregistruje funkciu, ktorá sa spustí pred routou: musí zavolaťnext(), aby ju pustila ďalej. Routa si pýta jeden (alebo viac, oddelených čiarkami) ako tretí argument:ROUTE('/path/', handler, 'name').MIDDLEWARE(['a', 'b'], callback)spustí middleware v poradí a potom callback; ten, ktorý nezavolánext(), reťaz zastaví.NEWUIBIND(element, path, config)vytvoríui-bindna elemente z kódu (element nepotrebuje atribúty) a vráti ho.ADAPT(path, id, text)pripraví text komponentu, ktorý prichádza zvonku: preloží@(...), nahradí~PATH~aCLASScestou a~ID~id, a vložípathdo značiek<ui-plugin>, ktoré ho nemajú.COMPILEje tá istá funkcia akoNOOPv jComponent 20: nerobí nič.- Objekty za všetkým:
jComponent,Total,MAINaMsú ten istý objekt (engine:M.componentsje zoznam komponentov,M.versionverzia),Wjewindow,DEFpredvolené hodnoty aREPO,FUNC,TEMPaPLUGINSsú vaše jednoduché objekty:FUNCpre funkcie, ktoréEXE('FUNC.name')môže volať,TEMPvyprázdni jComponent, keď sa stránka spustí znova.
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> Vyskúšajte to vo svojom prehliadači
Upravte príklad a spustite ho. Beží v izolovanom ráme vo vašom prehliadači; na náš server sa nič neposiela.
Náhľad