ΠΡΠΎΡΠ΅ΡΡΠΎΡ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ BEM-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ JSON ΠΈΠ»ΠΈ XML Π² HTML. Π£ΠΌΠ΅Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅, ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Ρ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΈ Π±Π»ΠΎΠΊΠΎΠ² Π²Π½ΡΡΡΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π² HTML.
ΠΠ΅ΡΠ΅Π΄ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΡΠ°Π·Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ index.html:
<script src="jblock.js"></script>
<script src="foo.jblock.js"></script>
<b:foo/>Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ foo.jblock.js:
jBlock.match('foo', function ()
{
this.tag('h1')
.append({
e_wrap: 'Hello, world'
})
})Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡΡ:
<script src="jblock.js"></script>
<script src="foo.jblock.js"></script>
<h1 class="foo"><div class="foo__wrap">Hello, world</div></h1>ΠΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΈΡΡΡΡΡ ΡΠ·Π»Ρ Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ Β«b:Β», ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΡΡΡΡ Π² JSON, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡΠ΅ΡΡ ΡΠ°Π±Π»ΠΎΠ½Π°ΠΌΠΈ, Π° ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ JSON ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² HTML.
ΠΡΠ΅ ΡΠ΅Π±ΡΡΠ° Π·Π½Π°ΡΡ ΠΈΠ»ΠΈ Π΄Π°Π²Π½ΠΎ Π΄ΠΎΠ³Π°Π΄ΡΠ²Π°ΡΡΡΡ, ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡ Π½Π° Π±Π»ΠΎΠΊΠΈ, Π²Π½ΡΡΡΠΈ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠ³ΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ Π±Π»ΠΎΠΊΠΈ; Π²Π΄ΠΎΠ±Π°Π²ΠΎΠΊ, Ρ Π±Π»ΠΎΠΊΠΎΠ² ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π±ΡΠ²Π°ΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅Π½ΡΡΡ ΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π²Π½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΈ Ρ.Π΄.
jBlock ΡΠΌΠ΅Π΅Ρ ΠΏΠ΅ΡΠ΅Π²Π°ΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ HTML, ΡΠ°ΠΊ ΠΈ JSON. ΠΠΎ, ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΡΠΎΡΠΌΠ°ΡΠΎΠΌ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ JSON, Ρ Π½Π΅Π³ΠΎ ΠΈ Π½Π°ΡΠ½Π΅ΠΌ:
{
b_button: {e_label:'ΠΠ°ΠΉΡΠΈ'}
m_size:'L'
}Π‘ΠΌΡΡΠ» ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠ² ΠΏΠΎΠ»Π΅ΠΉ b_, e_, m_ βΒ ΡΡΠΎ ΠΈΠΌΡ Π±Π»ΠΎΠΊΠ°, ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΠ½ΡΡΡΠΈ ΠΏΠΎΠ»Ρ Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ b_ ΠΈΠ»ΠΈ e_ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΊΠ°ΠΊ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ (Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅, ΠΈΡ
ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ), ΡΠ°ΠΊ ΠΈ ΠΏΡΠΎΡΡΡΠΌ ΡΠ΅ΠΊΡΡΠΎΠΌ.
ΠΠ»Ρ ΡΠΈΡΡΠ°ΡΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° Ρ Π±Π»ΠΎΠΊΠ° ΠΎΠ±ΡΠ΅ΠΌΠ½ΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅, Π° ΠΈΠΌΡ Π±Π»ΠΎΠΊΠ° Π½Π΅ Ρ
ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎ ΠΎΡΠ΄Π΅Π»ΡΡΡ ΠΎΡ ΠΏΡΠΎΡΠΈΡ
Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΉ (ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ, ΠΌΠΈΠΊΡΡ ΠΈ ΠΏΡ.), ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ content:
{
b_button:'', m_size:'L',
content:[
{e_label:'ΠΠ°ΠΉΡΠΈ'},
...
]
}ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²:
{
b_blockName: Object | Array | String, //ΠΈΠΌΡ Π±Π»ΠΎΠΊΠ°
e_elemName: Object | Array | String, //Π»ΠΈΠ±ΠΎ ΠΈΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° (Π½Π΅ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅)
m_modName: String | Boolean, //ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ
content: Object | Array | String, //Π΄ΡΠ±Π»ΠΈΡΡΡΡΠ΅Π΅ ΠΏΠΎΠ»Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ
tag: String, //ΠΈΠΌΡ ΡΠ΅Π³Π°
attr: Object, //Π°ΡΡΠΈΠ±ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Ρ Π² html-ΡΠ·Π΅Π»
mix: Array | String, //ΠΊΠ»Π°ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ΄ΠΌΠ΅ΡΠ°Π½Ρ ΠΊ ΠΊΠ»Π°ΡΡΠ°ΠΌ Π±Π»ΠΎΠΊΠ°
css: Object, //ΡΠΏΠΈΡΠΎΠΊ CSS-ΡΠ²ΠΎΠΉΡΡΠ² html-ΡΠ·Π»Π°
js: Boolean, //ΡΠ»Π°Π³ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° (Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° i-bem.js)
block: Ctx, //ΡΠ²Π½ΠΎΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ°, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ (ΡΠΌ. this.ctx())
}JSON ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² HTML ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ jBlock.json2html(<JSON>):String.
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π±ΡΠ²Π°Π΅Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°ΠΏΡΡΠΌΡΡ Ρ HTML, Π΅ΡΠ»ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ΡΠ΅ Π½Π΅ Π·Π°ΡΠΊΠ°Π»ΠΈΠ²Π°Π΅Ρ, ΠΈΠ»ΠΈ ΡΡΠΎΠΈΡ Π·Π°Π΄Π°ΡΠ° Π±ΡΡΡΡΠΎ ΡΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΡΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ jblock.js ΠΊ html-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ, Π½Π°ΡΠ½Π΅Ρ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΌΠ°Π³ΠΈΡ: ΡΠ·Π»Ρ Ρ Π½Π΅ΠΉΠΌΡΠΏΠ΅ΠΉΡΠΎΠΌ b: ΠΏΡΠ΅Π²ΡΠ°ΡΡΡΡΡ Π² ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡΠ΅ html-Π±Π»ΠΎΠΊΠΈ (ΠΊ Π½ΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ jBlock.json2html).
Π ΡΠ΅Π»ΠΎΠΌ BEM-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ HTML Π²ΠΎ-ΠΌΠ½ΠΎΠ³ΠΎΠΌ Π΄ΡΠ±Π»ΠΈΡΡΠ΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ JSON:
<b:block m:mod="value" tag="span" mix="block2 block3__elem" param="value">
<elem>Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅</elem>
</b:block>ΡΠ°Π²Π½ΠΎ
{
b_block:{e_elem:'Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅'},
m_mod:'value',
tag:'span',
mix:['block2', 'block3__elem'],
param:'value'
}ΠΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅:
<html>
<head>
<meta charset="utf8"/>
<script src="jblock.js"></script>
</head>
<body>
<h1>Hello, world</h1>
<b:button>OK</b:button>
</body>
</html>ΠΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ:
<html>
<head>
<meta charset="utf8"/>
<script src="jblock.js"></script>
</head>
<body>
<h1>Hello, world</h1>
<div class="button">ΠΠ½ΠΎΠΏΠΊΠ°</div>
</body>
</html>ΠΠ°Π»Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°Π±Π»ΠΎΠ½ button.jblock.js (Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π°Ρ ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ°ΡΠΊΡΠΎΠ΅Ρ Π±Π»ΠΎΠΊ button:
jBlock.match('button', function ()
{
this.tag('button')
.append({
e_label: this.copy(),
tag: 'span'
})
})ΠΡΠΎΡ ΡΠΊΡΠΈΠΏΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΊ html-ΡΠ°ΠΉΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ, Π΅ΡΠ»ΠΈ Π»Π΅Π½ΠΈΠ²ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΡΠΎΡΠ°ΡΡ Π΄ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠ° (Π±ΡΠ°ΡΠ·Π΅Ρ ΡΡΠ΅ΡΠΏΠΈΡ):
<!-- ΠΡΠ»ΠΎ: -->
<meta charset="utf8"/>
<script src="jblock.js"></script>
<script src="button.jblock.js"></script>
<h1>Hello, world</h1>
<b:button>OK</b:button>
<!-- Π‘ΡΠ°Π»ΠΎ: -->
<meta charset="utf8"/>
<script src="jblock.js"></script>
<script src="button.jblock.js"></script>
<h1>Hello, world</h1>
<button class="button">
<span class="button__label">ΠΠ</span>
</button>ΠΠΎ-Ρ ΠΎΡΠΎΡΠ΅ΠΌΡ, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΠΎΠΎΠ±ΡΠ΅ ΡΡ ΠΎΠ΄ΠΈΡΡ ΠΎΡ HTML ΠΊ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ BEM-ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ΅:
<meta charset="utf8"/>
<script src="jblock-and-my-blocks.js"></script>
<b:page>
<b:header>Hello, world</b:header>
<b:button m:size="L">OK</b:button>
</b:page>ΠΠ°ΠΆΠ½ΠΎ: Π²Π½ΡΡΡΠΈ ΡΠ·Π»ΠΎΠ² Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ b: ΡΠΆΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ HTML-ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ (Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΎΡΠ΅Π½Ρ Π½Π°Π΄ΠΎ, Π΄Π»Ρ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΌΠΈΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°Π±Π»ΠΎΠ½).
- json2html (json:Object):String βΒ ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ BEM-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ JSON Π² HTML
- json2xml (json:Object, isHtml:Boolean):String βΒ ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ BEM-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ JSON Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΠ²ΡΡΡΠΈΠΉ Π΅ΠΌΡ XML (ΠΈΠ»ΠΈ HTML as is)
- match (selector:String, template:Function):jBlock βΒ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΊ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΡ ΡΠ°Π±Π»ΠΎΠ½ (Π΄Π΅ΡΠ°Π»ΠΈ Π½ΠΈΠΆΠ΅)
- onLoad (handler:Function) βΒ handler, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΠΏΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ DOM ΠΈ Π²ΡΠ΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ
Π Π°Π±ΠΎΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π° jBlock.json2html() ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ
ΡΡΠ°ΠΏΠΎΠ²:
- ΠΠ΅ΡΠ΅Π²ΠΎ ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅
expandβ ΡΡΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠ΅ΡΠΌΠΈΠ½, Π² ΡΡΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π΄Π΅ΡΠ΅Π²Π° ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Ρ, Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Ρ ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ Π½Π° Π½ΠΎΠ²ΡΠ΅. - Π Π°ΡΠΊΡΡΡΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΡΡΡ Π²ΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΠ°Π· Π² ΡΠ΅ΠΆΠΈΠΌΠ΅
html, ΠΈ, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΌ Π²ΡΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² HTML.
Π¨Π°Π±Π»ΠΎΠ½Ρ β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°ΠΌ JSON-Π΄Π΅ΡΠ΅Π²Π° Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠ±Ρ
ΠΎΠ΄Π° Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ expand. Π ΡΠ΅Π»Π΅ ΡΠ°Π±Π»ΠΎΠ½Π° ΠΌΠΎΠ³ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½Π°:
jBlock.match('<Π‘ΠΠΠΠΠ’ΠΠ 1>', '<Π‘ΠΠΠΠΠ’ΠΠ 2>', ..., function () {
//Π’Π΅Π»ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π°
})Π‘Π΅Π»Π΅ΠΊΡΠΎΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΡΠΌΠ°Ρ:
blockβΒ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΠ°Π±Π»ΠΎΠ½ ΠΊ Π±Π»ΠΎΠΊΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«blockΒ»block__elemβ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Β«elemΒ»block_mod_valβΒ ΠΊ Π±Π»ΠΎΠΊΡ Β«blockΒ» Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ mod ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ valblock__elem_mod_valβ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠΎ ΡΠ»Π΅ΠΌΠ΅Π½Ρblock__*β Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π±Π»ΠΎΠΊΠ°
Π ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΊΠ·Π΅ΠΏΠ»ΡΡΡ Π±Π»ΠΎΠΊΠ° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π±Π»ΠΎΠ½. ΠΡΠΎ ΡΡΡΠ°Ρ ΡΠ΅Ρ ΠΎΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠΈ, ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ Ρ ΠΎΠ»ΠΎΡΡΡΡ ΠΎΠ±Ρ ΠΎΠ΄ΠΎΠ² Π΄Π΅ΡΠ΅Π²Π°, Π° Π³Π»Π°Π²Π½ΠΎΠ΅ βΒ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ°Π±Π»ΠΎΠ½Ρ ΡΡΠΎΡΠ½ΡΡΡΠΈΠΌΠΈ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ.
ΠΡΠΈΠΎΡΠΈΡΠ΅Ρ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠ° Π·Π°Π²ΠΈΡΠΈΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΎΡ Π΅Π³ΠΎ ΡΠΎΡΠ½ΠΎΡΡΠΈ, Π° ΠΏΡΠΈ ΠΏΡΠΎΡΠΈΡ ΡΠ°Π²Π½ΡΡ , ΠΎΡ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΡΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΡ β ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΊΡΠΎΠ΅Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ.
- append ([content:Array | Object | String, ...]) β ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°; Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΎΡΠΈΡΠ°Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅
- attr (name:String | list:Object, [value]) βΒ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ»ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π°ΡΡΠΈΠ±ΡΡΡ
- blockMod (name:String) βΒ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° (Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²)
- blockParam (name:String) βΒ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° (Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²)
- copy (name:String, ...):Ctx βΒ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠΏΠΈΡ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ('e_elemName', 'b_blockName')
- css (name:String | list:Object, [value]) βΒ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ»ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ CSS-ΡΠ²ΠΎΠΉΡΡΠ²Π°
- ctx () βΒ ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΎΠ±Π΅ΡΡΡΠ²Π°Π½ΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΡΠΌ. Π½ΠΈΠΆΠ΅)
- defMod (modifiers:Object) βΒ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΠΈ ΠΈΡ Π·Π°Π½ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
- escapeHtml () β ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ
<Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ - has ([name:String]) β ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠ° ('e_elemName', 'b_blockName'); Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ
- index () β ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΡΡΠ΅Π΄ΠΈ ΡΠΎΡΠ΅Π΄Π΅ΠΉ
- js () β Π²Π·Π²ΠΎΠ΄ΠΈΡ ΡΠ»Π°Π³ js
- mix (class:String, ...) βΒ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΡ Π΄Π»Ρ ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΡ
- mod (name:String | list:Object, [value]) β Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ»ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ
- name () β Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠ° (Π±Π΅Π· ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠ²
b_ΠΈΠ»ΠΈe_) - param (name:String | list:Object, [value]) βΒ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ»ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ (Π½Π΅Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°)
- replaceWith (content:Object) βΒ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½ΠΎΠ²ΡΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ
- tag (name:String) βΒ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΈΠΌΡ ΡΠ΅Π³Π°
- text ([selecor:String]) β Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π΄ΠΎΡΠ΅ΡΠ½Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
ΠΠ΅ΡΠ΄Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡ Π² ΡΠ΅ΠΏΠΎΡΠΊΠΈ:
jBlock.match('input', function ()
{
this.tag('span')
.defMod({
size:'M',
type:'normal',
state:'release'
})
.append({
e_input:'',
tag:'input',
attr: {
size:1,
autocomlete:'off',
placeholder:this.param('hint'),
value: this.param('value'),
readonly: this.param('readonly') && 'yes'
}
})
})ΠΠ΅ΡΠΎΠ΄ append() ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°, Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°Ρ
ΡΠ·Π»Ρ Π² Π΅Π³ΠΎ ΠΊΠΎΠ½Π΅Ρ. ΠΠ°ΠΆΠ½ΠΎΠ΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:Β ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π°, ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π±Π»ΠΎΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ copy(). Π’Π΅ΠΏΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΡΠ½ΡΡΡΠΈΡ
ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ².
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡ ΡΠΏΠΈΡΠΊΠ° (copy() Π±Π΅Π· ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠ° ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ Π²ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°):
jBlock.match('foo', function ()
{
this.append(
{e_before:''}, // Π΄ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ
this.copy(),
{e_after:''} // ΠΈ ΠΏΠΎΡΠ»Π΅
)
})ΠΠ±ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²:
jBlock.match('foo', function ()
{
this.append({
e_wrap: this.copy('foo__bar')
})
})ΠΠ±Π½ΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ:
jBlock.match('foo', function ()
{
this.append()
})ΠΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ. Π‘ΡΠΎΠΈΡ Π·Π°Π΄Π°ΡΠ° Π² Π±Π»ΠΎΠΊΠ΅ Β«ΠΠΈΡΡΠΌΠΎΒ» Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²: ΡΠ½Π°ΡΠ°Π»Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, ΠΏΠΎΡΠΎΠΌ ΡΠ΅ΠΊΡΡ Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ°ΠΌΠΈ, Π° ΠΏΠΎΡΠΎΠΌ ΠΏΠΎΠ΄ΠΏΠΈΡΡ:
jBlock.match('letter', function ()
{
this.append(
this.copy('e_header'),
this.copy('e_text', 'e_attach'),
this.copy('e_sign')
)
})Π ΡΠ΅ΠΏΠ΅ΡΡ, Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π² ΡΠ΅Π»ΠΎ ΠΏΠΈΡΡΠΌΠ° ΡΠΊΠΎΠΏΠΈΡΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½ΡΠΆΠ½ΡΠ΅ ΠΈ Π² Π½ΡΠΆΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
ΠΠ»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΡΠ°ΡΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ΄ΡΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, Π° ΠΏΠΎΡΠΎΠΌ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅:
jBlock.match('article', function ()
{
this.append(
this.copy('e_header'),
this.copy('!e_header')
)
})ΠΠ΅ΡΠΎΠ΄ replaceWith() ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ Π½Π° ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΠ΅ΡΠΎΠ΄ ctx() Π²Π½ΡΡΡΠΈ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π²ΡΠ΅ Π΅ΡΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΡΠ°ΡΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ:
jBlock.match('page', function ()
{
this.tag('body')
.replaceWith({
e_html:'',
tag:'html',
content: [
{e_head:'', tag:'head'},
this.ctx()
]
})
})replaceWith() Π½ΡΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Π°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅ Π½Π΅Π³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π°Π΄ ΡΠ΅ΠΊΡΡΠΈΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠΌ Π±ΡΠ΄ΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ.