Sails.js 대 Meteor-둘 다의 장점은 무엇입니까? [닫은]


81

저는 Nodejs와 그 프레임 워크에 대해 많이 읽었으며 최근에 첫 번째 전체 자바 스크립트 프론트 엔드 (Angularjs 사용)를 완료했습니다.

다음 두 가지 프레임 워크 중 하나를 사용하여 다음 애완 동물 프로젝트가 Nodejs 모험이 될 것이라고 결정했습니다.

나는 두 가지 모두에 대해 읽었지만 여전히 그 차이점을 이해하지 못하고 왜 다른 하나를 사용하기로 선택해야합니까? 그러니 최고의 세일즈맨 모자를 쓰고 틀을 골라 팔아주세요.

애완 동물 프로젝트에 필요한 몇 가지 기능은 다음과 같습니다.

  • 라이브 스코어
  • Reddit과 유사한 스레드, 실시간
  • Wikipedia와 유사한 페이지 에디션
  • 사용자 / 역할

1
이 링크를 확인하십시오 : vschart.com/compare/meteor-web-framework/vs/sails-js . 도움이 될 수 있습니다 !!
tuchi35

답변:


138

Meteor에 대해 말할 수는 없지만 Sails를 만들었 기 때문에 Sails에 대한 약간의 배경 지식을 제공 할 수 있습니다.

tldr; Sails는 웹의 모든 문제에 대한 만병 통치약은 아니지만 Node.js는 그렇다고 믿습니다. Sails의 목표는 node.js에 구축 된 완전하고 확장 가능하며 시작 및 엔터프라이즈 친화적 인 애플리케이션을 개발하기위한 실용적인 프레임 워크를 제공하는 것입니다. 저는 "모든 것에 Node.js를 사용할 수 있습니까?"라는 질문으로 Balderdash 를 시작했습니다 . 돛이 답입니다.


우리에서 새 문서 :

물론 Sails는 웹 프레임 워크입니다. 그러나 물러서십시오. 그게 무슨 뜻입니까? 때때로 "웹"을 지칭 할 때 "프런트 엔드 웹"을 의미합니다. 웹 표준, HTML 5 또는 CSS 3과 같은 개념을 생각합니다. 그리고 Backbone, Angular 또는 jQuery와 같은 프레임 워크. Sails는 "그런 종류"의 웹 프레임 워크가 아닙니다. Sails는 Angular 및 Backbone과 잘 작동하지만 이러한 라이브러리 대신 Sails를 사용하지 않습니다.

반면에 "웹 프레임 워크"에 대해 말할 때 "백엔드 웹"을 의미하기도합니다. 이것은 REST, HTTP 또는 WebSockets와 같은 개념을 불러 일으 킵니다. Java, Ruby 또는 Node.js와 같은 기술을 기반으로합니다. "백엔드 웹"프레임 워크는 API 구축, 데이터베이스와 상호 작용, HTML 파일 제공, 수십만 명의 동시 사용자 처리와 같은 작업을 수행하는 데 도움이됩니다. Sails는 "그런 종류의"웹 프레임 워크입니다.

몇 년 전에 Node.js를 모든 것에 사용하겠다고 약속했습니다 . 첫눈에 반했습니다 . 저는 ExpressSocket.io 위에 Sails를 구축 했습니다. 왜냐하면 그것들은 각각의 사용 사례에 대해 가장 잘 확립 된 노드 모듈 이었기 때문입니다. Sails의 요청 처리 코드는 Socket.io에 대한 암시 적 지원의 추가 이점과 함께 Express와 호환됩니다.

Sails는 Angular, Backbone, iOS / ObjC, Android / Java에서 프런트 엔드를 구축하거나 다른 웹 서비스 또는 사용자가 사용할 원시 API를 제공하기위한 모든 전략과 호환되도록 설계되었습니다. 개발자 커뮤니티. 접근 방식을 변경하거나 (예 : Backbone에서 Angular로 전환) 새로운 프런트 엔드를 완전히 구축 (예 : Windows Phone 기본 앱 구축)하는 경우에도 Sails 앱은 계속 작동합니다. 이미 알고 계시 겠지만, 어떤 사람들은이 접근 방식을 서비스 지향 아키텍처 (SOA)라고 부릅니다 ( Joe McCann 은이 주제에 대한 훌륭한 자료를 가지고 있습니다.)

