Node.js를 사용하여 웹 사이트를 구축하는 모범 사례


79

Node.js로 처음부터 웹 사이트를 개발하는 방법이 궁금합니다. 내가 어떻게 할 있는지 이해 하지만 최고의 디자인 관행에 관심이 있습니다.

이 이론적 웹 사이트가 필요합니다.

  1. 많은 AJAX 수행
  2. 매우 간단하게
  3. 상대적으로 작다
  4. 연결 ... MySQL 서버를 가정 해 보겠습니다.

PHP에서 아주 작은 웹 사이트를 구축하는 것은 매우 간단합니다. Apache와 MySQL 서버에 PHP를 설정 한 다음 다음과 같이합니다.

  • includes/db/ db에 연결하기위한 connect.php, 일반적인 db 관련 기능이있는 파일 등이 있습니다.
  • includes/layout/ footer.php, header.php 및 기타 레이아웃 관련 항목이 있습니다.
  • includes/users/ 사용자 관련 작업 처리

그런 다음 PHP를 사용하면 페이지를 만들고 이러한 파일을 함께 포함하여 웹 사이트를 만들 수 있습니다. 다음과 같이 할 수 있습니다.

<?php
   require_once('inclues/users/user_session.php');
   require_once('inclues/db/connect.php');
   require_once('inclues/design/header.php')
?>

// Other php or html or related content relating to the page

<?php
   require_once('inclues/.../footer.php');
?>

나는 Node.js를 비슷가 무엇인지 궁금 해서요 - 내가 같이 어떤이 달성 할 수있는 방법을 찾고 간단 , 신속 하고 간단 가능한합니다.

대답이 간단하지 않다면 책 추천을 좋아하고 읽는 것도 괜찮습니다.

저는 이벤트 기반 프로그래밍을 좋아하고 JavaScript의 능력을 정말 좋아하며 Node.js에 대해 정말 흥분됩니다. 처음부터 올바른 방법으로 이런 종류의 것들을 개발하는 방법을 배우고 싶습니다.


3
예를 들어 mocha- > github.com/visionmedia/mocha를 사용하여 코드를 테스트하는 것이 매우 중요하다는 점도 지적하고 싶습니다 . 잘 테스트 된 작은 모듈 코드 (모듈)를 만듭니다.
Alfred

기본적으로 동시성을 지원하고 node.js보다 빠르며 C 또는 Java보다 쉬운 Erlang을 살펴볼 수도 있습니다.

답변:


184

나쁜 소식부터 시작하자면 Node.js 는 꽤 젊은 기술이기 때문에 본격적인 웹 사이트를 만들고 유지 / 운영하는 과정이 현재 익숙한 것과 매우 다를 것임을 알게 될 것입니다.

Josh3736은 다음과 같이 덧붙입니다. Node.js와 다양한 패키지 (Connect, Express)가 작동하는 방식을 파악한 후 새 사이트를 매우 빠르게 개발할 수 있다는 것을 알게되었습니다.

현재 Node.js에 존재하는 거친 가장자리와 빠른 개발 속도 및 관련된 모든 모듈은 상황을 복잡하게 만들 수 있으며 원하는 것보다 덜 간단하고 빠르고 간단하게 만들 수 있습니다.

이를 막기 위해 좋은 소식이 있습니다.

노드 패키지 관리자는 NPM은 적합 웹 서버를 만들 수있어 좋은 도구와 Node.js를의 노출 된 뼈의 기능을 확장하기위한 프레임 워크를 많이 가지고있다.

가장 주목할만한 것은 웹 서버를 실행하는 데 필요한 거의 모든 것이 포함 된 Express 프레임 워크 입니다 (쿠키, 세션 및 경로 라우팅 포함). 또한 Express는 머리글 및 바닥 글 포함을 처리하는 부분을 지원합니다.

Express는 Sencha의 Connect 위에 구축되었습니다 . 쿠키와 세션은 실제로 Connect에서 제공합니다. Express는 라우팅을 단순화하고 뷰 / 부분을 처리합니다. 따라서 Express와 함께 제공되는 모든 종소리와 휘파람이 필요하지 않은 경우 대신 Connect로 이동할 수 있습니다.

이러한 부분에 템플릿을 사용하고 싶다면 Jade Template Engine으로 작업 속도를 높일 수 있습니다. Josh3736 은 Jade가 느리고 공백이 중요 하다고 지적 하지만 . 그의 가장 좋아하는 doT 를 포함 하는 더 완전한 개요는 여기 에서 찾을 수 있습니다 . (저는 개인적으로 기반 응용 프로그램에만 Node.js를 사용 하므로 템플릿 작성과 관련하여 저보다 더 나은 소스입니다).socket.io

당신은 할 수 사용 Node.js를에서 MySQL로 연결 DB-MySQL의 '현대 ... 모듈을, 그러나 당신이 필요하지 않은 경우 당신은 이미 시스템에 연결된 데이터에 액세스하고 있기 때문에, 나는 더 사용하는 조언을 거라고 '접근 방식 은 대부분의 Node.js 프로젝트처럼 NoSQL 데이터베이스 를 사용하는 것입니다. Mongoose 를 통한 MongoDB 는 인기있는 방법입니다.

