나에게서 Nodejs 배우기(3) --- Node.js module_javascript 기술
소개 및 정보
Node.js의 공식 API를 보면 Node.js 자체가 http://nodejs.org/api/ 많은 핵심 모듈을 제공하고 있음을 알 수 있습니다. 이러한 핵심 모듈은 바이너리 파일로 컴파일되어 require('모듈 이름)을 지정할 수 있습니다. ') 가져옵니다. 코어 모듈의 로딩 우선순위가 가장 높습니다(코어 모듈과 이름이 같은 모듈이 있는 경우 반영됩니다)
(이번에는 주로 커스텀 모듈에 대해 이야기하겠습니다.)
Node.js에는 파일 모듈이라는 모듈 유형도 있는데, 이는 JavaScript 코드 파일(파일 접미사인 .js), JSON 형식 텍스트 파일(파일 접미사인 .json) 또는 편집된 파일일 수 있습니다. C/ C 파일(.node 파일 접미사)
파일 모듈 액세스 방법은 require('/filename.suffix') require('./filename.suffix') requrie('../filename.suffix')를 통해 액세스하는 것이며, 파일 접미사는 생략할 수 있습니다. with "/"로 시작하는 것은 절대 경로로 로드하는 것을 의미하고, "./"로 시작하는 것을 의미하고 "../"로 시작하는 것은 상대 경로로 시작하는 것을 의미하며 "./"로 시작하는 것은 동일한 디렉터리의 파일을 로드하는 것을 의미합니다. 🎜>
앞에서 언급한 것처럼 파일 접미사는 생략될 수 있습니다. Nodejs는 우선순위 js 파일 > json 파일 > 맞춤 모듈 만들기카운터를 예로 들어
/* 출력 값 설정*/
function seOutputVal (val) {
outputVal = val;
}
/* 증분 설정 */
function setIncrement(incrementVal){
increment = incrementVal;
}
/* 출력*/
function printNextCount()
{
outputVal = increment;
console.log(outputVal) ;
}
function printOutputVal() {
console.log(outputVal);
}
exports.seOutputVal = seOutputVal;
exports.setIncrement = setIncrement;
module.exports.printNextCount = printNextCount;
사용자 정의 모듈 예제 소스 코드
두 가지 중요한 개체:
require는 외부에서 모듈을 얻는 것입니다.
내보내기는 모듈 인터페이스를 노출하는 것입니다.
*/
var counter = require('./1_modules_custom_counter');
console.log('모듈 [1_modules_custom_counter]에 대한 첫 번째 호출');
counter.seOutputVal(10); //10부터 시작하는 계산 설정
counter.setIncrement (10)
counter.printNextCount ();
counter.printNextCount();
counter.printNextCount();
counter.printNextCount();
/*
동일한 모듈을 여러 번 호출해야 함 반복적으로 로드되지 않음
*/
var counter = require('./1_modules_custom_counter');
console.log('모듈 [1_modules_custom_counter]에 대한 두 번째 호출');
counter.printNextCount( );
Custom 모드 호출 소스코드
실행해보면, 내보내기와 module.exports를 통해 노출된 모든 메소드에 접근이 가능한 것을 확인할 수 있습니다!
예제에서 볼 수 있듯이 require('./1_modules_custom_counter')를 통해 두 번이나 모듈을 얻었는데 두 번째 참조 이후 printNextCount() 메서드가 60부터 시작했습니다~~~
그 이유는 node.js가 requirerequire를 통해 동일한 모듈을 여러 번 호출하면 반복적으로 로드되지 않기 때문입니다. Node.js는 로드된 모든 파일 모듈을 파일 이름을 기준으로 캐시하므로 다시 로드되지 않습니다
참고: 파일명별 캐싱은 실제 파일명을 의미하며, 들어오는 경로 형태가 다르다고 해서 다른 파일로 간주되지는 않습니다.
제가 만든 1_modules_custom_counter 파일에 printOutputVal() 메소드가 있는데, 이는 내보내기나 module.exports를 통한 외부 공용 액세스 메소드를 제공하지 않습니다.
1_modules_load 파일을 직접 접속해서 실행하면 어떻게 될까요?
대답은 다음과 같습니다. TypeError: Object #
내보내기와 module.exports의 차이점
위 예제 이후에는 내보내기 및 module.exports 공개 메소드를 통해 액세스할 수 있습니다! 그럼 둘 다 효과를 볼 수 있으니 차이가 좀 있을 텐데요~~~ 예를 들어보겠습니다!
var counter = 0
exports; .printNextCount = 함수(){
counter = 2;
console.log(counter);
}
var isEq = (exports === module.exports);
console.log (isEq) ;
2_modules_diff_exports.js 파일 소스 코드
새 2_modules_diff_exports_load.js 파일을 생성하고 호출해 보겠습니다
var Counter = require('./2_modules_diff_exports) ');
Counter.printNextCount();
호출 후 실행 결과는 위와 같습니다
2_modules_diff_exports_load.js 파일( var isEq = (exports === module.exports); )에 isEq 값을 출력하고 true가 반환됩니다.
추신: 등호가 3개 있다는 점에 유의하세요. 확실하지 않다면 직접 정보를 확인하세요!
성급하게 결론을 내리지 마세요. 이 두 JS 파일을 해당 module.exports 코드로 변경하세요.
//수정된 2_modules_diff_exports.js 소스코드
var counter = 0;
module.exports = function(){
counter = 10;
this.printNextCount = function()
{
console.log( 카운터);
}
}
var isEq = (exports === module.exports);
console.log(isEq);
//2_modules_diff_exports_load의 수정된 소스코드입니다. js 파일은 다음과 같습니다
var Counter = require('./2_modules_diff_exports');
var counterObj = new Counter();
counterObj.printNextCount();
호출 후 실행 결과는 위와 같습니다
2_modules_diff_exports_load.js 파일( var isEq = (exports === module.exports); )에 isEq 값을 출력했는데, 이전에 얻은 결과와 일치하지 않는 false를 반환했습니다!
추신: Counter.printNextCount()를 사용하여 액세스하지 마세요. 오류 메시지만 표시됩니다.
설명을 제공하는 API
http://nodejs.org/api/modules.html
내보내기는 확장에만 적합하도록 module.exports에 대한 참조입니다. 생성자와 같은 단일 항목을 내보내는 경우 대신 module.exports를 직접 사용하는 것이 좋습니다.
내보내기는 단지 module.exports입니다. 주소 참조. Nodejs는 module.exports 지점만 내보냅니다. 내보내기 포인터가 변경되면 내보내기가 더 이상 module.exports를 가리키지 않으므로 더 이상 내보낼 수 없다는 의미입니다.
다른 이해 참조:
http://www.hacksparrow.com/node-js-exports-vs-module-exports.html
http://zihua.li/2012/03/use-module-exports-or-exports-in-node/
module.exports는 실제 인터페이스이고, 내보내기는 이를 위한 보조 도구일 뿐입니다. 호출에 궁극적으로 반환되는 것은 내보내기 대신 module.exports입니다.
내보내기로 수집된 모든 속성과 메서드는 Module.exports에 할당됩니다. 물론 이에 대한 전제가 있습니다. 즉, module.exports 자체에는 속성과 메서드가 없습니다.
module.exports에 이미 일부 속성과 메서드가 있는 경우 내보내기로 수집된 정보는 무시됩니다.
내보내기 및 module.exports 표지
위에서도 기본적으로는 내보내기와 module.exports의 관계와 차이점을 이해하고 있는데, printNextCount() 메소드에 대해 내보내기와 module.exports가 동시에 존재한다면 결과는 어떻게 될까요?
통화결과
결과를 보면 오류가 보고되지 않아 이 방식으로 정의할 수 있음을 알 수 있지만 결국 module.exports가 내보내기를 재정의합니다.
결과가 오류를 보고하지는 않지만, 이대로 사용할 경우 개발 과정에서 필연적으로 문제가 발생할 수 있으므로
1. module.exports와 내보내기를 별도로 정의하지 않는 것이 가장 좋습니다
2. NodeJs 개발자는 객체를 내보내려면 module.exports를 사용하고
여러 메서드와 변수를 내보내려면 내보내기를 사용할 것을 권장합니다.기타...
API에서 제공하는 다른 메소드도 있으므로 자세한 내용은 다루지 않겠습니다. 위의 예시를 토대로 출력해보면 바로 알 수 있을 것입니다.
모듈.id
일반적으로 완전히 구문 분석된 파일 이름인 문자열 유형의 모듈 식별자를 반환합니다.
모듈.파일명
완전히 구문 분석된 문자열 유형의 파일 이름을 반환합니다.
모듈.로드됨
로딩 완료 여부를 나타내는 부울 유형을 반환합니다.
모듈.부모
이 모듈을 참조하는 모듈을 반환합니다.
모듈.어린이
이 모듈에서 참조하는 모든 모듈 객체의 배열을 반환합니다.

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

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

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

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

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

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

