Dużo czytałem o Nodejs i jego frameworkach, a ostatnio ukończyłem moją pierwszą pełną nakładkę na javascript (używając Angularjs).
Zdecydowałem, że mój następny projekt dla zwierzaków będzie przygodą Nodejs przy użyciu jednego z tych dwóch frameworków:
Czytałem o obu, ale nadal nie do końca rozumiem ich różnice i dlaczego powinienem wybrać jedno nad drugim. Więc proszę, załóż swój najlepszy kapelusz sprzedawcy, wybierz ramę i sprzedaj mi.
Niektóre funkcje, których potrzebuję do mojego projektu zwierzaka to:
- Wyniki na żywo
- Wątki podobne do Reddita, w czasie rzeczywistym
- Edycja strony podobna do Wikipedii
- Użytkownicy / role
javascript
node.js
model-view-controller
meteor
sails.js
pedropeixoto
źródło
źródło
Odpowiedzi:
Nie mogę wypowiadać się w imieniu Meteor, ale mogę pomóc w przedstawieniu informacji o Sailsach, ponieważ je stworzyłem.
tldr; Sails nie jest panaceum na wszystkie problemy w sieci - ale uważam, że Node.js tak. Celem Sails jest zapewnienie praktycznej struktury do tworzenia kompletnych, skalowalnych, przyjaznych dla początkujących i przyjaznych dla przedsiębiorstw aplikacji opartych na node.js. Zacząłem Balderdash od pytania „Czy możemy używać Node.js do wszystkiego?”. Odpowiedzią są żagle.
Z naszych nowych dokumentów :
Kilka lat temu zobowiązałem się używać Node.js do wszystkiego - to była miłość od pierwszego wejrzenia . Zbudowałem Sails na Express i Socket.io ponieważ były (i nadal są) najbardziej ugruntowanymi modułami Node w swoich przypadkach użycia. Kod obsługi żądań w Sails jest zgodny z Express, z dodatkową zaletą niejawnej obsługi Socket.io.
Sails jest zaprojektowany tak, aby był kompatybilny z dowolną strategią budowania front-endu (-ów) w Angular, Backbone, iOS / ObjC, Android / Java, a nawet oferując surowy interfejs API do wykorzystania przez inną usługę internetową lub społeczność programistów. Jeśli w końcu zmienisz swoje podejście (np. Przejdziesz z Backbone na Angular) lub całkowicie zbudujesz nowy front-end (np. Zbudujesz natywną aplikację na Windows Phone), Twoja aplikacja Sails będzie nadal działać. Jak być może już wiesz, niektórzy nazywają to podejście architekturą zorientowaną na usługi lub SOA ( Joe McCann ma świetną prezentację na ten temat).
Z tego samego powodu Sails zachowuje inne znane konwencje tworzenia serwerów internetowych - standardową strukturę MVC, możliwość tworzenia czystych interfejsów API i podstawowych modułów, które są otwarte, konfigurowalne, rozszerzalne, a nawet wymienialne. Oznacza to, że żagle można dostosować do potrzeb użytkowników na tak niskim poziomie, jak jest to konieczne.
W 2013 r. Popularność platformy znacznie wzrosła, a nasza działalność konsultingowa wzrosła. Reszta głównych opiekunów i ja rozszerzyliśmy naszą koncentrację na jak najszybszym i najprostszym tworzeniu zaplecza. Powiązane aspekty Sails, takie jak haczyki (wtyczki), testowanie i dokumentacja, przeszły długą drogę w ciągu ostatniego roku dzięki wysiłkom zarówno naszego podstawowego zespołu, jak i (stale rozwijającej się) społeczności Sails. Jest wiele elementów z map drogowych, nad którymi nadal pracujemy, ale uważam, że Sails jest obecnie najlepszą opcją do stabilnego, łatwego w utrzymaniu rozwoju MVC w Node. Reszta zespołu i ja jesteśmy zaangażowani w jego ciągłe utrzymanie i rozwój funkcji, a ponieważ używamy go we wszystkich naszych projektach klientów, nigdzie się nie wybiera.
Jestem całkowicie przekonany, że Sails będzie najlepszym frameworkiem internetowym, ale nigdy kosztem Node.js. Główny zespół i ja jesteśmy nieustannie oddani ulepszaniu ekosystemu Node, a to oznacza przyjęcie NPM, wykorzystanie istniejących technologii Node i najlepszych praktyk itp. Nie tylko dlatego, że ma to większy sens, ale dlatego, że jesteśmy programistami Node.js. Motywacją do wszystkich naszych wysiłków jest uczynienie Node bardziej dostępnym, a nie zastępowanie go. Tak więc, jeśli w jakimś dziwnym, równoległym wszechświecie, miałbym faustowski wybór między konwersją Sails na inny język lub całkowitym porzuceniem Sails, ale wciąż mogąc używać Node, wybrałbym to drugie.
Dodatkowe zasoby:
FAQ | Żagle 101 | Oryginalny screencast | Przewodnik po wkładach | Przepełnienie stosu
Grupa Google | Mapa drogowa | IRC: #sailsjs na Freenode | Stan kompilacji
źródło
Zbudowałem kilka projektów z Meteor i nie pracowałem jeszcze z Sails. Więc moja opinia będzie z pewnością stronnicza, mam nadzieję, że i tak będzie pomocna.
Budowanie front-endu
Meteor zapewnia własny front-end framework o nazwie Blaze - który zostanie dołączony do nadchodzącej wersji 0.8. Meteor dba o powiązanie danych z Twoich kolekcji z Twoimi widokami. Z tego powodu nie musisz się martwić o nakazanie swoim widokom aktualizacji, po prostu to robią.
Z drugiej strony Sails zapewnia tylko strukturę zaplecza i będziesz musiał przynieść własną strukturę front-end.
W przeciwieństwie do większości frameworków Node.js, Meteor jest synchroniczny
Meteor działa w pętli i jeśli chcesz korzystać z pakietów Node.js, będziesz musiał wykonać dodatkową pracę, aby upewnić się, że działają poprawnie w Meteor.
Sails wydaje się być prostym frameworkiem MVC Node.js, więc nie powinno być nic zbyt zaskakującego, gdy się do niego przyjrzysz.
Powinieneś używać MongoDB z Meteor
Tak, możesz korzystać z innych baz danych z Meteor, ale nie mają one podobnego wsparcia jak MongoDB. Podczas gdy w przypadku Sails wygląda na to, że mają ORMy dla kilku baz danych.
Wydajność
W przypadku zastosowań na dużą skalę Meteor może nie działać dobrze . Trwa wiele pracy, aby rozwiązać ten problem i do końca 2014 roku możemy spodziewać się skalowania rozwiązań dla Meteor.
Stabilność
Meteor jest wciąż bardzo świeży i jeszcze nie osiągnął 1.0. Należy spodziewać się wprowadzenia pewnych zmian w następnych kilku wydaniach, które zerwą wsteczną kompatybilność. Jeśli zaczynasz z nim jak najszybciej, możesz rozważyć użycie gałęzi 0.8-rc0. Biorąc to pod uwagę, niektóre funkcje w przygotowaniu są naprawdę świetne i sprawią, że wersja 1.0 będzie bardzo kusząca.
Końcowe przemyślenia?
Lubię Meteor ze względu na jego dziwactwa. Będziesz musiał nauczyć się robienia rzeczy w Meteor, ale kiedy zaczniesz to robić, poczujesz, że wypiłeś pomoc kool. Ze względu na sposób, w jaki dane są powiązane z widokami, linie między serwerem a klientem nie są odległe. Meteor reprezentuje zmianę paradygmatu w architekturze aplikacji i jeśli jeszcze go nie wypróbowałeś, poleciłbym go.
PS Zapoznaj się z mapą drogową, aby poczuć, co się wydarzy.
źródło
npm
pakietów z meteor: meteorhacks.com/complete-npm-integration-for-meteor.htmlMogę tylko wypowiedzieć się na temat żagli. Jestem niezwykle doświadczonym programistą Javascript i od lat 90-tych tworzę wbudowane aplikacje do dekoderów oparte na Javascript.
Rzeczy, które działały naprawdę dobrze - Pierwsze kroki były świetne i czułem się bardzo wspierany przez opublikowane materiały - Krzywa uczenia się była bardzo krótka, a za żaglami jest zdrowa społeczność - Po początkowej nauce bardzo łatwo jest szybko być kreatywnym
Rzeczy, które można by poprawić - Złożone struktury danych są trudne do wdrożenia - Integracja Passport.js była bolesna, ponieważ nie ma czystych materiałów referencyjnych
Zalecenia - koder Ponzi ma świetny samouczek i naprawdę pomógł mi w rozpoczęciu https://www.youtube.com/user/ponzicoder - Wiedza o ekspresach i wodnicach pomoże, gdy podejmiesz bardziej złożone wyzwania związane z danymi
Ogólnie polecam żagle.
źródło
passport.use('local-login', new LocalStrategy({ usernameField : 'email', passwordField : 'password', passReqToCallback : true // allows us to pass in the req from our route (lets us check if a user is logged in or not) },
Obecnie używam Meteor i nie używałem Sails.js.
Praca z Meteor była niezwykle przyjemna i myślę, że byłby to doskonały wybór dla aplikacji internetowych działających w czasie rzeczywistym. Jeśli chodzi o użytkowników / role, możesz sprawdzić zintegrowany pakiet kont , a także przeszukać Atmosferę pod kątem ról / pakietów uprawnień wniesionych przez społeczność.
Ostatecznie polecam wypróbowanie małego projektu z obiema technologiami i zobaczenie, które lubisz bardziej.
źródło