Wegrzynski
Wegrzynski
#programowanie #javascript #nodejs #embedded #linux

Planuję zrobić urządzenie, które na SoC (typu Raspberry Pi albo raczej tańsze/słabsze) z jakimś Linuxem na pokładzie będzie miało postawiony web server z stronką WWW, na której będą wizualizowane i gromadzone dane typu wskazania jakiś pomiarów, wykresy itd. - i będzie całkiem sporo tego.

O ile sprawy niskopoziomowe ogarniam jako tako, to programowanie webowe w ogóle i będę się musiał tego nauczyć. I teraz pytanie - jaki stackt technologiczny byście polecili? Podstawowy warunek - musi zajmować mało miejsca i być wydajny, ponieważ ma działać na skromnym systemie wbudowanym.

Sprawy niskopoziomowe i baza danych to dla mnie wiadome - C, Lua i SQLite.

Co z aplikacją webową? Myślałem nad:
- backend - node.js (jakiś framework...? nigdy z tego typu rzeczy niekorzystałem...)
- frontend - React

Z góry Bóg zapłać za wszelkie rady i wskazówki ( ͡° ͜ʖ ͡°)
  • Najlepsze
  • Wszystkie komentarze
kutafonixor
kutafonixor
@Wegrzynski: a może po prostu grafana do wyświetlania wykresów? W grafanie da się wybrać różne data source a wykresy mogą być praktycznie dowolne
WypadlemZKajaka
@Wegrzynski do takich zastosowań nodejs + react będzie w sam raz
UrimTumim
Z rad to polecalbym do wykresów chart.js co do tego w czym to będziesz robił, to moim zdaniem bez znaczenia;p może być node+ react/vue może być oldschoolowo w PHP + HTML ;) jeśli to ma być czysto domowy projekt dla Ciebie to nie wiem czy bym nie olał frameworkow;pc
w.....y
@Wegrzynski: zastanów się czy jest konieczność rozdzielania backendu i frontendu.
Summar
@Wegrzynski: możesz użyć arduino i johny-five i po prostu postawić restowe api w node/express, frontend obojętnie w czym, sam też miałem taki pomysł smart mieszkania ( ͡° ͜ʖ ͡°)
wisniad
wisniad
@Wegrzynski: ja zamiast sqlite wziąłbym postgres lub mysql,
Backend - spring boot
Front - angular

Angular da się zagnieździć w aplikacji springowej i wtedy jest tylko jedna apka
WewnetrznySpokoj
@Wegrzynski: Jeśli chodzi o framework do Node.js to polecam Koa. Natomiast co do frontu - React jest moim zdaniem piękny w swojej prostocie, ale znam wielu programistów z mocnym backgroundem w bardziej tradycyjnych językach i frameworkach, którzy absolutnie go nienawidzą. Dla takich ludzi Angular jest dużo bardziej przystępny.
Wegrzynski
Wegrzynski
Wegrzynski Autor
1
może być node+ react/vue może być oldschoolowo w PHP + HTML ;)


@UrimTumim: Ma byś nowocześnie, to drugie odpada :D

jeśli to ma być czysto domowy projekt dla Ciebie to nie wiem czy bym nie olał
daczka92
@Wegrzynski: jak ma być szybko to ja bym postawił flaska i jakiś chartsjs. Jak ma być ładnie to react albo angular ale to już więcej roboty zeby wyświetlać parę wykresów i nic więcej. Ale jak piszą wyżej. Jakas grafana czy coś takiego gotowego i śmiga.
WewnetrznySpokoj
A można nie rozdzielać? Z tego co widzę to node.js może robić za jedno i drugie, tak? To w takim wypadku react będzie potrzebny tylko do UI czyli tego co zobaczymy w przeglądarce czy coś pomieszałem?


@Wegrzynski: SSR vs CSR. Node nie może robić za jedno i drugie bo to runtime serwerowy. Możesz w Node generować całe strony HTML (SSR), tylko wtedy każde przejście do innej zakładki albo jakakolwiek inna
c.....i
c.....i
@Wegrzynski: jak chcesz się nauczyć czegoś nowego to bym wziął Reacta do UI i jakąś bibliotekę do wykresów. Myślę że sporą pomocą będzie jak wrzucisz w Google "react Smart Home dashboard" i zobaczysz, jak inni do tego podchodzili. Ogólnie fajny pomysł, co będziesz monitorować?
oMatej
oMatej
@WewnetrznySpokoj zastosowanie SSR nie oznacza, że przejście do innych podstron będzie wymagało przeładowania strony. SSR powinno generować pierwszą odwiedzoną stronę, ale nawigacja po tejże powinna odbywać się po stronie klienta, tak jak w przypadku CSR.
WewnetrznySpokoj
@oMatej: To co opisujesz to hybryda. Przy czystym SSR z definicji wszystko renderuje serwer a komunikacja odbywa się za pomocą formularzy - tak jak np. klasyczne appki typu forum dyskusyjne.
oMatej
oMatej
@WewnetrznySpokoj nie. To co opisuję to SSR. SSR oznacza, że strona /a, /b, itd., może być wyrenderowana na serwerze, jeśli serwer otrzyma zapytanie pod taki URI. Ale nie oznacza to, że nawigacja między tymi stronami musi się również odbywać z udziałem serwera (poza dociągnięciem ewentualnych danych).

https://developers.google.com/web/updates/2019/02/rendering-on-the-web#rehydration

W przypadku "hybrydy" serwer nie byłby w stanie wyrenderować strony /b i zwracałby pusty dokument HTML.
WewnetrznySpokoj
@oMatej: SSR + Rehydration to właśnie hybryda. Jeśli możesz przejść z /a do /b bez udziału serwera (poza dociągnięciem danych) to wykonujesz renderowanie po stronie klienta, CSR. Nawet to co podlinkowałeś mówi wprost:

Often referred to as Universal Rendering or simply “SSR”, this approach attempts to smooth over the trade-offs between Client-Side Rendering and Server Rendering by doing both


EDIT: A kawałek wyżej masz opisane jak wygląda czysty SSR:

Server
oMatej
oMatej
@WewnetrznySpokoj no i właśnie "doing both" oznacza SSR. SSR = Server Rendering + CSR.
WewnetrznySpokoj
@oMatej: To jak w takim razie nazwałbyś aplikację typu phpBB? SSR nie, bo nie ma rehydracji.
Pieczor
@Wegrzynski: ja na raspberry pi kiedyś zrobiłem apkę w Endify i działało nawet na kubernetes :) tylko jeszcze mi dużo dokumentacji brakuje :D tam stack jest Node.js + Vue.js