모듈 경로 확인 규칙
숙련된 C 프로그래머는 새 프로그램을 작성할 때 make 파일부터 시작합니다. 마찬가지로, NodeJS를 사용하여 프로그램을 작성하기 전에, 집을 수리할 때 먼저 비계를 세우는 것처럼, 좋은 시작을 위해 먼저 디렉터리 구조와 코드의 배포 방법을 준비해야 합니다. 본 장에서는 이와 관련된 다양한 지식을 소개한다.
모듈 경로 확인 규칙
require 함수는 슬래시(/) 또는 드라이브 문자(C:)로 시작하는 절대 경로와 ./로 시작하는 상대 경로도 지원한다는 것을 이미 알고 있습니다. 그러나 이 두 경로는 모듈 간에 강한 결합 관계를 형성합니다. 모듈 파일의 저장 위치가 변경되면 이 모듈을 사용하는 다른 모듈의 코드도 이에 맞게 조정되어야 하므로 전체적으로 문제가 됩니다. . 따라서 require 함수는 foo/bar와 유사하게 작성된 세 번째 형태의 경로를 지원하며, 모듈 위치를 찾을 때까지 다음 규칙에 따라 경로를 차례로 구문 분석합니다.
내장 모듈
require 함수에 전달된 이름이 NodeJS 내장 모듈 이름인 경우 경로 분석이 수행되지 않고 require('fs')와 같이 내보낸 내부 모듈의 객체가 직접 반환됩니다.
node_modules 디렉터리
NodeJS는 모듈 저장을 위한 특별한 node_modules 디렉터리를 정의합니다. 예를 들어, 모듈의 절대 경로는 /home/user/hello.js입니다. require('foo/bar') 메소드를 사용하여 모듈에 모듈을 로드하면 NodeJS는 다음 경로를 순서대로 사용하려고 시도합니다. .
/home/user/node_modules/foo/bar /home/node_modules/foo/bar /node_modules/foo/bar
NODE_PATH 환경 변수
PATH 환경 변수와 유사하게 NodeJS에서는 NODE_PATH 환경 변수를 통해 추가 모듈 검색 경로를 지정할 수 있습니다. NODE_PATH 환경 변수에는 하나 이상의 디렉터리 경로가 포함되어 있으며 Linux에서는 :로, Windows에서는 ;로 구분됩니다. 예를 들어 다음 NODE_PATH 환경 변수가 정의됩니다.
NODE_PATH=/home/user/lib:/home/lib
require('foo/bar')를 사용하여 모듈을 로드할 때 NodeJS는 다음 경로를 순서대로 시도합니다.
/home/user/lib/foo/bar /home/lib/foo/bar
팩
우리는 JS 모듈의 기본 단위가 단일 JS 파일이라는 것을 이미 알고 있지만 더 복잡한 모듈은 여러 하위 모듈로 구성되는 경우가 많습니다. 관리 및 사용을 용이하게 하기 위해 여러 하위 모듈로 구성된 대규모 모듈을 패키지라고 부르고 모든 하위 모듈을 동일한 디렉터리에 넣을 수 있습니다.
패키지를 구성하는 모든 하위 모듈 중에는 엔트리 모듈이 있어야 하며, 엔트리 모듈의 내보내기 개체는 패키지의 내보내기 개체로 사용됩니다. 예를 들어 다음과 같은 디렉터리 구조가 있습니다.
- /home/user/lib/ - cat/ head.js body.js main.js
cat 디렉토리는 3개의 하위 모듈을 포함하는 패키지를 정의합니다. main.js는 입력 모듈 역할을 하며 그 내용은 다음과 같습니다.
var head = require('./head'); var body = require('./body'); exports.create = function (name) { return { name: name, head: head.create(), body: body.create() }; };
다른 모듈에서 패키지를 사용하는 경우 해당 패키지의 진입 모듈을 로드해야 합니다. 위의 예를 계속해서 require('/home/user/lib/cat/main')을 사용하면 목표를 달성할 수 있지만 경로에 항목 모듈 이름이 나타나는 것은 좋은 생각이 아닌 것 같습니다. 따라서 패키지가 단일 모듈처럼 작동하도록 하려면 약간의 추가 작업을 수행해야 합니다.
index.js
모듈의 파일명이 index.js인 경우, 모듈을 로딩할 때 모듈 파일 경로 대신에 모듈이 위치한 디렉터리의 경로를 사용할 수 있습니다. 따라서 위의 예에 따르면 다음 두 가지가 있습니다. 진술은 동일합니다.
var cat = require('/home/user/lib/cat'); var cat = require('/home/user/lib/cat/index');
이런 방식으로 처리한 후에는 패키지 디렉터리 경로만 require 함수에 전달하면 됩니다. 전체 디렉터리가 단일 모듈로 사용되는 것처럼 느껴져 더욱 전체적인 느낌을 줍니다.
package.json
항목 모듈의 파일 이름과 저장 위치를 맞춤 설정하려면 패키지 디렉터리에 package.json 파일을 포함하고 여기에 항목 모듈의 경로를 지정해야 합니다. 위 예제의 cat 모듈은 다음과 같이 리팩터링될 수 있습니다.
- /home/user/lib/ - cat/ + doc/ - lib/ head.js body.js main.js + tests/ package.json
package.json의 내용은 다음과 같습니다.
{ "name": "cat", "main": "./lib/main.js" }
이런 방식으로 require('/home/user/lib/cat')를 사용하여 모듈을 로드할 수도 있습니다. NodeJS는 패키지 디렉터리의 package.json을 기반으로 항목 모듈의 위치를 찾습니다.

Vercel是什么?本篇文章带大家了解一下Vercel,并介绍一下在Vercel中部署 Node 服务的方法,希望对大家有所帮助!

gm是基于node.js的图片处理插件,它封装了图片处理工具GraphicsMagick(GM)和ImageMagick(IM),可使用spawn的方式调用。gm插件不是node默认安装的,需执行“npm install gm -S”进行安装才可使用。

如何用pkg打包nodejs可执行文件?下面本篇文章给大家介绍一下使用pkg将Node.js项目打包为可执行文件的方法,希望对大家有所帮助!

本篇文章带大家详解package.json和package-lock.json文件,希望对大家有所帮助!

本篇文章给大家分享一个Nodejs web框架:Fastify,简单介绍一下Fastify支持的特性、Fastify支持的插件以及Fastify的使用方法,希望对大家有所帮助!

node怎么爬取数据?下面本篇文章给大家分享一个node爬虫实例,聊聊利用node抓取小说章节的方法,希望对大家有所帮助!

本篇文章给大家分享一个Node实战,介绍一下使用Node.js和adb怎么开发一个手机备份小工具,希望对大家有所帮助!

先介绍node.js的安装,再介绍使用node.js构建一个简单的web服务器,最后通过一个简单的示例,演示网页与服务器之间的数据交互的实现。


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

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

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