Trovare e chiamare componenti e plugin: FIND, COMPONENTS, SETTER, EXE, TAPI, MIDDLEWARE e ADAPT
FIND(selector, [all])restituisce un componente pronto:'notice'è il suo nome,'.msg'il suo percorso (corrisponde ai percorsi che lo contengono) e'#id'il suo id; conallatruerestituisce la lista.COMPONENTS(path)restituisce la lista dei componenti pronti il cui percorso è sottopath; i flag di un percorso la filtrano ('msg @visible').SETTER('name/method', a, b, c, d)chiamamethoddi ogni componente pronto con quel nome ('.path/method'per un percorso,'#id/method'per un id,'*/method'per tutti). Un nome non ancora caricato viene caricato prima (un componente lazy).ASETTER(...)non lo chiama: restituisce una funzione che lo farà.EXE(name, a, b, c, d)(comeEXEC()) chiama ciò che dice il nome:'plugin/method'un metodo di un plugin,'function'una funzione globale, o un percorso nello stato che contiene una funzione ('FUNC.save').SEEX(name, value)è uguale, ma quando il nome non è una funzione imposta il percorso avalue.TAPI(name, data, callback)èAPI(DEF.api, ...)ePIPE(name, data, callback)èAPI(DEF.pipe, ...): due indirizzi di endpoint che imposti una volta inDEF.apieDEF.pipe.MIDDLEWARE(name, function(next) {})registra una funzione che viene eseguita prima di una route: deve chiamarenext()per lasciarla proseguire. Una route ne richiede una (o più, separate da virgole) come terzo argomento:ROUTE('/path/', handler, 'name').MIDDLEWARE(['a', 'b'], callback)esegue i middleware in ordine e poi il callback; uno che non chiamanext()ferma la catena.NEWUIBIND(element, path, config)crea unui-bindsu un elemento dal codice (l'elemento non ha bisogno degli attributi) e lo restituisce.ADAPT(path, id, text)prepara il testo di un componente che viene da fuori: traduce@(...), sostituisce~PATH~eCLASScon il percorso e~ID~con l'id, e mette ilpathnei tag<ui-plugin>che non ce l'hanno.COMPILEè la stessa funzione diNOOPin jComponent 20: non fa nulla.- Gli oggetti dietro a tutto:
jComponent,Total,MAINeMsono lo stesso oggetto (il motore:M.componentsè la lista dei componenti,M.versionla versione),Wèwindow,DEFi valori predefiniti, eREPO,FUNC,TEMPePLUGINSsono oggetti semplici tuoi:FUNCper funzioni cheEXE('FUNC.name')può chiamare,TEMPviene svuotato da jComponent quando la pagina riparte.
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> Provalo nel tuo browser
Modifica l'esempio ed eseguilo. Gira in un frame isolato del tuo browser; nulla viene inviato al nostro server.
Anteprima