Node의 url 모듈과 querystring 모듈에 대해 이야기해 보겠습니다.
url
모듈과 querystring
모듈은 두 가지 매우 중요한 URL
처리 모듈입니다. node
서버를 개발할 때 자주 사용됩니다. url
模块和querystring
模块是非常重要的两个URL
处理模块。在做node
服务端的开发时会经常用到。
url
在介绍url
模块之前我们先来一张图,看懂了这张图对于url
这个模块你就基本上没什么问题了。
我们来解释下各自的含义
- protocol:协议,需要注意的是包含了
:
,并且是小写的。【相关教程推荐:nodejs视频教程、编程教学】 - slashes:如果
:
后面跟了两个//
,那么为true。 - auth:认证信息,如果有密码,为
usrname:passwd
,如果没有,则为usrname
。注意,这里区分大小写。 - host:主机名。注意包含了端口,比如
ke.qq.com:8080
,并且是小写的。 - hostname:主机名,不包含端口,并且是小写的。
- port: 端口号。
- path:路径部分,包含search部分。
- pathname:路径部分,不包含search部分。
- search:查询字符串,注意,包含了
?
,此外,值是没有经过decode的。 - query:字符串 或者 对象。如果是字符串,则是
search
去掉?
,其余一样;如果是对象,那么是decode过的。 - hash:哈希部分,注意包含了
#
。 - href:原始的地址。不过需要注意的是,
protocol
、host
会被转成小写字母。
下面我们来讲解下它的三个常用方法
parse(urlString, parseQueryString, slashesDenoteHost)
该方法将url
字符串,解析成object
,便于开发者进行操作。
const url = require("url"); const str = "http://user:password@randy.com:8080/index.html?nick=%E4%B8%AD%E6%96%87#part=1"; const obj = url.parse(str); console.log(obj);
输出
该方法还支持传递另外两个参数,parseQueryString
和slashesDenoteHos
parseQueryString:(默认为false)如为false
,则urlObject.query
为未解析的字符串,比如nick=%E4%B8%AD%E6%96%87
,且对应的值不会decode
;如果parseQueryString
为true,则urlObject.query
为object
,比如{ nick: '中文' }
,且值会被`decode;
const url = require("url"); const str = "http://user:password@randy.com:8080/index.html?nick=%E4%B8%AD%E6%96%87#part=1"; const obj2 = url.parse(str, true); console.log(obj2);
slashesDenoteHos:(默认为false)如果为true
,那么类似//randy/nick
里的randy
就会被认为是hostname
;如果为false
,则randy
被认为是pathname
的一部分。
光看起来可能不太理解这句话的含义,下面笔者举个例子我相信你们就明白了。
const str2 = "//randy/nick"; const obj3 = url.parse(str2, true, false); console.log(obj3); const obj4 = url.parse(str2, true, true); console.log(obj4);
format(urlObject)
这个方法就是parse
的反向操作。将对象转成url
字符串。
const pathObj = { protocol: "http:", slashes: true, auth: "user:password", host: "randy.com:8080", port: "8080", hostname: "randy.com", hash: "#part=1", search: "?nick=%E4%B8%AD%E6%96%87", query: "nick=%E4%B8%AD%E6%96%87", pathname: "/index.html", path: "/index.html?nick=%E4%B8%AD%E6%96%87", href: "http://user:password@randy.com:8080/index.html?nick=%E4%B8%AD%E6%96%87#part=1", }; console.log(url.format(pathObj)); // http://user:password@randy.com:8080/index.html?nick=%E4%B8%AD%E6%96%87#part=1
resolve(from, to)
该方法用于解析相对于基本URL
的目标URL
。
console.log(url.resolve("/one/two/three", "four")); // /one/two/four console.log(url.resolve("http://example.com/", "/one")); // http://example.com/one console.log(url.resolve("http://example.com/one", "/two")); // http://example.com/two console.log(url.resolve("http://example.com/one/ddd/ddd/ddd", "./two")); // http://example.com/one/ddd/ddd/two console.log(url.resolve("http://example.com/one/ddd/ddd/ddd", "../two")); // http://example.com/one/ddd/two console.log(url.resolve("http://example.com/one/ddd/ddd/ddd", ".../two")); // http://example.com/one/ddd/ddd/.../two
querystring
querystring
这个模块,也是用来做url
查询参数的解析。这里我们重点分析下它的parse
和stringify
两个方法。
parse(str, sep, eq, options)
parse
是将查询字符串转成对象类型,并且也会decode
。
const querystring = require("querystring"); const str = "nick=randy&age=24&nick2=%E4%B8%AD%E6%96%87"; const obj = querystring.parse(str); console.log(obj); // { nick: 'randy', age: '24', nick2: '中文' }
下面我们再来看看它的第二和第三个参数。其实相当于可以替换&、=
为自定义字符,下面笔者举个例子就很快明白了。
const str1 = "name-randy|country-cn"; const obj1 = querystring.parse(str1); console.log(obj1); // { 'name-randy|country-cn': '' } const obj2 = querystring.parse(str1, "|", "-"); console.log(obj2); // { name: 'randy', country: 'cn' }
相当于把&
替换成了|
,把=
替换成了-
。笔者感觉配到这种情况应该不多。
stringify(obj, sep, eq, options)
这个方法就是上面parse
url
url
모듈을 소개하기 전에 이 사진이 url
에 어떤 영향을 미치는지 이해하기 위해 사진을 찍어 보겠습니다. 기본적으로 이 모듈에는 아무런 문제가 없습니다. 
- 프로토콜: 프로토콜
:
가 포함되어 있으며 소문자라는 점에 유의해야 합니다. [권장 관련 튜토리얼: nodejs 동영상 튜토리얼, 프로그래밍 교육] - 슬래시:
:
를 따르는 경우 by//
가 2개 있으면 true입니다. - auth: 인증 정보로, 비밀번호가 있으면
usrname:passwd
, 없으면usrname
입니다. 대소문자를 구분한다는 점에 유의하세요. - 호스트: 호스트 이름. 포트는
ke.qq.com:8080
과 같이 포함되며 소문자입니다. - 호스트 이름: 호스트 이름이며 포트를 포함하지 않으며 소문자입니다.
- 포트: 포트 번호.
- 경로: 검색 부분을 포함한 경로 부분입니다.
- 경로명: 경로 부분, 검색 부분 제외.
- 검색: 쿼리 문자열에는
?
가 포함되어 있습니다. 또한 값이 디코딩되지 않습니다. - 쿼리: 문자열 또는 개체. 문자열이면
search
빼기?
이고 나머지는 동일하며 객체이면 디코딩됩니다. - hash: 해시 부분,
#
가 포함되어 있습니다. - href: 원래 주소. 단,
protocol
과host
는 소문자로 변환되므로 주의하시기 바랍니다.
parse(urlString, parseQueryString, slashesDenoteHost) h4>🎜이 방법 url
문자열을 개발자가 조작하기 편리한 object
로 구문 분석합니다. 🎜const obj3 = {
nick: "randy",
age: "24",
};
const str4 = querystring.stringify(obj3);
console.log(str4); // nick=randy&age=24
로그인 후 복사🎜Output🎜🎜
🎜🎜이 메소드는 두 개의 다른 매개변수인 parseQueryString
및 slashesDenoteHos
🎜🎜parseQueryString 전달도 지원합니다. false
인 경우 urlObject.query
는 nick=%E4%B8%AD%E6%96%87
와 같이 구문 분석되지 않은 문자열이며 다음에 해당합니다. 값은 디코드
되지 않습니다. parseQueryString
이 true인 경우 urlObject.query
는 객체
입니다. > { nick: '중국어' }, 값은 `디코딩됩니다. 🎜const obj5 = {
name: "randy",
country: "cn",
};
const str6 = querystring.stringify(obj5, "|", "-");
console.log(str6); // name-randy|country-c
로그인 후 복사로그인 후 복사🎜
🎜🎜slashesDenoteHos: (기본값은 false) true
인 경우 와 유사 >/ /randy/nick
의 randy
는 호스트 이름
으로 간주됩니다. false
이면 randy< /code> code>는 <code>pathname
의 일부로 간주됩니다. 🎜🎜언뜻 보면 이 문장의 의미를 이해하지 못할 수도 있습니다. 아래 예를 들어보시면 이해하실 거라 믿습니다. 🎜rrreee🎜
🎜< h4 data-id="heading-3">format(urlObject)
🎜이 메서드는 const obj3 = { nick: &quot;randy&quot;, age: &quot;24&quot;, }; const str4 = querystring.stringify(obj3); console.log(str4); // nick=randy&amp;age=24
const obj5 = { name: &quot;randy&quot;, country: &quot;cn&quot;, }; const str6 = querystring.stringify(obj5, &quot;|&quot;, &quot;-&quot;); console.log(str6); // name-randy|country-c
파싱
의 반대 작업입니다. 개체를 url
문자열로 변환합니다. 🎜rrreeeresolve(from, to)
🎜이 방법은 기본URL</code를 기준으로 대상을 확인하는 데 사용됩니다. > <code>URL
. 🎜rrreeequerystring
🎜querystring
이 모듈은 url
쿼리 매개변수를 구문 분석하는 데에도 사용됩니다. 여기서는 parse
와 stringify
라는 두 가지 방법을 분석하는 데 중점을 둡니다. 🎜parse(str, sep, eq, options)
🎜parse
는 쿼리 문자열을 객체 유형으로 변환합니다. , 디코드
도 가능합니다. 🎜rrreee🎜 두 번째와 세 번째 매개변수를 살펴보겠습니다. 실제로 & 및 =
를 사용자 정의 문자로 바꾸는 것과 같습니다. 작성자가 아래에 예를 제시하면 빠르게 이해할 수 있습니다. 🎜rrreee🎜&
를 |
로 바꾸고, =
를 -
로 바꾸는 것과 같습니다. 저자는 이런 상황이 드물어야 한다고 생각합니다. 🎜stringify(obj, sep, eq, options)
🎜이 방법은 위의구문 분석
운영합니다. 아래 예시로 바로 넘어가겠습니다🎜rrreee🎜이 방법은 맞춤 구분 기호도 지원합니다. 🎜const obj5 = { name: &quot;randy&quot;, country: &quot;cn&quot;, }; const str6 = querystring.stringify(obj5, &quot;|&quot;, &quot;-&quot;); console.log(str6); // name-randy|country-c
更多node相关知识,请访问:nodejs 教程!
위 내용은 Node의 url 모듈과 querystring 모듈에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 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)

