{"id":23207197,"url":"https://github.com/german-stepanov/nodejs-output-view","last_synced_at":"2026-05-20T07:34:34.535Z","repository":{"id":55735326,"uuid":"319014698","full_name":"German-Stepanov/nodejs-output-view","owner":"German-Stepanov","description":"Препроцессор шаблонов PHP для nodejs","archived":false,"fork":false,"pushed_at":"2021-01-11T16:05:24.000Z","size":45,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-11T01:42:12.218Z","etag":null,"topics":["nodejs","php-files","preprocessor","templates"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/German-Stepanov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-12-06T11:17:09.000Z","updated_at":"2021-01-11T16:03:15.000Z","dependencies_parsed_at":"2022-08-15T06:40:33.892Z","dependency_job_id":null,"html_url":"https://github.com/German-Stepanov/nodejs-output-view","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/German-Stepanov/nodejs-output-view","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/German-Stepanov%2Fnodejs-output-view","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/German-Stepanov%2Fnodejs-output-view/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/German-Stepanov%2Fnodejs-output-view/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/German-Stepanov%2Fnodejs-output-view/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/German-Stepanov","download_url":"https://codeload.github.com/German-Stepanov/nodejs-output-view/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/German-Stepanov%2Fnodejs-output-view/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266520988,"owners_count":23942368,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nodejs","php-files","preprocessor","templates"],"created_at":"2024-12-18T17:18:18.775Z","updated_at":"2026-05-20T07:34:34.492Z","avatar_url":"https://github.com/German-Stepanov.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# nodejs-output-view\nПрепроцессор шаблонов PHP для nodejs\n\nПоддерживает передачу чисел, строк, объектов и функций в файл html(php), например\n```JS\nvar rows = \n[\n\t{user_id: 11, user_name:'Андрей', \tuser_family:'Иванов', \tuser_active:1},\n\t{user_id: 121, user_name:'Петр', \tuser_family:'Петров', \tuser_active:1},\n\t{user_id: 13, user_name:'Алексей',\tuser_family:'Сидоров', \tuser_active:1},\n\t{user_id: 142, user_name:'Сергей', \tuser_family:'Алексеев', user_active:1},\n\t{user_id: 15, user_name:'Герман', \tuser_family:'Степанов', user_active:0},\n];\nres.write(\n\toutput.view({\n\t\t//Название файла\n\t\tfile\t: '/test.php', \n\t\t//Переменные\n\t\tdata\t: {\n\t\t\t$count\t: 100,\n\t\t\t$title \t: 'Тесты',\n\t\t\t$rows \t: rows,\n\t\t\twidth_10: function(str) {\n\t\t\t\tvar count = 10;\n\t\t\t\treturn (new Array( count ).join(' ') + str).substr(-count).replace(/ /g, '\u0026nbsp;');\n\t\t\t}\n\t\t},\n\t})\n);\n```\nПоддерживает использование логических блоков if...elseif...else...endif, например\n```HTML+PHP\n\u003c?php if($key\u003e10): ?\u003e\n\t...\n\u003c?php elseif($key\u003c5): ?\u003e\n\t...\n\u003c?php else: ?\u003e\n\t...\n\u003c?php endif; ?\u003e\n```\nПоддерживает использование логических блоков foreach...endforeach, например\n```HTML+PHP\n\u003c?php foreach($rows as $key=\u003e$value): ?\u003e\n\t...\n\u003c?php endforeach; ?\u003e\n```\nПоддерживает использование логических блоков for...endfor, например\n```HTML+PHP\n\u003c?php for($i=0; $i\u003c10; $i++): ?\u003e\n\t...\n\u003c?php endfor; ?\u003e\n```\nПоддерживает использование логических блоков while...endwhile, например\n```HTML+PHP\n\u003c?php while($i\u003c100): ?\u003e\n\t...\n\t\u003c?\n\t\t$i++;\n\t?\u003e\n\u003c?php endfor; ?\u003e\n```\nПоддерживает любые переменные и выражения на js, например\n```HTML+PHP\n\u003c?=$название?\u003e\n...\n\u003c?=$переменная1 * переменная2?\u003e\n```\nПоддерживает создание и использование переменных внутри кода HTML, например\n```HTML+PHP\n\u003c?\n\tvar $i=1;\n?\u003e\n...\n\u003c?\n\t$i++;\n?\u003e\n\n\u003c?=$i?\u003e\n```\nОчищает код от всех комментариев, пробелов и переносов строк (опционально)\nАвтоматически подсвечиваются php-тэги в любом текстовом редакторе\n## Пример подключения (файл _demo/server.js)\n```JS\n//Конфигурация (глобальная)\nmyConfig = {};\n//Конфигурация сервера\nmyConfig.server = {\n\tport\t\t: 2020,\n\tisDebug\t\t: true,\t\t//Сообшения сервера\n};\n//Подключение модуля\nvar output = require('output-view')({\n\tdir \t\t: './',\t\t//Папка отображений\n\tclear \t\t: true,\t\t//Очищать код от комментариев\n\tisDebug\t\t: false,\t//Режим отладки\t\t\t\t\t\n});\n\nvar controller = function (req, res) {\n\tvar url = req.url.split('/');\n\t\n\tvar rows = \n\t[\n\t\t{user_id: 11, user_name:'Андрей', \tuser_family:'Иванов', \tuser_active:1},\n\t\t{user_id: 121, user_name:'Петр', \tuser_family:'Петров', \tuser_active:1},\n\t\t{user_id: 13, user_name:'Алексей',\tuser_family:'Сидоров', \tuser_active:1},\n\t\t{user_id: 142, user_name:'Сергей', \tuser_family:'Алексеев', user_active:1},\n\t\t{user_id: 15, user_name:'Герман', \tuser_family:'Степанов', user_active:0},\n\t];\n\n\tres.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});\n/*\t\n\tres.write(\n\t\toutput.view({\n\t\t\ttext\t: 'Hello, World!', \n\t\t})\n\t);\n*/\n\tres.write(\n\t\toutput.view({\n\t\t\t//Название файла\n\t\t\tfile\t: '/test.php', \n\t\t\t//Переменные\n\t\t\tdata\t: {\n\t\t\t\t$test\t: url[1],\n\t\t\t\t$title \t: 'Тесты',\n\t\t\t\t$rows \t: rows,\n\t\t\t\twidth_10: function(str) {\n\t\t\t\t\tvar count = 10;\n\t\t\t\t\treturn (new Array( count ).join(' ') + str).substr(-count).replace(/ /g, '\u0026nbsp;');\n\t\t\t\t}\n\t\t\t},\n\t\t})\n\t);\n\n\tres.end();\n}\n//Формируем задачу\nvar app = function(req, res) {\n\tvar url = req.url.split('/');\n\n\t//Заглушка запроса favicon.ico\n\tif (url[1]=='favicon.ico') return;\n\n\t//Установим метку времени\n\tif (myConfig.server.isDebug) {\n\t\tconsole.log('\\nПолучен запрос req.url', req.url);\n\t\tconsole.time('app');\n\t}\n\t\n\t//Вызываем контроллер обработки запроса\t\n\tcontroller(req, res);\n\t\n\t//Выводим общее время\n\tif (myConfig.server.isDebug) console.timeEnd('app');\n};\n//Создаем и запускаем сервер для задачи\nvar server = require('http').createServer(app);\nserver.listen(myConfig.server.port);\n//Отображаем информацию о старте сервера\nif (myConfig.server.isDebug) console.log('Server start on port ' + myConfig.server.port + ' ...');\n```\n## Примеры формирования кода (файл _demo/test.php)\n### Демонстрация операторов цикла foreach...endforeach\n#### Код:\n```HTML+PHP\n\u003c?\n\t$row={key1:1, key2:'text1', key3:2, key4:'text2'};\n?\u003e\n\u003c?php foreach($row as $key=\u003e$value): ?\u003e\n\t\u003cdiv\u003e$key=\u003c?=$key?\u003e $value=\u003c?=$value?\u003e\u003c/div\u003e\n\u003c?php endforeach; ?\u003e\n```\n#### Формирует результат:\n```HTML\n$key=key1 $value=1\n$key=key2 $value=text1\n$key=key3 $value=2\n$key=key4 $value=text2\n```\n### Демонстрация операторов цикла while...endwhile\n#### Код:\n```HTML+PHP\n\u003c?\n\t$i=10;\n?\u003e\n\u003c?php while ($i\u003e3): ?\u003e\n\t\u003cdiv\u003e$i=\u003c?=$i?\u003e\u003c/div\u003e\n\t\u003c?\n\t\t$i--;\n\t?\u003e\n\u003c?php endwhile; ?\u003e\n```\n#### Формирует результат:\n```HTML\n$i=10\n$i=9\n$i=8\n$i=7\n$i=6\n$i=5\n$i=4\n```\n### Демонстрация операторов цикла for...endfor\n#### Код:\n```HTML+PHP\n\u003c?php for($i=0; $i\u003c10; $i++): ?\u003e\n\t\u003cdiv\u003e$i=\u003c?=$i?\u003e\u003c/div\u003e\n\u003c?php endfor; ?\u003e\n```\n#### Формирует результат:\n```\n$i=0\n$i=1\n$i=2\n$i=3\n$i=4\n$i=5\n$i=6\n$i=7\n$i=8\n$i=9\n```\n#### Код:\n```HTML+PHP\n\u003c?php for($i=0; $i\u003c10; $i=$i+2): ?\u003e\n\t\u003cdiv\u003e$i=\u003c?=$i?\u003e\u003c/div\u003e\n\u003c?php endfor; ?\u003e\n```\n#### Формирует результат:\n```\n$i=0\n$i=2\n$i=4\n$i=6\n$i=8\n```\n#### Код:\n```HTML+PHP\n\u003c?php for($i=10; $i\u003e0; $i--): ?\u003e\n\t\u003cdiv\u003e$i=\u003c?=$i?\u003e\u003c/div\u003e\n\u003c?php endfor; ?\u003e\n```\n#### Формирует результат:\n```\n$i=10\n$i=9\n$i=8\n$i=7\n$i=6\n$i=5\n$i=4\n$i=3\n$i=2\n$i=1\n```\n### Демонстрация условных операторов if...elseif...else...endif\n#### Код:\n```HTML+PHP\n\u003c?php for($i=0; $i\u003c10; $i++): ?\u003e\n\t\u003c?php if ($i==0): ?\u003e\n\t\t\u003cdiv\u003e$i=0 Первая строка\u003c/div\u003e\n\t\u003c?php elseif ($i\u003e0 \u0026\u0026 $i\u003c5 ): ?\u003e\n\t\t\u003cdiv\u003e$i=\u003c?=$i?\u003e Cтрока диапазона 1...4\u003c/div\u003e\n\t\t\u003c?php if ($i==2): ?\u003e\n\t\t\t\u003cdiv\u003e...точнее строка 2\u003c/div\u003e\n\t\t\u003c?php elseif ($i==4 ): ?\u003e\n\t\t\t\u003cdiv\u003e...точнее строка 4\u003c/div\u003e\n\t\t\u003c?php else: ?\u003e\n\t\t\t\u003cdiv\u003e...точнее строка 1 или 3\u003c/div\u003e\n\t\t\u003c?php endif; ?\u003e\n\t\u003c?php elseif ($i==9): ?\u003e\n\t\t\u003cdiv\u003e$i=9 Последняя строка\u003c/div\u003e\n\t\u003c?php else: ?\u003e\n\t\t\u003cdiv\u003e$i=\u003c?=$i?\u003e Cтрока диапазона 5...8\u003c/div\u003e\n\t\t\u003c?php if ($i==5): ?\u003e\n\t\t\t\u003cdiv\u003e...точнее строка 5\u003c/div\u003e\n\t\t\u003c?php elseif ($i==7 ): ?\u003e\n\t\t\t\u003cdiv\u003e...точнее строка 7\u003c/div\u003e\n\t\t\u003c?php else: ?\u003e\n\t\t\t\u003cdiv\u003e...точнее строка 6 или 8\u003c/div\u003e\n\t\t\u003c?php endif; ?\u003e\n\t\u003c?php endif; ?\u003e\n\u003c?php endfor; ?\u003e\n```\n#### Формирует результат\n```\n$i=0 Первая строка\n$i=1 Cтрока диапазона 1...4\n...точнее строка 1 или 3\n$i=2 Cтрока диапазона 1...4\n...точнее строка 2\n$i=3 Cтрока диапазона 1...4\n...точнее строка 1 или 3\n$i=4 Cтрока диапазона 1...4\n...точнее строка 4\n$i=5 Cтрока диапазона 5...8\n...точнее строка 5\n$i=6 Cтрока диапазона 5...8\n...точнее строка 6 или 8\n$i=7 Cтрока диапазона 5...8\n...точнее строка 7\n$i=8 Cтрока диапазона 5...8\n...точнее строка 6 или 8\n$i=9 Последняя строка\n```\n### Демонстрация \"передачи\" объекта и функции в отображение\n#### Код:\n```HTML+PHP\n\u003cdiv\u003e\u003c?='Привет, Мир!'?\u003e\u003c/div\u003e\n\u003cbr /\u003e\n\u003cdiv\u003eСписок участников:\u003c/div\u003e\n\u003c!--Таблица--\u003e\n\u003cdiv\u003e----------------------------------\u003c/div\u003e\t\n\u003cdiv\u003e|\u003c?=width_10('ID')?\u003e|\u003c?=width_10('ИМЯ')?\u003e|\u003c?=width_10('ФАМИЛИЯ')?\u003e|\u003c/div\u003e\n\u003cdiv\u003e----------------------------------\u003c/div\u003e\t\n\u003c?php foreach($rows as $key=\u003e$row): ?\u003e\n\t\u003cdiv class=\"\u003c?=$row['user_active'] ? '' : 'no_active'?\u003e\"\u003e|\u003c?=width_10($row['user_id'])?\u003e|\u003c?=width_10($row['user_name'])?\u003e|\u003c?=width_10($row['user_family'])?\u003e|\u003c/div\u003e\n\u003c?php endforeach; ?\u003e\n\u003cdiv\u003e----------------------------------\u003c/div\u003e\t\n```\n#### Формирует результат\n```\nПривет, Мир!\n\nСписок участников:\n----------------------------------\n|        ID|       ИМЯ|   ФАМИЛИЯ|\n----------------------------------\n|        11|    Андрей|    Иванов|\n|       121|      Петр|    Петров|\n|        13|   Алексей|   Сидоров|\n|       142|    Сергей|  Алексеев|\n|        15|    Герман|  Степанов|\n----------------------------------\n```\n## Тестирование\n```\nПример серверного кода в папке \"_demo\".\n```\n### Запуск\n```\nnode server\n```\n### Результат\n```\nhttp://localhost:2020\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgerman-stepanov%2Fnodejs-output-view","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgerman-stepanov%2Fnodejs-output-view","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgerman-stepanov%2Fnodejs-output-view/lists"}