같은 맥락에서 Sails는 표준 MVC 구조, 깨끗한 API를 생성 할 수있는 기능, 개방적이고 구성 가능하며 확장 가능하며 스왑 가능한 핵심 모듈과 같은 웹 서버 구축을위한 다른 익숙한 규칙을 유지합니다. 이것은 Sails가 사용자의 필요에 따라 필요한만큼 낮은 수준으로 맞춤화 될 수 있음을 의미합니다.

2013 년에 프레임 워크는 엄청난 인기를 얻었으며 컨설팅 비즈니스도 성장했습니다. 나머지 핵심 메인테이너들과 저는 백엔드 개발을 가능한 한 빠르고 간단하게 만드는 데 초점을 넓혔습니다. 후크 (플러그인), 테스트 및 문서와 같은 Sails의 관련 측면은 모두 지난 한 해 동안 우리의 핵심 팀과 (계속 확장되는) Sails 커뮤니티의 노력 덕분에 먼 길을 걸어 왔습니다. 아직 작업중인 로드맵 항목이 많이 있지만 Sails는 현재 Node에서 안정적이고 유지 관리 가능한 MVC 개발을위한 최상의 옵션이라고 생각합니다. 나머지 팀과 저는 지속적인 유지 관리 및 기능 개발에 전념하고 있으며 모든 고객 프로젝트에 사용하기 때문에 아무데도 가지 않습니다.

저는 Sails를 최고의 웹 프레임 워크로 만들기 위해 최선을 다하고 있지만 Node.js를 희생하지 않았습니다. 핵심 팀과 저는 Node 생태계의 향상에 끊임없이 전념하고 있으며 이는 NPM을 수용하고 기존 Node 기술과 모범 사례 등을 활용하는 것을 의미합니다. 더 합리적 일뿐만 아니라 우리가 Node.js 개발자이기 때문입니다. 우리의 모든 노력에 대한 동기는 Node를 대체하는 것이 아니라 접근성을 높이는 것입니다. 따라서 이상한 평행 우주에서 Sails를 다른 언어로 변환하거나 Sails를 완전히 버리지 만 여전히 Node를 사용할 수있는 Faustian 선택권이 주어진다면 후자를 선택합니다.


추가 자료 :

FAQ | 돛 101 | 오리지널 스크린 캐스트 | 기여 가이드 | 스택 오버플로

Google 그룹 | 로드맵 | IRC : Freenode의 #sailsjs | 빌드 상태


2
: 여기이 질문에 또 다른 좋은 관점 (첫 번째 대답)에 란 linkedin.com/groups/...
mikermcneil


@AaronShafovaloff 머리를 올려 주셔서 감사합니다-여기에 업데이트 된 링크가 있습니다 : sailsjs.org/get-started
mikermcneil 2015-06-28

30

Meteor로 몇 가지 프로젝트를 만들었고 아직 Sails와 함께 일하지 않았습니다. 그래서 제 의견은 확실히 편향 될 것이고 어쨌든 도움이되기를 바랍니다.

프런트 엔드 구축

Meteor는 곧 출시 될 0.8 릴리스에 포함될 Blaze-라는 자체 프런트 엔드 프레임 워크를 제공합니다. Meteor는 컬렉션의 데이터를 뷰에 바인딩합니다. 이 때문에 뷰를 업데이트하는 것에 대해 걱정할 필요가 없습니다.

반면에 Sails는 백엔드 프레임 워크 만 제공하며 사용자는 자체 프론트 엔드 프레임 워크를 가져와야합니다.

대부분의 Node.js 프레임 워크와 달리 Meteor는 동기식입니다.

Meteor는 루프에서 실행되며 Node.js 패키지를 사용 하려면 Meteor에서 제대로 작동하는지 확인하기 위해 몇 가지 추가 작업 을 수행 해야합니다.

Sails는 간단한 MVC Node.js 프레임 워크 인 것처럼 보이므로 살펴볼 때 너무 놀라운 것은 없습니다.

