Nodejs или envjs - динамический jquery tmpl

Моя текущая задача состоит в создании и предоставлении централизованных шаблонов для конкретной DOM - для этого примера давайте просто скажем, что это форма.

В основном я хотел бы взять каждый элемент формы (от ярлыков, до входов, до оберток div) и сохранить их как отдельные шаблоны.

Оттуда у нас будет пользовательский интерфейс, где наши продюсеры могут объединить эти формы. Как только они решат, как они хотят, чтобы их форма была выложена (порядок и структура DOM на самом деле важны для этого проекта. Это не может быть решением только для CSS), script на нашей стороне платформы сохранит объект JSON, который будет определить структуру DOM на основе имен шаблонов, которые позже я могу ссылаться на загрузку страницы.

Я думаю, что идеальным решением здесь было бы отправить этот объект JSON на сервер node или использовать envjs как-то для "создания" этого dom, а затем назначить его переменной PHP, которая будет включена в представление CodeIgniter поэтому он может быть проиндексирован Google.

Я знаю, что JQuery работает с envjs, и я знаю там Плагин JQuery для node, но, увы, это мой первый проект JS на стороне сервера, и это, случается, довольно крупный. Я смог получить envjs, работающий на моей локальной машине через командную строку, но для выполнения простой задачи требуется 10-30 секунд. Если envjs - это способ пойти, как я могу держать его в фоновом режиме и иметь ссылки на скрипты? PHP завиток к сервлете envjs на Tomcat возможно?

Одно предостережение - мой локальный разработчик - WAMP (это не позволит нам иметь локальные Unix-машины), но наши тестовые и производственные среды - это LAMP. У меня есть личный сервер LAMP, на который я могу проверить, если это абсолютно единственный способ пойти сюда, но материал для кодирования на моем личном сервере может заставить меня немного нагреться.

К сожалению, у меня нет времени, чтобы исследовать все возможности и попытаться/потерпеть неудачу, как обычно, с новыми технологиями в свое время. Идеи, рекомендации, примеры кода - все, что может помочь мне решить, как подойти к этому, будет с благодарностью.

Ответ 1

Короткий ответ: используйте node. Используйте его прямо сейчас. На самом деле, здесь ссылка на последний родной Windows.exe, который является автономным без зависимостей: http://nodejs.org/dist/v0.5.4/node.exe

Длинный ответ: env.js - это классный проект. Он имитирует среду js в js. Он может работать в других средах и прочее. Что бы это ни было, это не имеет значения.

Node.js - это среда хоста js, которая работает поверх V8. V8 - это самая быстрая среда js, которая поддерживает Chrome, и т.д. Node сам по себе является для собственной системной среды, что обычный js для браузера: мощная комбинация API, смешанная в колдунах brew простоты использования разработчика и широту набора функций.

В браузере вы получаете контроль над видео, аудио, пользовательским вводом и т.д. через расширения DOM для javascript. С Node на сервере (или только на вашем собственном компьютере он имеет много приложений за пределами обычного использования сервером) вы получаете невероятную поддержку для всех типов серверов ввода-вывода IO: http/udp и клиентов, которые делают для вас всю работу шаблонов, файловый ввод-вывод, управляемые потоки данных для обработки указанных сетевых и файловых операций ввода-вывода, доступа к икру и взаимодействия с дочерними или процессинговыми процессами и прямого доступа к компилятору V8 для компиляции и сохранения/запуска байт-кода javascript.

В отношении DOM существует по крайней мере одна полная (html) реализация DOM для Node и нескольких частичных. По крайней мере, YUI, jQuery и MooTools, которые я знаю, могут быть запущены в Node тривиально поверх библиотеки DOM для создания DOM из любого источника, который вам нужен, как в браузере, а затем сериализуйте его в html или что угодно.

https://github.com/tmpvar/jsdom - это реализация DOM, которая выполняется в Node (или любой среде javascript, которую я считаю).

https://github.com/tmpvar/jsdom/blob/master/example/browser/browser.js - пример эмуляции браузера:

var sys = require('sys');
var dom = require('../../lib/jsdom/level2/html').dom.level2.html;
var browser = require('../../lib/jsdom/browser/index').windowAugmentation(dom);

var document = browser.document;
var window = browser.window;

var el = document.createElement('div');
el.id = 'foo';
el.innerHTML = '<em>This is a test</em> This <strong class="odd">is another</strong> test ';
document.body.appendChild(el);

sys.puts(document.outerHTML);

Некоторые другие библиотеки, которые могут просветить ваш путь к решению

Ответ 2

всего несколько моментов, которые стоит рассмотреть.

Различия между Envjs и Nodejs огромны. Envjs - это смоделированная среда браузера, которая по умолчанию выполняется Rhino. Важно отметить, что можно (и разработчики) реализовать Envjs с помощью Nodejs. С другой стороны, Nodejs представляет собой среду Javascript для движка Googles V8, которая очень мощная и есть доступные лоты доступных модулей

Из того, что вы сказали, похоже, что вы хотите создать jQuery teml на стороне клиента на основе взаимодействия пользователей, в результате чего-то вроде этого.

<script id="dynamicTemplate" type="text/x-jquery-tmpl">
    {{tmpl "smallTemplate1"}}
    <tr><td>key: ${value}</td></tr>
</script>

Затем вы можете сериализовать несколько способов JSON и отправить на сервер для воспроизведения (что вы, очевидно, сделали). На стороне сервера вы ищете руководство по тому, как вы можете выполнить десериализованный шаблон.

В этой конкретной точке я настоятельно рекомендую NodeJS с модулем node -jqtpl, который представляет собой порт механизма шаблона jQuerys для nodejs, который имеет довольно большое значение https://github.com/kof/node-jqtpl

Также, если у вас есть возможность; Я очень хотел бы посмотреть, как вы безопасно сериализуете шаблон в JSON, так как я считаю это самой сложной частью всего этого.