До этого момента XML файл настройки выглядел примерно так:

На самом деле мы можем создать несколько параллельно работающих и не зависящих друг от друга экземпляров интерпретатора языка JavaScript, например, следующим образом:

Пост как ресурс URL

Когда у нас был один пост, мы получали к нему 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>

XML настройки поста в отдельном файле

Настройки поста можно вынести в отдельный файл. Такой прием позволяет разгрузить основной 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>