뜨거운 주제











PHP와 Vue: 프론트엔드 개발 도구의 완벽한 조합 오늘날 인터넷이 빠르게 발전하는 시대에 프론트엔드 개발은 점점 더 중요해지고 있습니다. 사용자가 웹 사이트 및 애플리케이션 경험에 대한 요구 사항이 점점 더 높아짐에 따라 프런트 엔드 개발자는 보다 효율적이고 유연한 도구를 사용하여 반응형 및 대화형 인터페이스를 만들어야 합니다. 프론트엔드 개발 분야의 두 가지 중요한 기술인 PHP와 Vue.js는 함께 사용하면 완벽한 도구라고 볼 수 있습니다. 이 기사에서는 독자가 이 두 가지를 더 잘 이해하고 적용할 수 있도록 PHP와 Vue의 조합과 자세한 코드 예제를 살펴보겠습니다.

C# 개발자로서 우리의 개발 작업에는 일반적으로 프런트엔드와 백엔드 개발이 포함됩니다. 기술이 발전하고 프로젝트의 복잡성이 증가함에 따라 프런트엔드와 백엔드의 공동 개발이 점점 더 중요해지고 복잡해졌습니다. 이 문서에서는 C# 개발자가 개발 작업을 보다 효율적으로 완료하는 데 도움이 되는 몇 가지 프런트 엔드 및 백엔드 공동 개발 기술을 공유합니다. 인터페이스 사양을 결정한 후 프런트엔드와 백엔드의 공동 개발은 API 인터페이스의 상호 작용과 분리될 수 없습니다. 프론트엔드와 백엔드 협업 개발이 원활하게 진행되기 위해서는 가장 중요한 것은 좋은 인터페이스 사양을 정의하는 것입니다. 인터페이스 사양에는 인터페이스 이름이 포함됩니다.

프론트엔드 개발 인터뷰에서 일반적인 질문은 HTML/CSS 기초, JavaScript 기초, 프레임워크 및 라이브러리, 프로젝트 경험, 알고리즘 및 데이터 구조, 성능 최적화, 크로스 도메인 요청, 프론트엔드 엔지니어링, 디자인 패턴, 새로운 기술 및 트렌드. 면접관 질문은 후보자의 기술적 능력, 프로젝트 경험, 업계 동향에 대한 이해를 평가하기 위해 고안되었습니다. 따라서 지원자는 자신의 능력과 전문성을 입증할 수 있도록 해당 분야에 대한 충분한 준비를 갖추어야 합니다.

Django는 빠른 개발과 깔끔한 방법을 강조하는 Python으로 작성된 웹 애플리케이션 프레임워크입니다. Django는 웹 프레임워크이지만 Django가 프런트엔드인지 백엔드인지에 대한 질문에 답하려면 프런트엔드와 백엔드의 개념에 대한 깊은 이해가 필요합니다. 프론트엔드는 사용자가 직접 상호작용하는 인터페이스를 의미하고, 백엔드는 HTTP 프로토콜을 통해 데이터와 상호작용하는 서버측 프로그램을 의미합니다. 프론트엔드와 백엔드가 분리되면 프론트엔드와 백엔드 프로그램을 독립적으로 개발하여 각각 비즈니스 로직과 인터랙티브 효과, 데이터 교환을 구현할 수 있습니다.

