브라우저에서 노드 JavaScript를 JavaScript와 비교합니다
프론트 엔드 개발자의 경우 Mastering Node.js는 여전히 귀중한 기술입니다. Deno는 서버 측 JavaScript의 대안을 제공하지만 Node.js의 광범위한 생태계는 지속적인 관련성을 보장합니다. 이 기사는 브라우저 기반 JavaScript에 익숙하다고 가정하고 Node.js를 사용하여 서버 측 개발을 탐색하려고합니다. Node.js 및 NPM 초보자의 경우 Smashing Magazine에서 Jamie Corkhill의 "Node with Node"는 훌륭한 리소스입니다.
비동기 자바 스크립트 : 주요 차이점
브라우저 JavaScript는 종종 비동기 코드를 최소한으로 사용합니다 (예 : API 호출을위한 fetch
). 그러나 Node.js는 거의 항상 비동기 프로그래밍이 필요합니다. 비동기 콜백에 의존하는 단일 스레드 이벤트 루프는 디자인의 기본입니다. 이 비동기 우선 접근 방식은 Node.js의 성공에 중요했지만 동기 코딩에 익숙한 사람들에게는 학습 곡선을 제시합니다.
퀴즈 앱 예제 구축
Node.js 개념을 설명하기 위해 간단한 퀴즈 앱을 작성하겠습니다. 보다 완전한 버전은 Github에서 사용할 수 있습니다. 이 앱은 퀴즈, 질문 및 답변에 대한 테이블이있는 SQLITE 데이터베이스를 사용합니다. 각 질문에는 여러 가지 답변이 있으며 그 중 하나만 정확합니다. sqlite는 부울 유형이 부족합니다. 우리는 False의 경우 0을, true에는 0을 사용합니다.
먼저 NPM을 초기화하고 sqlite3
패키지를 설치하십시오.
npm init -y NPM 설치 SQLITE3
es6 모듈을 활성화하려면 package.json
에 "type":"module"
을 추가하십시오. database 테이블을 설정하려면 migrate.js
작성하십시오.
// migrate.js "sqlite3"에서 sqlite3 가져 오기; db = new sqlite3.database ( "quiz.db"); db.serialize (function () { // ... (데이터베이스 스키마 생성 및 초기 데이터 삽입) ... }); db.close ();
이 스크립트는 테이블을 생성하고 샘플 데이터로 채 웁니다. node migrate.js
로 실행하십시오.
비동기 문제를 탐색합니다
데이터베이스를 쿼리합시다. index.js
에서는 sqlite3
가져오고 데이터베이스 개체를 만들고 get
함수를 사용합니다.
// index.js "sqlite3"에서 sqlite3 가져 오기; db = new sqlite3.database ( "quiz.db"); db.get (퀴즈에서 Quizid = 0`, (err, row) => {Quiz에서 선택 * select * if (err) { Console.error (err.message); } Console.log (행); db.close (); });
이것은 퀴즈 데이터를 콘솔에 인쇄합니다.
콜백 함정을 피합니다
ID로 퀴즈를 검색하기 위해 getQuiz(id)
함수를 만들어 봅시다. 비동기 실행으로 인해 콜백 내에서 결과를 반환하기 만하면됩니다.
// 틀 렸습니다 - 이것을 피하십시오! 함수 getQuiz (id) { // ... (콜백이있는 데이터베이스 쿼리) ... 반환 결과; // 결과가 정의되지 않습니다! }
올바른 접근법은 콜백을 사용하여 비동기 결과를 처리합니다.
함수 getQuiz (id, 콜백) { // ... (데이터베이스 쿼리, 결과로 콜백 호출) ... } getquiz (0, (퀴즈) => { Console.log (퀴즈); });
간단한 콜백을 넘어서 : 약속과 비동기/대기
여러 비동기 통화를 연쇄하면 "콜백 지옥"으로 이어집니다. 약속은 더 깨끗한 솔루션을 제공합니다.
함수 get (params) { // ... (약속에 랩핑 된 데이터베이스 쿼리) ... } get ({테이블 : "답변", 열 : "답변", 값 : 2}) .그 다음에(...) .그 다음에(...) .그 다음에(...) .잡다(...);
Async/Await Await는 비동기 코드를 더 단순화하여 동기 코드와 비슷합니다.
비동기 함수 printquizfromanswer () { const 답변 = 기다립니다. // ... (마찬가지로 후속 전화를 기다립니다) ... } printquizfromanswer ();
최상위 수준이 기다려 (최근 Node.js 버전에서 사용 가능)는 더욱 간결한 코드를 허용합니다.
SQL 조인으로 최적화
효율성을 위해 SQL 조인을 사용하여 단일 쿼리에서 관련 데이터를 검색하십시오.
함수 quizfromanswer (answerid, 콜백) { // ... (SQL은 쿼리가 결합하여 답변, 질문 및 퀴즈 데이터를 가져옵니다) ... }
데이터베이스 호출 수가 줄어 듭니다.
node.js API 및 컨벤션
Node.js는 데이터베이스 상호 작용, 파일 시스템 액세스, HTTP 서버 등에 대한 새로운 API를 도입합니다. package.json
파일 및 오류 우선 콜백을 포함한 Node.js 규칙을 이해하는 것이 중요합니다. CommonJS 모듈과 ES 모듈의 차이점에도주의가 필요합니다.
서버 측 고려 사항
Node.js 서버 측 개발은 오류가 종종 개별 사용자에게 영향을 미치는 클라이언트 측 JavaScript와 달리 예외 및 보안 취약점을 신중하게 처리해야합니다.
결론
Node.js는 프론트 엔드 개발자가 서버 측 개발을 위해 JavaScript 기술을 활용할 수 있도록합니다. 비동기 특성은 학습 곡선을 제시하지만 동시성과 광범위한 생태계의 이점은 강력한 도구입니다. 비동기식 JavaScript 개념, Node.js API 및 보안 모범 사례에 익숙해 지도록하십시오.
위 내용은 브라우저에서 노드 JavaScript를 JavaScript와 비교합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

새로운 프로젝트가 시작될 때, Sass 컴파일은 눈을 깜박이게합니다. 특히 BrowserSync와 짝을 이루는 경우 기분이 좋습니다.

이번 주에 플랫폼 뉴스 라운드 업 RONDUP, Chrome은로드에 대한 새로운 속성, 웹 개발자를위한 접근성 사양 및 BBC Move를 소개합니다.

이것은 처음으로 HTML 요소를보고 있습니다. 나는 그것을 잠시 동안 알고 있었지만 아직 스핀을 위해 그것을 가져 갔다. 그것은 꽤 시원하고 있습니다

구매 또는 빌드는 기술 분야의 고전적인 논쟁입니다. 신용 카드 청구서에 라인 항목이 없기 때문에 물건을 구축하는 것이 저렴할 수 있지만

이번 주에 타이포그래피를 검사하기위한 편리한 북마크 인 Roundup, JavaScript 모듈과 Facebook의 Facebook 등을 어떻게 가져 오는지 땜질하기 위해 대기하는 편리한 북마크 인 Roundup과 Facebook의

한동안 iTunes는 팟 캐스팅에서 큰 개 였으므로 "Podcast 구독"을 링크 한 경우 다음과 같습니다.

사이트에서 방문자 및 사용 데이터를 추적하는 데 도움이되는 분석 플랫폼이 많이 있습니다. 아마도 널리 사용되는 Google 웹 로그 분석