Meteor와 함께 MongoDB를 사용해야합니다.

예, Meteor와 함께 다른 데이터베이스를 사용할 수 있지만 MongoDB와 거의 동일한 지원이 없습니다. Sails의 경우 두 개의 데이터베이스에 대한 ORM이있는 것처럼 보입니다.

공연

대규모 응용 프로그램의 경우 Meteor 가 제대로 작동하지 않을 수 있습니다 . 이 문제를 해결하기 위해 많은 작업이 진행 중이며 2014 년 말까지 Meteor를위한 확장 솔루션이있을 것으로 예상 할 수 있습니다.

안정

Meteor는 여전히 매우 신선하고 아직 1.0에 도달하지 않았습니다. 이전 버전과의 호환성을 깨뜨리는 다음 몇 번의 릴리스에서 일부 변경이 이루어질 것으로 예상해야합니다. 최대한 빨리 시작하는 경우 0.8-rc0 브랜치를 사용하는 것이 좋습니다. 즉, 파이프 라인의 일부 기능은 정말 훌륭하고 1.0 버전을 매우 매력적으로 만들 것입니다.

마지막 생각들?

나는 그것의 특이성 때문에 Meteor를 좋아한다. Meteor의 방식을 배워야하지만 일단 시작하면 쿨 에이드를 마신 것처럼 느껴집니다. 데이터가 뷰에 바인딩되는 방식 때문에 서버와 클라이언트 사이의 선이 멀지 않습니다. Meteor는 애플리케이션 아키텍처의 패러다임 전환을 나타내며 아직 시도하지 않았다면 권장합니다.

추신 : 로드맵 을 확인하여 앞으로 나올 일에 대해 알아보십시오.


5
nodejs 파이버에 익숙하지 않은 사람들에게 잘못된 인상을 줄 수 있으므로 "meteor is synchronous"문을 수정하는 것이 좋습니다. Meteor는 Node.js에서 실행되므로 이벤트 기반의 비 차단 이점을 계속 얻을 수 있습니다. Meteor는 노드 Fiber를 투명하게 통합하므로 서버 측 코드를 기존 콜백으로 분할하는 대신 선형 실행 모델로 작성할 수 있습니다. 이것은 npmmeteor과 함께 패키지 를 사용하는 것과 관련하여 가장 좋은 참조 일 것입니다 : meteorhacks.com/complete-npm-integration-for-meteor.html
alanning

Alanning에게 감사합니다. 귀하의 의견을이 응답에 통합하겠습니다.
MSaforrian 2014 년

8
한 가지 중요한 점은 sails.js는 백엔드 전용이고 meteor는 백엔드와 쉽게 작업 할 수있는 전체 프론트 엔드 자바 스크립트 프레임 워크를 제공한다는 것입니다.
Michael

알려 주셔서 감사합니다, @Michael. Sails.js와 Meteor는 실제로 경쟁하지 않습니다. Sails.js는 Django, Rails, Express 등의 대신 사용할 수있는 Node.js 용 백엔드 프레임 워크 인 반면 Meteor는 방법에 대한 새로운 사고 방식입니다. 내가 :) 정말 BTW 냉각 생각 - 아래로 반응 애플리케이션 상단 구축
mikermcneil

검토 한 지 4 년이 넘은 댓글을 업데이트 하시겠습니까? 나는 확실히 새로운 게임 변경 유성 1.7에 대한 의견을 원합니다 ..
Shyam

19

나는 돛에 대해서만 의견을 줄 수 있습니다. 저는 경험이 많은 Javascript 개발자이며 90 년대부터 Javascript를 기반으로 구축 된 임베디드 셋톱 박스 애플리케이션을 구축해 왔습니다.

정말 잘 된 일들 -시작하기가 좋았고 출판 된 자료들에 큰지지를 받았다고 느꼈습니다-학습 곡선이 매우 짧았고 돛 뒤에 건강한 커뮤니티가 있습니다-초기 학습 후에는 빠르게 창의력을 발휘하는 것이 매우 쉽습니다

