До этого момента XML файл настройки выглядел примерно так:
На самом деле мы можем создать несколько параллельно работающих и не зависящих друг от друга экземпляров интерпретатора языка JavaScript, например, следующим образом:
Когда у нас был один пост, мы получали к нему HTML доступ через корень сайта /. Если у нас имеется два и более постов, то мы получаем к первому посту через корень сайта, а к каждому следующему через указание имени поста на первом шаге пути URL. Впрочем, доступ и к первому посту можно осуществить через имя поста. дополнять
По принятой терминологии jCjS пост, обращение к которому осуществляется через корень сайта / - называется серверным. Через настройки узла jcjs.xml <server> можно назначить любой пост серверным следующим образом (serverPost = "postServer"): дополнять
В каждый узел настроек поста можно добавить произвольное количество параметров, доступ к которым в скриптах поста осуществляется через селектор точка. Рассмотрим пример настроек поста:
<post objectName = "postProperties" d = "3">
<handlers
cmd = "stuff@examples/postProperties/cmd.js"
/>
<someObject
script = "({ x:2.3, y: 1.2 })"
/>
<numbers
script = "[['curly', 3], [2, 'dede'], [3, 'myrli']]"
/>
<someFunc
script = "(function() { return 20; })"
/>
<params
a="fdfd"
b="dededde"
>
<app a="a1" b="a2"/>
<ar a="a1" b="a2"/>
</params>
</post>
Пример парсинга обрабочиком шаблона:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <meta content="charset=utf-8"> <title>Пример передачи данных посту через jCjS.xml</title> </head> <body> <h2>Пример передачи данных посту через jCjS.xml</h2> Обязательный параметр поста доступен в виде строки: <!--= post.objectName --><br> Необязательный параметр поста доступен в виде строки: <!--= post.d --><br> <br> Узел someObject доступен в виде нативного JavaScript объекта:<br> post.someObject.x = <!--= post.someObject.x --><br> post.someObject.y = <!--= post.someObject.y --><br> <br> Узел someObject доступен в виде нативного JavaScript массива:<br> post.numbers = <!--= post.numbers --><br> post.numbers[0] = <!--= post.numbers[0] --><br> post.numbers[0])[1] = <!--= post.numbers[0][1] --><br> <br> Функцию someFunc можно выполнить<br> someFunc() return <!--= post.someFunc() --><br> <br> Узел params<br> post.params.a = <!--= post.params.a --><br> post.params.b = <!--= post.params.b --><br> post.params.app.a = <!--= post.params.app.a --><br> post.params.app.b = <!--= post.params.app.b --><br> post.params.ar.a = <!--= post.params.app.a --><br> post.params.ar.b = <!--= post.params.app.b --><br> </body> </html>
Настройки поста можно вынести в отдельный файл. Такой прием позволяет разгрузить основной jCjS.xml от обилия текста и оставить по-сути простое перечисление постов. Вот пример выноса всех настроек поста postProperties в отдельный файл out.xml
<post
objectName = "postProperties"
nodexml = "stuff@examples/postProperties/out.xml"
/>
Код файла внешних настроек поста out.xml
<post d = "3">
<handlers
cmd = "stuff@examples/postProperties/cmd.js"
/>
<someObject
script = "{ x:2.3, y: 1.2 }"
/>
<numbers
script = "[['curly', 3], [2, 'dede'], [3, 'myrli']]"
/>
<someFunc
script = "function() { return 20; }"
/>
<params a="fdfd" b="dededde">
<app a="a1" b="a2"/>
<ar a="a1" b="a2"/>
</params>
</post>