빠르고 효율적인 프로그래밍 언어인 Go 언어는 백엔드 개발 분야에서 널리 사용됩니다. 그러나 Go 언어를 프런트엔드 개발과 연관시키는 사람은 거의 없습니다. 실제로 프런트엔드 개발에 Go 언어를 사용하면 효율성이 향상될 뿐만 아니라 개발자에게 새로운 지평을 열어줄 수도 있습니다. 이 기사에서는 프런트엔드 개발에 Go 언어를 사용할 수 있는 가능성을 살펴보고 독자가 이 영역을 더 잘 이해할 수 있도록 구체적인 코드 예제를 제공합니다. 전통적인 프런트엔드 개발에서는 사용자 인터페이스를 구축하기 위해 JavaScript, HTML, CSS를 사용하는 경우가 많습니다.

인스턴트 메시징을 구현하는 방법에는 WebSocket, Long Polling, Server-Sent Events, WebRTC 등이 있습니다. 자세한 소개: 1. 실시간 양방향 통신을 달성하기 위해 클라이언트와 서버 사이에 지속적인 연결을 설정할 수 있는 WebSocket 프런트 엔드는 WebSocket API를 사용하여 WebSocket 연결을 생성하고 송수신을 통해 인스턴트 메시징을 달성할 수 있습니다. 2. 실시간 통신 등을 시뮬레이션하는 기술인 Long Polling

Django: 프론트엔드와 백엔드 개발을 모두 처리할 수 있는 마법의 프레임워크! Django는 효율적이고 확장 가능한 웹 애플리케이션 프레임워크입니다. MVC, MTV를 포함한 다양한 웹 개발 모델을 지원할 수 있으며 고품질 웹 애플리케이션을 쉽게 개발할 수 있습니다. Django는 백엔드 개발을 지원할 뿐만 아니라 프런트엔드 인터페이스를 빠르게 구축하고 템플릿 언어를 통해 유연한 뷰 표시를 구현할 수 있습니다. Django는 프론트엔드 개발과 백엔드 개발을 완벽한 통합으로 결합하므로 개발자가 전문적으로 학습할 필요가 없습니다.

Go 프레임워크는 Go의 내장 라이브러리를 확장하여 사전 구축된 기능(예: 웹 개발 및 데이터베이스 운영)을 제공하는 구성 요소 집합입니다. 널리 사용되는 Go 프레임워크에는 Gin(웹 개발), GORM(데이터베이스 운영) 및 RESTful(API 관리)이 포함됩니다. 미들웨어는 HTTP 요청 처리 체인의 인터셉터 패턴으로, 핸들러를 수정하지 않고 인증이나 요청 로깅 등의 기능을 추가하는 데 사용됩니다. 세션 관리는 사용자 데이터를 저장하여 세션 상태를 유지합니다. gorilla/sessions를 사용하여 세션을 관리할 수 있습니다.
