Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jxbc/bladejs
Super fast web-server on Fastify with Hot Reload, templates & etc!
https://github.com/jxbc/bladejs
bladejs fastify js
Last synced: 2 days ago
JSON representation
Super fast web-server on Fastify with Hot Reload, templates & etc!
- Host: GitHub
- URL: https://github.com/jxbc/bladejs
- Owner: jxbc
- Created: 2024-12-20T05:54:31.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2025-01-14T01:40:23.000Z (5 days ago)
- Last Synced: 2025-01-14T02:32:06.630Z (5 days ago)
- Topics: bladejs, fastify, js
- Language: JavaScript
- Homepage:
- Size: 512 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# Blade.js - super fast webserver with hot reload/auto reload
![Fastify](https://img.shields.io/badge/fastify-%23000000.svg?style=for-the-badge&logo=fastify&logoColor=white) ![Nodejs](https://img.shields.io/badge/NodeJS->=_v20-green?style=flat) ![Nodejs](https://img.shields.io/badge/NodeJS_Legacy_Support->=_v16-blue?style=flat)## Что такое Blade.js?
Blade это библиотека для создания быстрых веб-серверов. В основном рекомендуема для тестирования или разработки небольших сайтов/приложений. Под капотом Blade.js скрывается производительный веб-сервер от Fastify.В случае, если вам нужен небольшой сайт с набором нужных функций в виде SSR и тд, Blade решает проблему тяжелых библиотек/фреймворков (Next, Nest), у которых много нужных, но и зачастую ненужных методов, а еще миллионы зависимостей из-за которых может что-то сломаться в самый неподходящий момент.
У Blade.js все просто - из коробки вы получаете всё самое основное для быстрой разработки. По сути Blade.js это обертка над Fastify.
## Возможности
- [x] Самый быстрый REST API
- [x] SSR Render (шаблонитизатор)
- [x] CORS метод для REST API
- [x] devMode для авто-обновления страницы при внесении изменений
- [x] Создание файлового сервера
- [x] База данных - SimpleDB ([изучить](https://github.com/jxbc/BladeJS/wiki/SimpleDB-by-Blade))
- [ ] Cloudflare Tunnel для быстрого тестирования
- [ ] Server Sent Events с одной строчки кодаИ много других возможностей еще не раскрыто, но в скором...
Все доступные методы описаны здесь >> [Методы BladeJS](https://github.com/jxbc/BladeJS/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B)## Производительность
Самым удачным опытом оказалось попробовать веб-сервер на Fastify. Он легкий, мощный, имеет схему и типизацию запрос/ответ, а ещё очень быстрый. Ни один веб-сервер на Node.js не способен обрабатывать такое количество запросов, как Fastify. **70K+ запросов в секунду**!
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/04c/6f1/068/04c6f1068de559d454a233a067dff740.png)
> Fastify способен потягаться в бенчмарках с самыми быстрыми веб-серверами на других языках, более низкоуровневых. НО я по прежнему люблю и Koa, он так же хорош, если нужна производительность на дистанции.## Для чего нужен Blade?
Blade решает проблему написания чистых шаблонов на HTML/CSS/JS. А так же возможность использовать Hot Reload сервер и фронт.## Как начать пользоваться?
1. Клонируйте git
2. Выполните установку Node.js (если его нет)
3. Откройте cmd, перейдите в директорию клонированного git и выполните команды:```bash
npm init -y
```
А затем:```bash
node install
```
Команды выше выполнят инициализацию проекта и установят необходимые зависимости для Bladejs.
После выполненных манипуляций введите следующую команду:```bash
node watch
```**Готово!** watch следит за изменениями в файлах для обновления запущенного приложения. Теперь вы можете разрабатывать сайты/приложения в режиме Live не пользуясь сторонними "тяжелыми" библиотеками. Hot Reload для HTML/CSS/JS работает только если в файле index.js была инициализация класса с переданным объектом `{ devMode: 1 }`
## Давайте начнем!
Давайте создадим самый простой веб-сервер, где отрендерим данные с сервера в index.html
```javascript
import blade from './modules/blade.js'
const Blade = new blade({devMode: 1}) //devMode включает в себя Hot Reload для html/css/js
const port = 3000
Blade.get('/', (req, res) => {
return res.render('index.html', {name: 'John'})
})Blade.static('static') //Регистрируем папку для доступа к файлам статического контента (css, js, svg & etc)
Blade.run(port) //Запускаем веб-сервер
console.log(`Blade Started!`)
```
Круто, не так ли?