머리말
우리가 nodejs를 배우지 않으면, 우리는 늙어갈 것입니다 ... HTML5 웨이브가 히트되면 많은 조상들이 Nodejs 여행을 시작했으며 그 당시에는 여전히 서버 측 프로그램을 진행하고있었습니다.
나중에, 나는 프론트 엔드로 바뀌었고, 그것과 그 사이의 거리는 이미 매우 컸다. 서버 측 언어를 알고 오랫동안 일했기 때문에 Nodejs를 배우고 전체 프론트 엔드로 이동하기 시작했습니다.
이번에는 nodejs를 배우는 계획은 다음과 같습니다.
① 1-2 주 안에 기본 지식을 배우십시오
② 약 1 주일 만에 간단한 프로젝트 개발
∎ Nodejs를 사용하여 모바일 디버깅을위한 일련의 도구를 개발하십시오.
④ 포장 관련 (이것은 멀리있을 수 있음)
nodejs 기능
① 비동기
Nodejs는 모두 파일 읽기에서 네트워크 요청에 이르기까지 비동기 적으로 완료되며 콜백 함수는 중요한 역할을합니다. 노드는 주요 프로그램 모델입니다
② 이벤트 콜백
이벤트 콜백은 프로그램을 가볍게 만들지 만 특이성은 프로그래머에 따라 다릅니다. 그러나 콜백 함수는 실제로 읽기가 매우 어렵습니다.
③ 단일 스레드
노드는 단일 스레드입니다. 다중 스레드 인 경우이 언어는 더 깊어집니다. 프로세스에서 의사 소통에 대해 몇 가지 질문을하는 것은 매우 성가신 일이지만 스레드에는 교착 상태 나 다른 문제가 없습니다.
그러나 멀티 코어를 사용할 수 없기 때문에 성능 관련성에 문제가 있습니다.
모듈 메커니즘/commonjs
우리는 서버 측 개발을 수행했습니다. 조직 코드가 우수하지 않으면 나중에 유지하기가 매우 어려울 것이므로 어떤 MVC와 3 층 아키텍처가 있을까요?
이제 프론트 엔드의 비즈니스 논리가 점차 백엔드에 가까워지고 있습니다. 단일 페이지 응용 프로그램의 경우 백엔드의 프로그램 논리를 초과했습니다.
페이지보기의 지속적인 증가는 JS 코드의 양이 급증하게됩니다. 프론트 엔드 코드를 잘 관리하는 방법 우물이 문제가되었으므로 요구 사항이 나타납니다 ...
추신 : 젠장 이시기는 nodejs와 한 번의 관계가 있습니다 ...
JavaScript는 모듈 식 시스템이 없으므로 CommonJS는 JS에 대규모 응용 프로그램을 개발하기위한 기초를 제공 할 것을 제안했습니다.
모듈 참조
수학적 계산과 같은 모듈을 참조하려면 :
var math = require ( 'math');
모듈 정의
우리가 자신의 모듈을 정의하려면이 작업을 수행 할 수 있습니다.
코드 사본은 다음과 같습니다.
Exports.add = function () {
반환 합계;
}
이 기능이 수학에 정의되면 사용할 수 있습니다.
math.add ();
모듈 ID
모듈 식별자는 요구되는 매개 변수입니다. 낙타로 명명되어야하며 파일 경로를 가리 킵니다. 여기에서 요구 사항과 매우 유사합니다.
모듈 구현
노드 모듈 구현은 두 가지 범주로 나뉩니다. 하나는 시스템 레벨 코어 모듈이고 다른 하나는 사용자가 작성한 파일 모듈입니다.
코어 모듈은 컴파일 프로세스 동안 이진 파일로 변환됩니다. 노드 프로세스가 시작되면 일부 핵심 모듈이 메모리에 직접로드됩니다 (파일 위치, 컴파일 및 실행)
파일 모듈을 동적으로로드해야하며 속도는 비교적 느립니다.
그러나 일단로드되면 해당 파일이 캐시되고 캐시 된 파일 (컴파일 된 파일)이 다시 가져 오면 (컴파일 된 파일) 읽습니다.
여기서 조금 더 이야기합시다. 밑줄을 사용하면 HTML을 컴파일하여 템플릿 함수를 형성합니다 (실제로 함수 일뿐). 실제로 이것은 캐시 될 수 있습니다.
프로젝트를 배포하기 전에 컴파일 된 기능을 저장하고 HTML 템플릿 파일을 제거합니다 (최적화 효과는 모르겠습니다)
노드에서 각 모듈은 객체입니다.
코드 사본은 다음과 같습니다.
함수 모듈 (id, parent) {
this.id = id;
this.exports = {};
// 부모는 키워드입니다. 무작위로 사용해서는 안됩니다.
this.parent = 부모;
if (parent && parent.children) {
Parent.children.push (this);
}
this.filename = null;
this.loaded = false;
this.children = [];
}
컴파일 및 실행 중에 파일 모듈을 소개하는 마지막 단계. 특정 파일을 찾으면 Node는 새 모듈 객체를 생성 한 다음 경로에 따라로드하고 컴파일하게됩니다.
성공적으로 컴파일 된 각 모듈은 파일 경로를 모듈의 색인으로 캐시합니다 ._Cache
각 모듈 파일에는 요구, 내보내기 및 모듈의 세 가지 변수가 있지만 파일에는 정의되지 않습니다 (__filename__ 및 __dirname__ 변수도).
실제로 컴파일 프로세스 중에 노드는 JavaScript 파일 헤드 및 테일의 내용을 랩핑합니다 (사용자 지정 기능을 창에 전달하는 것과 동일).
코드 사본은 다음과 같습니다.
(함수 (내보내기, 요구, 모듈, __filename__, __dirname__) {
var math = require ( 'math');
Exports.area = 함수 (반경) {
반품 '';
};
});
이런 식으로 모듈은 분리되어 서로 영향을 미치지 않습니다. 밑줄의 편집과 다소 비슷합니다 ...
패키지 및 NPM
노드는 자체 코어 모듈을 구성하므로 타사 파일 모듈을 순서대로 작성하고 사용할 수 있지만 타사 모듈에서는 여전히 다양한 장소에서 모듈이 해시됩니다.
서로 직접 참조 할 수는 없습니다. 모듈 아웃소싱 및 NPM은 연결을 설정하는 메커니즘입니다.
추신 : 많은 모듈이 패키지를 형성합니다. 이 패키지의 개념은 Java 패키지의 개념과 유사합니다.
패키지 구조의 감압 후 여러 파일이 형성됩니다.
package.json 설명 파일
bin bin 실행 가능한 바이너리 디렉토리
lib JavaScript 코드 디렉토리
doc 문서화 (기본적으로 눈부신)
test 테스트 데모
위의 것은 CommonJS 패키지의 일부 사양이지만 약간 (초보자)를 배울 수 있으며 NPM은 능숙해야합니다. NPM의 도움으로 관리 패키지 설치에 능숙 할 수 있습니다.
종속성 패키지를 설치하십시오
종속성 패키지 설치는 일반적인 방법입니다.
NPM 설치 익스프레스
실행 후 NODE_MODULES 디렉토리가 현재 디렉토리에서 생성되고 그 아래에 Express 디렉토리가 생성됩니다 ...
PS : Express는 Nodejs에서 인기있는 웹 개발 프레임 워크로 웹 애플리케이션을 신속하게 개발하도록 도와줍니다.
설치가 완료되면 다음을 호출 할 수 있습니다.
코드 사본은 다음과 같습니다.
var express = 요구 사항 ( 'Express');
결론
이 섹션은 단순히 끝났으며 프로젝트의 실제 전투 과정은 점차 깊어 질 것입니다.