nodejs가 할 수 있는 일: 1. 프로그래머를 위한 전체 스택 개발 실현 2. 공용 클래스 라이브러리 통합 및 코드 표준화 4. IO 집약적인 애플리케이션 처리 6. 메모리 스택 모니터링 시스템 등
이 문서의 운영 환경: Windows 7 시스템, nodejs10.16.2, Dell G3 컴퓨터.
nodejs 소개:
Node.js는 Chrome V8 엔진을 기반으로 하는 JavaScript 실행 환경입니다. Node.js는 이벤트 중심의 비차단 I/O 모델을 사용하여 가볍고 효율적입니다. Node.js의 패키지 관리자 npm은 세계 최대의 오픈 소스 라이브러리 생태계입니다.
nodejs는 무엇을 할 수 있나요?
1. Nodejs는 Javascript 언어를 기반으로 하기 때문에 익숙하지 않은 언어를 따로 배울 필요가 없습니다. 동시에 Javascript 언어는 웹 프론트 엔드 개발에 매우 중요하며 특히 HTML5 응용 프로그램은 이를 사용해야 합니다. 따라서 프론트 엔드와 백엔드의 통합 언어는 프로그래머의 풀 스택 개발을 실현할 수 있을 뿐만 아니라 공용 통합도 가능합니다. 클래스 라이브러리 및 코드 표준화. 이것만으로도 Nodejs는 시장의 호감을 얻었습니다.
2. Nodejs는 런타임 환경을 재개발하지 않았지만 Nodejs의 성능과 안정성을 보장하기 위해 현재 가장 빠른 브라우저 커널 V8을 실행 엔진으로 선택했습니다.
3. Nodejs의 단일 스레드 메커니즘 덕분에 Nodejs 개발은 매우 효율적이고 코드도 간단합니다. Nodejs의 또 다른 기능인 비동기식 프로그래밍은 Nodejs가 IO 집약적인 애플리케이션을 처리할 때 확실한 이점을 제공합니다. 개인적으로 웹 개발에 Nodejs를 사용하는 것이 Java보다 10배 더 효율적이고 PHP 코드보다 간단하다고 생각합니다.
4. Nodejs 커뮤니티가 빠르게 성장하고 있을 뿐만 아니라 패키지의 품질도 다른 언어보다 훨씬 좋습니다. 많은 스타 수준 패키지는 개발자의 사용 습관에 맞게 설계되어 간단하고 스마트합니다. 제가 가장 많이 사용하는 툴킷(예: Socket.io, moment.js, underscore.js, async.js, express.js, bower.js, grunt.js, Forever.js...)은 이전 프로그래밍 습관을 실제로 바꾸고 있습니다. .
물론 제가 Nodejs를 사용하는 이유 외에도 많은 회사에서도 Nodejs를 사용하는 이유가 있습니다.
eBay가 Nodejs를 선택한 이유는 다음 4가지로 요약할 수 있습니다.
동적 언어: 개발 효율성이 매우 높으며 http://ql.io와 같은 복잡한 시스템을 구축할 수 있는 능력을 갖추고 있습니다.
성능 및 I/O 로드: Nodejs는 비동기 IO를 통해 IO 집약적인 문제를 매우 잘 해결합니다.
연결의 메모리 오버헤드: 각 Node.js 프로세스는 120,000개 이상의 활성 연결을 지원할 수 있으며 각 연결은 약 2K의 메모리를 소비합니다.
작업: Nodejs의 메모리 스택 모니터링 시스템을 구현했습니다.
15 Nodejs 애플리케이션 시나리오
우리는 Nodejs에 대한 사전 이해를 마쳤으니, Nodejs의 애플리케이션 시나리오를 살펴보겠습니다.
1 웹 개발: Express + EJS + Mongoose/MySQL
express는 웹 사이트를 빠르게 구축할 수 있는 가볍고 유연한 Nodejs 웹 애플리케이션 프레임워크입니다. Express 프레임워크는 Nodejs에 내장된 Http 모듈을 기반으로 구축되었으며 Http 모듈을 다시 패키징하여 웹 요청 처리 기능을 구현합니다.
ejs는 컴파일을 통해 HTML 코드를 생성하는 내장형 Javascript 템플릿 엔진입니다.
mongoose는 MongoDB의 객체 모델 도구입니다. Mongoose 프레임워크를 통해 MongoDB에 액세스할 수 있습니다.
mysql은 MySQL 데이터베이스에 연결하고 MySQL에 액세스하기 위한 작업을 수행할 수 있는 통신 API입니다.
일반적으로 웹 개발에 Nodejs를 사용하려면 Java의 SSH와 마찬가지로 세 가지 프레임워크를 사용해야 합니다.
2 REST 개발: Restify
restify는 Nodejs 기반의 REST 애플리케이션 프레임워크로, 서버와 클라이언트를 지원합니다. Restify는 Express보다 REST 서비스에 더 중점을 두고 Express에서 템플릿, 렌더링 및 기타 기능을 제거하는 동시에 REST 프로토콜 사용, 버전 관리 지원 및 HTTP 예외 처리를 강화합니다.
3 웹 채팅방(IM): Express + http://Socket.io
socket.io는 Nodejs 아키텍처 기반 소프트웨어 패키지이며 실시간 통신을 위해 웹소켓 프로토콜을 지원합니다. Socket.io는 브라우저 전반에 걸쳐 실시간 애플리케이션을 구축하기 위한 완전한 패키지를 제공합니다. Socket.io는 JavaScript로 완벽하게 구현됩니다.
4 웹 크롤러: Cheerio/Request
cheerio는 빠르고 유연하며 jQuery의 핵심 기능을 캡슐화한 서버용으로 특별히 맞춤화된 툴킷입니다. Cheerio에는 핵심 jQuery의 하위 집합이 포함되어 있어 jQuery 라이브러리에서 모든 DOM 불일치와 브라우저 비호환성을 제거하여 정말 우아한 API를 드러냅니다. Cheerio는 매우 간단하고 일관된 DOM 모델에서 작동하여 구문 분석, 작업 및 렌더링을 매우 효율적으로 만듭니다. 기본 엔드투엔드 벤치마크에서는 Cheerio가 JSDOM보다 약 8배(8배) 빠른 것으로 나타났습니다. Cheerio는 @FB55 호환 htmlparser를 캡슐화하고 거의 모든 HTML 및 XML 문서를 구문 분석할 수 있습니다.
5 웹 블로그: Hexo
Hexo는 Node.js를 기반으로 하는 간단하고 가벼운 정적 블로그 프레임워크입니다. Hexo를 사용하면 몇 가지 명령만 있으면 블로그를 빠르게 만들 수 있습니다.
Hexo가 출시되면 자체 노드 서버나 github에 배포할 수 있습니다. 개인 사용자의 경우 GitHub에 배포하면 서버 비용을 절약할 수 있을 뿐만 아니라 다양한 시스템 운영 및 유지 관리(시스템 관리, 백업, 네트워크)의 문제를 줄일 수 있습니다. 그래서 github 기반의 개인 사이트가 인기를 끌기 시작했습니다...
6 웹 포럼: nodeclub
Node Club은 Node.js와 MongoDB로 개발된 새로운 커뮤니티 소프트웨어로, 우아한 인터페이스와 풍부한 기능, 작은 크기를 갖추고 있습니다. 이미 Node.js에 있습니다. 중국 기술 커뮤니티 CNode가 사용되지만 이를 사용하여 자신만의 커뮤니티를 구축할 수 있습니다.
7 웹 슬라이드쇼: Cleaver
Cleaver는 마크다운 기반 프레젠테이션을 생성할 수 있습니다. 이미 마크다운 문서가 있다면 30초 안에 슬라이드쇼를 만들 수 있습니다. Cleaver는 해커를 위한 도구입니다.
8 프론트엔드 패키지 관리 플랫폼: bower.js
Bower는 트위터에서 출시한 패키지 관리 도구로, nodejs의 모듈식 아이디어를 기반으로 모듈 간 연결이 가능하도록 기능을 다양한 모듈로 분산시킵니다. Bower를 통해 모듈 간의 연결을 관리합니다.
9 OAuth 인증: Passport
Passport 프로젝트는 Nodejs 기반의 인증 미들웨어입니다. Passport의 목적은 단지 "로그인 인증"이기 때문에 코드가 깔끔하고 유지 관리가 쉬우며 다른 애플리케이션에 쉽게 통합될 수 있습니다. 웹 애플리케이션에는 일반적으로 사용자 이름 및 비밀번호 인증 로그인과 OAuth 인증 로그인이라는 두 가지 형태의 로그인 인증이 있습니다. Passport는 애플리케이션의 특성에 따라 다양한 인증 메커니즘을 구성할 수 있습니다. 이번 글에서는 사용자 이름과 비밀번호의 인증 로그인에 대해 소개하겠습니다.
10 예약된 작업 도구: later
Later는 가장 간단한 방법으로 예약된 작업을 수행하는 Nodejs 기반 도구 라이브러리입니다. 나중에 Node와 브라우저에서 실행할 수 있습니다.
11 브라우저 환경 도구: browserify
Browserify의 출현으로 Nodejs 모듈이 브라우저에서 실행되고 require() 구문 형식을 사용하여 프런트 엔드 코드를 구성하고 npm 모듈을 로드할 수 있습니다. 브라우저에서는 browserify를 호출하여 컴파일된 코드가