Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

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!

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!`)
```
Круто, не так ли?