Telegram Web Link
Раз уж начал постить в канал, то расскажу свою недавнюю боль.

Поднимал SSR проект на fastify, очень хотелось запустить его на serverless платформе. Чуть-чуть поресерчил и решил снова воспользоваться Cloudflare Workers.

Во первых, документация Cloudflare конечно не плоха, но её очень не хватает, а в некоторых случаях было прям больно. Часть гайдов лежит в блоге, где 2 версия wrangler, а поэтому несовместимы с 3 версией.

Во вторых, если погуглить fastify on cloudflare workers, то вывалится fastify-edge, который experimental, а также гайд fastify serverless.

fastify-edge не получилось завести, все время вываливались ошибки из кишков.
А в гайде есть все платформы, кроме cloudflare, видимо не просто так.

Потом еще подкинул проблем telefunc, о котором я уже писал, от автора vike. Он использует динамический import('node:path'), который не поддерживается Cloudflare Workers.

В общем, грусть печаль.
По итогу запустил на fly.dev, пока ищу альтернативу.
Одним из кандидатов в универсальные серверные javascript-фреймворки стал Hono.dev.

Запускается на всех платформах: serverless, deno, bun, nodejs.
Имеет весьма неплохую систему композиции роутов.
В комплекте куча миддлвар разной степени полезности.
Даже есть простой jsx renderer, чтобы React не тащить.

В качестве renderer я хочу использовать vike.dev.
И hono продолжит мне помогать, так как предлагает RPC клиент взамен fetch/axios/...
Из браузера можно делать запросы к API-роутам hono через hono/client, с проверкой типов в рантайме.


// Server Side
import { Hono } from 'hono'
import { zValidator } from '@hono/zod-validator'
import { z } from 'zod'

const app = new Hono()

app.get(
'/hello',
zValidator(
'query',
z.object({ name: z.string() })
),
(c) => {
const { name } = c.req.valid('query')
return c.json({
message: `Hello! ${name}`,
})
}
)



// Browser Side
import type { AppType } from './server'
import { hc } from 'hono/client'

const client = hc<AppType>('/api')
const res = await client.hello.$get({
query: {
name: 'Hono',
},
})


Типы для typescript выводятся автоматически, да еще и соответствуют структуре серверного роутинга.
Выглядит очень интересно.
Вы наверняка заметили, что с каждым месяцем frontend-разработка и IT переживает развитие. Я подписан на кучу каналов. Стараюсь смотреть на изменяющийся IT с разных сторон.

Саша имеет опыт более 11 лет во frontend и успел поработать на проектах разной сложности и сферах: в медицине, образование, путешествие, финтех.

Я периодически почитываю его канал и нахожу для себя полезности. Вот например. А еще Саша много рассказывает о своем профессиональном опыте тимлида и увлечениях вне работы, докладах на devfest2023 и "it и точка".

https://www.tg-me.com/front_everyday
Пользуюсь Cloudflare какое-то время, но чем дальше, тем больше он меня расстраивает.

Отсутствует --verbose для wrangler скрипта. Если валится ошибка, то выяснить причину адски сложно, так как детальных логов нет, просто 800000000000 ошибка и всё.

Очень странная работа Cloudflare Workers с env перемеными при деплое, иной раз секреты просто отсутствуют в приложении.

Пару лет назад, я уже использовал Cloudflare и опыт был крайне приятный, все работало само, ничего настраивать не надо.

Сегодня же в очередной раз, всё легло… за последний месяц уже 4 раз.

Куда уезжать?
Vercel и AWS не предлагать — у одного политика отношения к юзерам крайне неприятная, а у другого yaml конфиги на 300-400 строк и десяток сервисов для простейших вещей.
Ну интересно, насколько этот SearchGPT будет лучше того же Perplexity
https://github-roast.pages.dev/

Справедливо конечно)
Тем временем, Microsoft встроили Azure AI в Github.

Пишут, что можно будет во время разработки пользоваться широким набором LLM бесплатно.

Видимо, хотят отобрать хлеб у huggingface.co
Ладно. Мне телега просто не дает зарегать юзернейм с _.
А кто-то умный уже зарегал и думал, что мне есть дело
Сова пишет…
Ладно. Мне телега просто не дает зарегать юзернейм с _. А кто-то умный уже зарегал и думал, что мне есть дело
Все оказалось куда проще и прозаичнее: я создал слишком много публичных каналов и групп, занял много username.
Telegram не показывает вменяемую ошибку, лишь Link invalid.
Я уже привык, что навигация имеет с двух сторон экрана.
Обычно сверху и слева.
Docusaurus популяризировал Table of contents справа.

А тут Nodejs решили сделать навигацию с каждой из 4 сторон.

Сверху главное меню, слева навигация по секции, справа навигация по странице, снизу…
а что снизу?

Клик на About Node.js просто перезагружает страницу.
Клик на Home делает ровно то же самое, что и клик на логотип…
Тем временем, появилась новая библиотека для валидации данных, а именно для сборки JSON Schema

https://github.com/lukeed/tschema

К тому же теперь у нас есть лейбл
e18e-approved
🤔
Please open Telegram to view this post
VIEW IN TELEGRAM
Сова пишет…
Базовый шаблон vike+react+effector - умеет грузить данные через +data - реюзает vike-react - не имеет документации, пока что Буду улучшать и писать доку исходя из фидбека. Потрогать можно тут: https://github.com/effector/vike-react-template
Добавил некоторое количество документации к шаблону, а также комменты в код.

Если говорить о community standards, то можно еще много чего добавить в репозиторий, чтобы он стал лучше.

Предлагаю двигаться итеративно.
Начать можно с issues и pull requests.

github.com/effector/vike-react-template
Этот пост должен быть тысячным!
2025/07/05 11:42:51
Back to Top
HTML Embed Code: