Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/german-stepanov/nodejs-output-view
- Owner: German-Stepanov
- License: mit
- Created: 2020-12-06T11:17:09.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2021-01-11T16:05:24.000Z (almost 4 years ago)
- Last Synced: 2024-11-30T22:49:00.859Z (about 1 month ago)
- Topics: nodejs, php-files, preprocessor, templates
- Language: JavaScript
- Homepage:
- Size: 43.9 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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+PHPvar $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
```