인용문과 배경
14480 단어 nodetodayilearned
여기서 나는 그것을 통해 나의 학습을 기록할 것이다.공개된 동기는 다음과 같다.
Learn by teaching: 방금 소화한 내용을 재해석하는 것이 기억에 도움이 될 수 있다.
소개
이벤트 구동
예를 들어 나는 우산을 잊어버렸는지 알려주는 앱을 원한다.단계는 다음과 같습니다.
addEventListener
, 우리의 이벤트는 주로 네트워크 요청과 데이터베이스 조회일 것이며, 마우스 클릭을 기다리는 것이 아니다.이벤트를 처리하기 위해 callbacks를 사용합니다.
A callback is a function pass to another function as argument.
많은 함수들이 리셋을 사용하는데, 심지어는
map
및 forEach
: [1, 2, 3].forEach(n => console.log(n)
.이벤트 탐지기는 리셋을 사용하는 방식이 같다: element.addEventListener('click', console.log)
.다음은 NodeJS의 콜백 사용법의 예입니다.
http
.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end('Hello Node!');
})
.listen(8080);
작업: 읽기 및 보기
NodeJS 웹 사이트
nodejs.org
막히다
내가 사이트를 훑어보는 과정에서 나는 blocking vs non blocking 페이지를 만났는데 이 페이지는 나의 호기심을 불러일으켰다. 왜냐하면 이것은 명칭이 Sync
로 끝나는 방법을 언급했기 때문이다.이것은 위의 이벤트 구동 부분과 관련이 있을 수 있기 때문에 나는 계속 읽는다.
차단 방법은 동기적으로 실행되고, 비차단 방법은 비동기적으로 실행된다.
const fs = require('fs');
const data = fs.readFileSync('/file.md'); // 1. blocks the process until the file is read
console.log(data); // 2. called after data read
nextMethod(); // 3. called after console.log
fs.readFile('/file.md', (err, data) => {
// 1. async method, do not block the process !
if (err) throw err;
console.log(data); // 3. console when 1. resolved
});
nextMethod(); // 2. called without waiting completion of 1.
차단 방법은 해결될 때까지 동시에 실행됩니다.오류가 있으면 오류를 포착해야 합니다. 그렇지 않으면 프로세스가 붕괴됩니다.
비차단 방법은 비동기적으로 실행되며 실행을 막지 않습니다.일반적으로 해석된 후에 다른 조작을 실행하기 위해 리셋을 전달할 수 있다.
NodeJS는 단일 스레드이므로 병렬 프로세스는 이벤트 순환을 의미합니다.한 서버에서 여러 개의 요청을 수신하고 처리 프로그램이 데이터베이스에 대한 신속한 I/O 작업을 요청하는 것을 고려해 봅시다.차단 방법을 사용하면 요청을 하나하나 처리하여 후속 요청의 해결을 지연시킬 수 있다.그러나 비차단 방법을 사용하면 서버가 입력/출력 작업을 할 때 다른 요청을 처리할 수 있습니다.이것은 커다란 성능 차이를 초래할 수 있다.
동기화와 비동기화 방법을 조심스럽게 혼합하여 사용하세요!다음 예제에서는 오류가 발생합니다.
fs.readFile('/file.md', (err, data) => {
// 1. start reading file.md
if (err) throw err; // 3. crash ! can't read data as the file has been deleted whild reading it.
console.log(data);
});
fs.unlinkSync('/file.md'); // 2. delete file.md
리셋에 비차단 호출을 배치하면 더욱 안전한 작업 순서를 보장할 수 있습니다.
fs.readFile('/file.md', (err, data) => {
// 1. start reading file.md
if (err) throw err;
console.log(data); // 2. log data
fs.unlink('/file.md', err => {
// 3. start removing file
if (err) throw err; // handle error if necessary
});
});
MDN 서버 측 소개
MDN
하이퍼텍스트 전송 프로토콜
Http는 두 컴퓨터(클라이언트와 서버) 사이에서 하이퍼텍스트 (링크된 웹 문서) 를 전송하는 데 사용되는 프로토콜입니다.이것은 텍스트의 (모든 명령은 순수한 텍스트이고 인간이 읽을 수 있는) 상태와 무상태입니다. 클라이언트든 서버든 이전에 교환한 상태를 보존하지 않습니다.클라이언트만 HTTP 요청을 보낼 수 있고 서버는 응답할 수 있습니다.서버는 모든 http 요청에 대답해야 합니다. 적어도 오류 메시지가 있어야 합니다!
정적 및 동적
정적 사이트는 자원을 요청할 때마다 항상 같은 내용을 제공합니다.게이츠비의 사이트는 정적이다. 그들은 서버에 구축하고 저장한 후에 원래대로 발송한다.
동적 사이트는 필요에 따라 생성되며 일반적으로 데이터베이스의 데이터를 템플릿에 삽입합니다.서버는 요청에 따라 전송되거나 데이터베이스에 저장된 사용자가 선호하는 내용을 조정할 수 있습니다.
이점
효율적인 저장 및 납품: 아마존의 제품이나 페이스북 게시물 등 데이터베이스에 대량의 데이터를 저장하는 것이 단일 웹 페이지보다 효율적이다.서버는 이 데이터베이스에 접근하여 구축된 웹 페이지(html)나 데이터(json)를 되돌려줍니다.예를 들어 아마존 결과와 제품 페이지.
사용자 정의 사용자 체험: 서버는 신용카드 상세 정보, 검색 내역 또는 습관과 같은 사용자 정보를 저장할 수 있다.예를 들어 구글은 이전의 검색을 자동으로 완성한다.
액세스 제어: 보기, 편집, 삭제할 수 있는 사람을 제어합니다...메시지이것은 사용자일 수도 있고 다른 서버일 수도 있다.예를 들어 은행 사이트는 계정 정보를 보거나 비밀번호를 편집하기 위해 로그인해야 합니다.은행 자체는 당신의 계좌 잔액을 편집할 수 있습니다.
세션/상태 정보 저장: 서버는 사이트의 현재 사용자를 기억하고 응답을 조정할 수 있습니다.한 신문은 네가 n페이지를 훑어본 후에 구독할 것을 요구한다.
알림 및 통신: 서버에서 이메일, 문자, 푸시 알림을 보낼 수 있습니다...실시간 메시지와 영상 대화도 있다.
데이터 분석: 우리는 사용자에 대한 대량의 데이터를 수집하여 사용할 수 있다.예를 들어 페이스북 뉴스 요약이나 광고.
웹 프레임워크
프레임워크 처리는 응용 프로그램에 자주 반복해야 하는 일반적인 작업입니다.
리소스/페이지의 URL을 프로세서 함수에 쉽게 매핑하려면 다음과 같이 하십시오.
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index), # example: /best/
url(r'^junior/$', views.junior), # example: /best/junior/
]
모델의 필터 데이터로 html 템플릿 채우기:
from django.shortcuts import render
from .models import Team
def junior(request):
list_teams = Team.objects.filter(team_type__exact="junior")
context = {'list': list_teams}
return render(request, 'best/index.html', context)
Express는 매우 유행하는 노드 프레임워크이다.그것은 웹 응용 프로그램과 http 요청에 실용적인 프로그램을 제공하는 빠르고 번역할 필요가 없다.이것은 최소한입니다. 일부 기능 (데이터베이스 접근, 사용자 제한) 은 라이브러리나 다른 express 기반 프레임워크에서 불러올 수 있습니다.
Deno는 V8과 Rust를 사용하여 구축된 간단하고 현대적이며 안전한 JS/TS 런타임 및 프레임워크입니다.그것은 안전성, 포맷, 모듈 버전 등 노드의 몇 가지 문제를 해결하려고 한다.
Freecodecamp 노드 소개
Freecodecamparticle 및 링크된 비디오에 대한 명확한 설명(!)이벤트 순환:
강연자는 자신이 만든 도구를 사용하여 호출 스택, 웹 API, 리셋 대기열, 렌더링 대기열의 현재 상태를 표시합니다. Loupe
This는 사건의 순환과 비동기적인 집행에 관한 더욱 깊은 문장이다.
응용 예
7 things NodeJS로 구축할 수 있습니다.이것들은 모두 재미있고 진실한 프로젝트이다.
const fs = require('fs');
const data = fs.readFileSync('/file.md'); // 1. blocks the process until the file is read
console.log(data); // 2. called after data read
nextMethod(); // 3. called after console.log
fs.readFile('/file.md', (err, data) => {
// 1. async method, do not block the process !
if (err) throw err;
console.log(data); // 3. console when 1. resolved
});
nextMethod(); // 2. called without waiting completion of 1.
fs.readFile('/file.md', (err, data) => {
// 1. start reading file.md
if (err) throw err; // 3. crash ! can't read data as the file has been deleted whild reading it.
console.log(data);
});
fs.unlinkSync('/file.md'); // 2. delete file.md
fs.readFile('/file.md', (err, data) => {
// 1. start reading file.md
if (err) throw err;
console.log(data); // 2. log data
fs.unlink('/file.md', err => {
// 3. start removing file
if (err) throw err; // handle error if necessary
});
});
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index), # example: /best/
url(r'^junior/$', views.junior), # example: /best/junior/
]
from django.shortcuts import render
from .models import Team
def junior(request):
list_teams = Team.objects.filter(team_type__exact="junior")
context = {'list': list_teams}
return render(request, 'best/index.html', context)
Gif chat room:D
결론
오딘 과정은 기본 개념부터 시작한다.나는 독학으로 인재가 되었기 때문에 CS 학술 과정이 없기 때문에 나의 학습은 때때로 복잡함 속에서 왔다갔다하며 도약한다.지금 주문한 기초 지식을 되돌아보게 되어 기쁩니다!
Reference
이 문제에 관하여(인용문과 배경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/aziaziazi/learn-nodejs-day-0-4fc3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(인용문과 배경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aziaziazi/learn-nodejs-day-0-4fc3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)