Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/german-stepanov/nodejs-output-view

Препроцессор шаблонов PHP для nodejs
https://github.com/german-stepanov/nodejs-output-view

nodejs php-files preprocessor templates

Last synced: 16 days ago
JSON representation

Препроцессор шаблонов PHP для nodejs

Awesome Lists containing this project

README

        

# nodejs-output-view
Препроцессор шаблонов PHP для nodejs

Поддерживает передачу чисел, строк, объектов и функций в файл html(php), например
```JS
var rows =
[
{user_id: 11, user_name:'Андрей', user_family:'Иванов', user_active:1},
{user_id: 121, user_name:'Петр', user_family:'Петров', user_active:1},
{user_id: 13, user_name:'Алексей', user_family:'Сидоров', user_active:1},
{user_id: 142, user_name:'Сергей', user_family:'Алексеев', user_active:1},
{user_id: 15, user_name:'Герман', user_family:'Степанов', user_active:0},
];
res.write(
output.view({
//Название файла
file : '/test.php',
//Переменные
data : {
$count : 100,
$title : 'Тесты',
$rows : rows,
width_10: function(str) {
var count = 10;
return (new Array( count ).join(' ') + str).substr(-count).replace(/ /g, ' ');
}
},
})
);
```
Поддерживает использование логических блоков if...elseif...else...endif, например
```HTML+PHP
10): ?>
...

...

...

```
Поддерживает использование логических блоков foreach...endforeach, например
```HTML+PHP
$value): ?>
...

```
Поддерживает использование логических блоков for...endfor, например
```HTML+PHP

...

```
Поддерживает использование логических блоков while...endwhile, например
```HTML+PHP

...

$i++;
?>

```
Поддерживает любые переменные и выражения на js, например
```HTML+PHP
=$название?>
...
=$переменная1 * переменная2?>
```
Поддерживает создание и использование переменных внутри кода HTML, например
```HTML+PHP

var $i=1;
?>
...

$i++;
?>

=$i?>
```
Очищает код от всех комментариев, пробелов и переносов строк (опционально)
Автоматически подсвечиваются php-тэги в любом текстовом редакторе
## Пример подключения (файл _demo/server.js)
```JS
//Конфигурация (глобальная)
myConfig = {};
//Конфигурация сервера
myConfig.server = {
port : 2020,
isDebug : true, //Сообшения сервера
};
//Подключение модуля
var output = require('output-view')({
dir : './', //Папка отображений
clear : true, //Очищать код от комментариев
isDebug : false, //Режим отладки
});

var controller = function (req, res) {
var url = req.url.split('/');

var rows =
[
{user_id: 11, user_name:'Андрей', user_family:'Иванов', user_active:1},
{user_id: 121, user_name:'Петр', user_family:'Петров', user_active:1},
{user_id: 13, user_name:'Алексей', user_family:'Сидоров', user_active:1},
{user_id: 142, user_name:'Сергей', user_family:'Алексеев', user_active:1},
{user_id: 15, user_name:'Герман', user_family:'Степанов', user_active:0},
];

res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
/*
res.write(
output.view({
text : 'Hello, World!',
})
);
*/
res.write(
output.view({
//Название файла
file : '/test.php',
//Переменные
data : {
$test : url[1],
$title : 'Тесты',
$rows : rows,
width_10: function(str) {
var count = 10;
return (new Array( count ).join(' ') + str).substr(-count).replace(/ /g, ' ');
}
},
})
);

res.end();
}
//Формируем задачу
var app = function(req, res) {
var url = req.url.split('/');

//Заглушка запроса favicon.ico
if (url[1]=='favicon.ico') return;

//Установим метку времени
if (myConfig.server.isDebug) {
console.log('\nПолучен запрос req.url', req.url);
console.time('app');
}

//Вызываем контроллер обработки запроса
controller(req, res);

//Выводим общее время
if (myConfig.server.isDebug) console.timeEnd('app');
};
//Создаем и запускаем сервер для задачи
var server = require('http').createServer(app);
server.listen(myConfig.server.port);
//Отображаем информацию о старте сервера
if (myConfig.server.isDebug) console.log('Server start on port ' + myConfig.server.port + ' ...');
```
## Примеры формирования кода (файл _demo/test.php)
### Демонстрация операторов цикла foreach...endforeach
#### Код:
```HTML+PHP

$row={key1:1, key2:'text1', key3:2, key4:'text2'};
?>
$value): ?>

$key==$key?> $value==$value?>

```
#### Формирует результат:
```HTML
$key=key1 $value=1
$key=key2 $value=text1
$key=key3 $value=2
$key=key4 $value=text2
```
### Демонстрация операторов цикла while...endwhile
#### Код:
```HTML+PHP

$i=10;
?>
3): ?>

$i==$i?>


$i--;
?>

```
#### Формирует результат:
```HTML
$i=10
$i=9
$i=8
$i=7
$i=6
$i=5
$i=4
```
### Демонстрация операторов цикла for...endfor
#### Код:
```HTML+PHP

$i==$i?>

```
#### Формирует результат:
```
$i=0
$i=1
$i=2
$i=3
$i=4
$i=5
$i=6
$i=7
$i=8
$i=9
```
#### Код:
```HTML+PHP

$i==$i?>

```
#### Формирует результат:
```
$i=0
$i=2
$i=4
$i=6
$i=8
```
#### Код:
```HTML+PHP
0; $i--): ?>

$i==$i?>

```
#### Формирует результат:
```
$i=10
$i=9
$i=8
$i=7
$i=6
$i=5
$i=4
$i=3
$i=2
$i=1
```
### Демонстрация условных операторов if...elseif...else...endif
#### Код:
```HTML+PHP


$i=0 Первая строка

0 && $i<5 ): ?>
$i==$i?> Cтрока диапазона 1...4


...точнее строка 2


...точнее строка 4


...точнее строка 1 или 3



$i=9 Последняя строка


$i==$i?> Cтрока диапазона 5...8


...точнее строка 5


...точнее строка 7


...точнее строка 6 или 8


```
#### Формирует результат
```
$i=0 Первая строка
$i=1 Cтрока диапазона 1...4
...точнее строка 1 или 3
$i=2 Cтрока диапазона 1...4
...точнее строка 2
$i=3 Cтрока диапазона 1...4
...точнее строка 1 или 3
$i=4 Cтрока диапазона 1...4
...точнее строка 4
$i=5 Cтрока диапазона 5...8
...точнее строка 5
$i=6 Cтрока диапазона 5...8
...точнее строка 6 или 8
$i=7 Cтрока диапазона 5...8
...точнее строка 7
$i=8 Cтрока диапазона 5...8
...точнее строка 6 или 8
$i=9 Последняя строка
```
### Демонстрация "передачи" объекта и функции в отображение
#### Код:
```HTML+PHP

='Привет, Мир!'?>



Список участников:

----------------------------------

|=width_10('ID')?>|=width_10('ИМЯ')?>|=width_10('ФАМИЛИЯ')?>|

----------------------------------

$row): ?>
|=width_10($row['user_id'])?>|=width_10($row['user_name'])?>|=width_10($row['user_family'])?>|

----------------------------------

```
#### Формирует результат
```
Привет, Мир!

Список участников:
----------------------------------
| ID| ИМЯ| ФАМИЛИЯ|
----------------------------------
| 11| Андрей| Иванов|
| 121| Петр| Петров|
| 13| Алексей| Сидоров|
| 142| Сергей| Алексеев|
| 15| Герман| Степанов|
----------------------------------
```
## Тестирование
```
Пример серверного кода в папке "_demo".
```
### Запуск
```
node server
```
### Результат
```
http://localhost:2020
```