또는 관심있는 객체를 저장하는 것이라면 대신 Redis 로 가십시오 (어쨌든 어느 시점에서 필요할 것입니다).

웹 사이트가 완성되면 배포하고 계속 실행되는지 확인해야합니다. 기본 제공 클러스터 지원을 사용하거나보다 기능 친화적 인 forevernpm 모듈을 사용하는 등 여러 가지 방법이 있습니다 . 자세한 내용은이 SO 질문을 참조하십시오.

결론 :

내가 얻으려는 것은 이것입니다.

Node.js로 웹 사이트를 구축하는 모범 사례가 무엇인지 묻는 것은 PHP로 웹 사이트를 구축하는 가장 좋은 방법이 무엇인지 묻는 것과 거의 같습니다. 100 명의 개발자가 100 가지 다른 답변을 제공합니다.

NPM은 관련된 많은 작업을 크게 단순화하는 다양하고 훌륭한 프레임 워크로 축복 받았지만, 어느 쪽이 실제로 갈 길을 선호하는지에 따라 결정됩니다.

내가 말했듯이 Node.js는 아직 꽤 젊은 기술이므로 프레임 워크 나 추가 도구는 아직 '사실상 표준'으로 등장하지 않았습니다. 수행하려는 대부분의 작업에는 다양한 대안이있을 수 있으며, Node.js 자체와 대부분의 모듈의 개발 속도가 빠르기 때문에 업데이트 중에 대부분을 사용할 때 코드가 손상 될 것으로 예상합니다. 계속 따라 가야합니다.

모두 합치면 :

내가 말했듯이 Node.js의 주요 프로덕션 용도는를 사용할 수있는 socket.io것이므로 좋은 프로덕션 예제가 없습니다. (그리고 휴가를 떠나려고하므로 둘 중 하나를 모을 시간이 있습니다). 그래도 몇 가지 좋은 예가 있습니다.

다시 말하지만, 갈 길 (그리고 따라야 할 예)은 궁극적 인 목표와 선택한 기술에 따라 크게 달라 지지만 다행히도 모든 선택에 사용할 수있는 리소스가 많이 있습니다. 대부분의 모듈은 잘 문서화 된 GitHub 리포지토리를 사용하고 가장 인기있는 모듈과 함께 예제를 포함합니다 ( /examples/대부분의 리포지토리에있는 것으로 보이는 디렉토리 참조 ).

행운을 빕니다! (그리고 내 오류를 수정 한 Josh3736 에게 감사드립니다 .)


2
정말 고마워요, 제가 찾던 것입니다! 한 가지 더 짧게, 제목에서 설명한 코드와 유사한 코드가 node.js에서 어떻게 보일지 궁금합니다. 논리적 분리는 어떻게 작동합니까? railyway.js와 함께 express와 jade를 사용한다고 가정 해 보겠습니다. 나는 여전히 내 프로그램이 어떻게 생겼는지 이해하기 위해 고군분투하고 있습니다. (간단한) 예의 경우 데이터베이스에서 기본 데이터를로드 및 표시하고 바닥 글 / 헤더 파일을 포함하는 index.php 파일이있는 경우 이러한 종류의 코드가 (최적 적으로) 어떻게 보일까요? 다시 말하지만, 덕분에 많은
벤자민 Gruenbaum

6
이것은 좋은 대답이지만 몇 가지 요점 : Express는 실제로 Connect를 기반 으로 구축 되었습니다 . 쿠키와 세션은 실제로 Connect에서 제공합니다. Express는 라우팅을 단순화하고 뷰 / 부분을 처리합니다. Jade는 매우 느리고 (개인 메모로) 공백이 중요한 언어를 싫어합니다. 에서 봐 다른 템플릿 엔진의 일부 - 나의 마음에 드는는 점이다 빠른 .
josh3736

4
마지막으로, Node를 사용하는 것이 "단순하고 빠르며 간단하지만 모든 것"이라고 말하지는 않겠습니다. 현재 익숙한 것과는 매우 다릅니다. Node와 다양한 패키지 (Connect, Express)가 어떻게 작동하는지 파악한 후에는 새 사이트를 매우 빠르게 개발할 수 있다는 것을 알게되었습니다 . 예, 여전히 거친 가장자리가 있지만 전체적으로 간단하고 빠르게 할 수 있습니다.
josh3736

2
Remco, 나는 또한 마지막 주석에 대한 언급을 좋아합니다. 당신이 말한 using 노드를 구현하는 방법을 설명한다면 (최선은 아니지만 모범 사례를 사용하여)이 답변을 표시하겠습니다. 이것이 저를 괴롭히는 마지막 부분입니다. 그리고 저는이 마지막 단계에서 고생하고 있습니다. 다시 한 번 감사합니다.
Benjamin Gruenbaum

3
MEAN 스택 (MongoDb, Express, Angular 및 Node)을 사용하여 전체 스택 웹 사이트를 수행하는 방법에 대한이 종단 간 예제를 작성했습니다. Angular 또는 클라이언트를 익숙한 것으로 바꿀 수 있습니다. 나는 시작하기 때문에 아마도 그것은 다른 사람을 도움이 될 것입니다,이 거기 밖으로 최고의 인트로 영상입니다 들었습니다 youtube.com/watch?v=AEE7DY2AYvI
마이클 모저
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.