뜨거운 주제








![WLAN 확장 모듈이 중지되었습니다. [수정]](https://img.php.cn/upload/article/000/465/014/170832352052603.gif?x-oss-process=image/resize,m_fill,h_207,w_330)
Windows 컴퓨터의 WLAN 확장 모듈에 문제가 있는 경우 인터넷 연결이 끊어질 수 있습니다. 이러한 상황은 종종 좌절감을 주지만 다행히도 이 문서에서는 이 문제를 해결하고 무선 연결이 다시 제대로 작동하도록 하는 데 도움이 될 수 있는 몇 가지 간단한 제안 사항을 제공합니다. WLAN 확장성 모듈 복구가 중지되었습니다. Windows 컴퓨터에서 WLAN 확장성 모듈의 작동이 중지된 경우 다음 제안에 따라 문제를 해결하십시오. 네트워크 및 인터넷 문제 해결사를 실행하여 무선 네트워크 연결을 비활성화했다가 다시 활성화하십시오. WLAN 자동 구성 서비스 다시 시작 전원 옵션 수정 수정 고급 전원 설정 네트워크 어댑터 드라이버 재설치 일부 네트워크 명령 실행 이제 자세히 살펴보겠습니다.

이 문서에서는 무선 LAN 확장 모듈을 시작할 수 없음을 나타내는 이벤트 ID10000을 해결하는 방법을 자세히 설명합니다. 이 오류는 Windows 11/10 PC의 이벤트 로그에 나타날 수 있습니다. WLAN 확장성 모듈은 IHV(독립 하드웨어 공급업체) 및 ISV(독립 소프트웨어 공급업체)가 사용자에게 맞춤형 무선 네트워크 기능을 제공할 수 있도록 하는 Windows의 구성 요소입니다. Windows 기본 기능을 추가하여 기본 Windows 네트워크 구성 요소의 기능을 확장합니다. WLAN 확장성 모듈은 운영 체제가 네트워크 구성 요소를 로드할 때 초기화의 일부로 시작됩니다. 무선 LAN 확장 모듈에 문제가 발생하여 시작할 수 없는 경우 이벤트 뷰어 로그에 오류 메시지가 표시될 수 있습니다.

Non-Blocking, Event-Driven 기반으로 구축된 Node 서비스는 메모리 소모가 적다는 장점이 있으며, 대규모 네트워크 요청을 처리하는데 매우 적합합니다. 대규모 요청을 전제로 '메모리 제어'와 관련된 문제를 고려해야 합니다. 1. V8의 가비지 수집 메커니즘과 메모리 제한 Js는 가비지 수집 기계에 의해 제어됩니다.

이 기사는 NodeJS V8 엔진의 메모리 및 가비지 수집기(GC)에 대한 심층적인 이해를 제공할 것입니다. 도움이 되기를 바랍니다.

파일 모듈은 파일 읽기/쓰기/열기/닫기/삭제 추가 등과 같은 기본 파일 작업을 캡슐화한 것입니다. 파일 모듈의 가장 큰 특징은 모든 메소드가 **동기** 및 ** 두 가지 버전을 제공한다는 것입니다. 비동기**, sync 접미사가 있는 메서드는 모두 동기화 메서드이고, 없는 메서드는 모두 이기종 메서드입니다.

1. sys 모듈 소개 앞서 소개한 os 모듈은 주로 운영 체제용이지만, 이 글의 sys 모듈은 주로 Python 인터프리터용입니다. sys 모듈은 Python과 함께 제공되는 모듈입니다. Python 인터프리터와 상호 작용하기 위한 인터페이스입니다. sys 모듈은 Python 런타임 환경의 다양한 부분을 처리하기 위한 많은 함수와 변수를 제공합니다. 2. sys 모듈에서 일반적으로 사용되는 메서드 dir() 메서드를 통해 sys 모듈에 어떤 메서드가 포함되어 있는지 확인할 수 있습니다. import sys print(dir(sys))1.sys.argv-get 명령줄 매개변수 sys. argv는 프로그램 외부에서 명령을 구현하는 데 사용됩니다. 프로그램에 매개변수가 전달되고 명령줄 매개변수 열을 얻을 수 있습니다.

서문 이 기사에서는 계속해서 Python 컬렉션 모듈을 소개합니다. 이번에는 그 안에 있는 명명된 튜플, 즉 명명된 튜플의 사용을 주로 소개합니다. 더 이상 고민할 필요 없이 시작하겠습니다. 좋아요, 팔로우 및 전달을 기억하세요~ ^_^네임드 튜플 생성하기 Python 컬렉션의 네임드 튜플 클래스인 Tuples는 튜플의 각 위치에 의미를 부여하고 코드의 가독성을 향상시킵니다. 일반 튜플이 사용되는 모든 곳에서 사용할 수 있으며 위치 인덱스가 아닌 이름으로 필드에 액세스하는 기능을 추가합니다. 이는 Python 내장 모듈 컬렉션에서 나옵니다. 사용되는 일반 구문은 다음과 같습니다. import collections XxNamedT

이벤트 루프는 Node.js의 기본 부분이며 메인 스레드가 차단되지 않도록 하여 비동기 프로그래밍을 가능하게 합니다. 이벤트 루프를 이해하는 것은 효율적인 애플리케이션을 구축하는 데 중요합니다. 다음 기사는 Node.js의 이벤트 루프에 대한 심층적인 이해를 제공할 것입니다. 도움이 되기를 바랍니다!