개선 할 수있는 사항 -복잡한 데이터 구조를 구현하기 까다 로움-명확한 참조 자료가 없어 Passport.js 통합이 힘들었습니다.

권장 사항 -Ponzi coder는 훌륭한 튜토리얼을 제공하며 https://www.youtube.com/user/ponzicoder를 시작 하는 데 정말 도움이되었습니다. -Express 및 Waterline에 대해 더 많이 알면 더 복잡한 데이터 문제를 시도 할 때 도움이됩니다.

전반적으로 돛을 추천합니다.


1
안녕하세요 사이먼, 여권과 돛을 통합 한 방법을 공유해 주시겠습니까? 나는 같은 문제에 갇혀 있습니다. 어딘가에 블로그를 작성했거나 참조 자료가 있습니까?
Mitermayer Reis 2014 년

2
안녕 Mitermayer, 미안하지만 내 블로그는 오래 전에 방치로 죽었습니다. 여권이 제게 일하게 한 것은 제가 두 가지 일을하면 괜찮은 것 같다는 것을 깨달았습니다. 1 모든 곳의 기본 필드 이름 (이메일 및 비밀번호) 2 req 객체를 콜백에 전달 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) },
simondelliott 2014 년

1
와우 감사합니다. 저는 며칠 동안 현지 전략에 문제가있었습니다. 이것은 자신의 스택 오버플로 게시물을받을 자격
light24bulbs

1
Passport.js 통합에는 실제로 더 많은 문서 자료가 필요하지만 충분히 강조 할 수는 없습니다. 특히 facebook / google 로그인 및 로컬 인증을 결합하여 서버 렌더링이 발생하지 않는 REST API 사용 사례 (예 : Angular JS 클라이언트)에 적합합니다.
Alon Amir

1
Upvote Passport.js는 통합하기 어렵고 제대로 문서화되지 않았습니다
pim

9

현재 Meteor를 사용하고 있으며 Sails.js를 사용하지 않았습니다.

Meteor는 작업하기에 매우 즐거웠으며 실시간 웹 앱을위한 탁월한 선택이 될 것이라고 생각합니다. 사용자 / 역할과 관련하여 통합 계정 패키지를 확인하고 Atmosphere 에서 커뮤니티에서 제공 한 역할 / 권한 패키지를 검색 할 수도 있습니다 .

궁극적으로 두 가지 기술을 모두 갖춘 작은 프로젝트를 시도하고 어떤 것이 더 나은지 확인하는 것이 좋습니다.


Sail.js가 모델 수준에서 Meteor의 지연 시간 보상과 유사한 클라이언트 측에서 지연 시간 보상의 변형이 있는지 알고 있습니까?
imslavko 2014 년

Sail.js에 대해 모르지만 sharejs.org lib를 사용하여 직접 포함 할 수 있습니다 . 적어도 그것은 lib의 목표 인 것 같습니다.
alanning 2014 년

1
@alanning-아니요, sharejs는 지연 시간 보상을하지 않습니다. Sharejs는 운영 혁신을 수행합니다. 지연 시간 보상은 Meteor가 로컬 미니 몬 고를 업데이트하고 원격 업데이트가 성공하여 사용자가 계속할 수 있다고 가정하는 경우입니다.
gomad

1
@gomad 당신은 sharejs가 기본적으로 지연 시간 보상을 제공하지 않는다는 것이 맞습니다. 나는 그랬다고 말하지 않았다. 오히려 "sharejs.org를 사용하여 직접 포함 할 수 있습니다"라고 말했습니다. LC는 OT를 기반으로합니다.
alanning

추가 된 메모입니다. 유성은 사용하기에 매우 즐겁다 고 생각합니다. 약간의 학습 곡선이 있지만 그 외에 프레임 워크는 레일을 루비로 설명하는 방법과 매우 유사합니다. 현재 내 유일한 불만은 현재로서는 셀프 호스트를 원한다면 여전히 노드 0.10.40에 의존합니다. 유성은 상당히 큰 기반을 가지고 있기 때문에 노드를 사용한 캐치 업 게임은 유성에 약간 불공평하다고 생각합니다.
Jimmy MG Lim
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.