2012-06-01 4 views
1

면책 조항 :이 질문은 공개되지 않습니다. 또한 응답은 부분적으로 개발자 선호도에 기반을두기를 기대합니다.Javascript가 아닌 서버에서 Javascript 기반 서버를 사용하면 어떤 이점이 있습니까?

저는 최근에 Express.js (Node.js를 통해 결합 됨)에 대한 연구를 해왔고 웹 사이트 개발을위한 현재 워크 플로우에 이러한 기술 중 하나가 어떻게 들어 맞는 지 찾기 위해 애 쓰고 있습니다. 최근에 저는 Wordpress 나 Ruby on Rails에서 일해 왔으며, 이전 버전은 Apache에서 실행될 것이며, 후자는 자체적 인 독점 서버 (proprietary server)에서 실행될 것입니다.

이제는 뭔가를 이해하지 못했지만 Javascript 기반 프레임 워크/서버의 지원을받는 데 장점이없는 것 같습니다. 워크 플로우의이 부분을 만드는 데있어서 장점이 분명하다면 무엇이겠습니까? 나는 Rails 애플리케이션이나 Wordpress 사이트에이 방법을 적용 할 수있는 방법을 찾을 수 없었다. 누군가 이미 내가 사용하는 기술 위에이 기술을 구현하는 데 더 도움이되는 방향으로 나를 지적 할 수 있습니까?

마지막 질문 하나, 누군가 브라우저에서 Javascript를 사용 중지하면 어떻게됩니까? Javascript 기반 서버는 어떻게 반응합니까? 방식은 연결을 처리하기 때문에,

이벤트 루프

Node.js를 보통 아파치 개념에서 다른 비트가 :

+1

귀하의 서버에서 실행되는 자바 스크립트는 브라우저에서 실행되는 자바 스크립트와 아무 관련이 없습니다. –

+0

레일즈 애플리케이션이나 WP 사이트에 * 적합하지 않을 가능성이 높습니다. JS 서버에서는 실행되지 않습니다. JS 서버를 기존 서버 측 기술보다 더 좋고 빠르면 다른 서버 측 응용 프로그램과 함께 사용할 수 있습니다. wBrowser JS는 어떤 식 으로든 JS에 연결되어 있지 않습니다. 어떤 메커니즘이 중요할까요? –

답변

3

는 두 개의 큰 차이가 있습니다. 동기식 연결 대신 노드는 이벤트 루프를 사용하여 비 블로킹 작업을 수행합니다. 이것은 Javascript에 고유하지 않으며 C 및 Python 기반의 프레임 워크가 비슷한 이벤트 루프 접근을 가능하게합니다. Javascript에서는 JS가 도입 된 이후로 JS가 어떻게 작동했는지가 가장 자연스러운 느낌 일 것입니다.

이렇게하면 더 많은 동시 클라이언트를 처리 할 수 ​​있습니다. 그러나 정규 블로킹 솔루션만큼 현실 세계에 노출되지 않았으므로이 방법은 현재의 구현만큼 성숙하지는 않습니다. 실제 성능 차이는 응용 프로그램의 정확한 요구 사항에 따라 달라 지므로 의심 스럽습니다.

코드 공유

이 점은 훨씬 덜 논쟁 이전의 차이보다,하지만 당신은 클라이언트와 서버 모두에서 동일한 언어가있는 경우 본질적으로, 대신, 많은 코드를 재사용 할 수 있습니다 데이터 구조 등을 여러 언어로 다시 작성해야하기 때문에 많은 개발 시간을 절약 할 수 있습니다. 그러나 서버 쪽 JS의 개념은 jQuery 나 Prototype이있는 동적 JS가없는 것과 같이 브라우저에서 알고있는 것과 다르다는 것을 이해해야합니다. 결과와 유스 케이스는 PHP와 더 비슷합니다. 널리 사용됩니다.

+0

Node.js의 장점 중 하나 (Express에 대해 잘 모르는) 중 하나는 스레드가 없기 때문에 개발자가 효율적이고 안전한 멀티 스레딩을 염두에두고 코딩 할 필요가 없다는 점입니다. – echristopherson

1

Javascript를 서버 측 언어로 사용하는 주 이점은 전체 시스템을 단일 언어로 작성한다는 것입니다.

이 측면에서 장점을 갖는다 : 개발자에게

  • 스위칭

    • 학습 및 정신 컨텍스트도에서 두 환경간에 코드를 공유하기위한 일부 가능성을 제공한다.

    그러나,이 마지막 점은 여러 가지 이유로, 생각보다 덜 유용하고, 단점에 와서 곳이다 :

    • 많은 코드가 실제로 공유 할 수는 없습니다 때문에의, 두 환경이 실제로하는 일의 차이. 어쩌면 약간의 유효성 검사 코드 일 수 있습니다. 따라서 클라이언트와 서버 모두에서 동일한 검사를 수행하고 있으며 몇 가지 유틸리티 기능이있을 수 있습니다.
    • 두 라이브러리간에 사용하는 라이브러리는 완전히 다릅니다. jQuery는 클라이언트에서만 작동하며 노드에는 서버 별 라이브러리가 있습니다.
    • 개발자는 두 환경이 다르기 때문에 정신적으로 환경을 전환해야합니다. 그들은 언어를 공유 할 수 있지만, 그들의 작동 방식은 다르며, 그들이하는 일은 다릅니다. 사실, 두 언어 사이에서 언어를 공유하면 실제로 문맥 전환이 어려워 질 수 있으며 이로 인해 오류가 발생할 수 있습니다.
    • 마지막으로, Node가 개발자 커뮤니티로부터 많은 관심을 받고 있지만, 여전히 새롭고 빠르게 발전하고 있습니다. 개발 플랫폼으로 생각하는 비즈니스라면, 주요 프로젝트의 기초가 될 정도로 안정적이다.
  • +0

    유효성 검사 및 상태 계산이 코드의 주요 부분 인 게임과 같은 응용 프로그램에서이를 공유하는 기능은 매우 중요합니다. 그러나 일반적으로 노드의이 측면에서 많은 이점을 찾지 못했습니다. – bkconrad

    +0

    클라이언트 측 JS와 Node 모두에 대해 동등하거나 유사한 라이브러리를 제공하는 많은 라이브러리가 있습니다 (예 : 템플릿, 데이터 저장, 푸시 알림 등). – zatatatata

    관련 문제