Komponensek és pluginok keresése és hívása: FIND, COMPONENTS, SETTER, EXE, TAPI, MIDDLEWARE és ADAPT
- A
FIND(selector, [all])olyan komponenst ad vissza, amely kész: a'notice'a neve, a'.msg'az útvonala (azokra az útvonalakra illeszkedik, amelyek tartalmazzák) és a'#id'az azonosítója;alleseténtrueértékkel a listát adja vissza. ACOMPONENTS(path)a kész komponensek listáját adja vissza, amelyek útvonala apathalatt van; az útvonal flagjei szűrik ('msg @visible'). - A
SETTER('name/method', a, b, c, d)meghívja amethodmetódust minden kész, ilyen nevű komponensen ('.path/method'útvonalhoz,'#id/method'azonosítóhoz,'*/method'az összeshez). A még nem betöltött nevet előbb betölti (lusta komponens). AzASETTER(...)nem hívja meg: egy függvényt ad vissza, amely meg fogja tenni. - Az
EXE(name, a, b, c, d)(ugyanaz, mint azEXEC()) azt hívja meg, amit a név mond:'plugin/method'egy plugin metódusát,'function'egy globális függvényt, vagy az állapotban egy függvényt tartó útvonalat ('FUNC.save'). ASEEX(name, value)ugyanez, de ha a név nem függvény, az útvonalatvalueértékre állítja. - A
TAPI(name, data, callback)azAPI(DEF.api, ...), aPIPE(name, data, callback)pedig azAPI(DEF.pipe, ...): két végpontcím, amelyeket egyszer állítasz be aDEF.apiésDEF.pipehelyen. - A
MIDDLEWARE(name, function(next) {})regisztrál egy függvényt, amely egy útvonal előtt fut: meg kell hívnia anext()függvényt, hogy továbbengedje. Egy útvonal harmadik argumentumként kér egyet (vagy többet, vesszővel elválasztva):ROUTE('/path/', handler, 'name'). AMIDDLEWARE(['a', 'b'], callback)sorrendben futtatja a middleware-eket, majd a callbacket; amelyik nem hívja meg anext()függvényt, megállítja a láncot. - A
NEWUIBIND(element, path, config)kódból hoz létreui-bindelemet egy elemen (az elemnek nincs szüksége az attribútumokra), és visszaadja. - Az
ADAPT(path, id, text)előkészíti egy kívülről érkező komponens szövegét: lefordítja az@(...)részeket, a~PATH~ésCLASSjelölőket az útvonalra, a~ID~jelölőt az azonosítóra cseréli, és apathértéket beírja azokba a<ui-plugin>címkékbe, amelyekben nincs. ACOMPILEugyanaz a függvény, mint aNOOPa jComponent 20-ban: nem csinál semmit. - A mindent mozgató objektumok: a
jComponent,Total,MAINésMugyanaz az objektum (a motor: azM.componentsa komponensek listája, azM.versiona verzió), aWawindow, aDEFaz alapértékek, aREPO,FUNC,TEMPésPLUGINSpedig a te egyszerű objektumaid: aFUNColyan függvényekhez, amelyeket azEXE('FUNC.name')meghívhat, aTEMP-et a jComponent kiüríti, amikor az oldal újraindul.
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> Próbáld ki a böngésződben
Szerkeszd a példát, és futtasd. A böngésződ egy izolált keretében fut; semmi nem kerül a szerverünkre.
Előnézet