返回顶部
首页 > 资讯 > 前端开发 > node.js >NodeJS学习笔记之(Url,QueryString,Path)模块
  • 134
分享到

NodeJS学习笔记之(Url,QueryString,Path)模块

学习笔记模块NodeJS 2022-06-04 17:06:34 134人浏览 泡泡鱼
摘要

一,开篇分析 这篇文章把这三个模块拿来一起说,原因是它们各自的篇幅都不是很长,其次是它们之间存在着依赖关系,所以依次介绍并且实例分析。废话不多说了,请看下面文档: (1),"Url模块"   来个小栗子:

一,开篇分析

这篇文章把这三个模块拿来一起说,原因是它们各自的篇幅都不是很长,其次是它们之间存在着依赖关系,所以依次介绍并且实例分析。废话不多说了,请看下面文档:

(1),"Url模块"

查看图片

  来个小栗子:  

var url = require('url');

 var queryUrl = "Http://localhost:8888/bb?name=bigbear&memo=helloworld" ;

 console.log(typeof url.parse(queryUrl)) ;

 console.log(url.parse(queryUrl)) ;

  运行结果: 

object // typeof 

 

 { 

     protocol: 'http:',

     slashes: true,

     auth: null,

     host: 'localhost:8888',

     port: '8888',

     hostname: 'localhost',

     hash: null,

     search: '?name=bigbear&memo=helloworld',

     query: 'name=bigbear&memo=helloworld',

     pathname: '/bb',

     path: '/bb?name=bigbear&memo=helloworld',

     href: 'http://localhost:8888/bb?name=bigbear&memo=helloworld'

 }

 加以说明如下:  

  protocol: 请求协议
  host: URL主机名已全部转换成小写, 包括端口信息
  auth:URL中身份验证信息部分
  hostname:主机的主机名部分, 已转换成小写
  port: 主机的端口号部分
  pathname: URL的路径部分,位于主机名之后请求查询之前
  search: URL 的“查询字符串”部分,包括开头的问号。
  path: pathname 和 search 连在一起。
  query: 查询字符串中的参数部分(问号后面部分字符串),或者使用 querystring.parse() 解析后返回的对象。
  hash: URL 的 “#” 后面部分(包括 # 符号)

 补充api:"url.fORMat(urlObj)"
  查看图片

  作用:输入一个 URL 对象,返回格式化后的 URL 字符串。

(2),"QueryString模块"

查看图片

  "QueryString" 模块用于实现URL参数字符串与参数对象的互相转换,来个栗子,如下所示:

var url = require('url');

 var qs = require('querystring');

 var queryUrl = "http://localhost:8888/bb?name=bigbear&memo=helloworld" ;

 queryUrl = url.parse(queryUrl).query ;

 console.log(queryUrl) ;

 console.log(qs.parse(queryUrl)) ;

  运行结果·如下:

    name=bigbear&memo=helloworld

    {

      name: 'bigbear',

      memo: 'helloworld'

    }

  补充api:

  querystring.stringify(obj, [sep], [eq])------序列化一个对象到一个 query string。

  可以选择是否覆盖默认的分割符('&')和分配符('=')。            

  querystring.stringify({foo: 'bar', baz: 'qux'}, ';', ':')// 返回如下字串'foo:bar;baz:qux'

  querystring.parse(str, [sep], [eq], [options])------将一个 query string 反序列化为一个对象。可以选择是否覆盖默认的分割符('&')和分配符('=')。
  
  options对象可能包含maxKeys属性(默认为1000),它可以用来限制处理过的键(key)的数量.设为0可以去除键(key)的数量限制.
  
  示例:querystring.parse('foo=bar&baz=qux&baz=quux&corge') // { foo: 'bar', baz: ['qux', 'quux'], corge: '' }

(3),"Path模块"

查看图片

  本模块包含一套用于处理和转换文件路径的工具集。几乎所有的方法仅对字符串进行转换, 文件系统是不会检查路径是否真实有效的。

  先来一个简单的栗子:    

var url = require('url');

 var qs = require('querystring');

 var path = require("path") ;

 var queryUrl = "http://localhost:8888/bb?name=bigbear&memo=helloworld" ;

 var root = path.basename(queryUrl) ;

 console.log(root) ; // bb?name=bigbear&memo=helloworld

  返回路径中的最后一部分,以”/“分割。

var url = require('url');

 var qs = require('querystring');

 var path = require("path") ;

 var queryUrl = "http://localhost:8888/bb?name=bigbear&memo=helloworld" ;

 var root = path.basename(queryUrl) ;

 console.log(root) ; // bb?name=bigbear&memo=helloworld

 var ext = path.extname(root) ;

 console.log(ext || "Not Ext Name !") ; // Not Ext Name !

  由于api过多,以上只列出来了常用的几个,大家需认真阅读文档。

二,综合栗子

场景描述------服务器接到不同情况的请求,通过 “Url” 分别做不同处理,代码如下:

  (1),建立”index.html“  

<!doctype html>

 <html>

     <head>

         <title>Bigbear</title>

         <meta content="IE=8" http-equiv="X-UA-Compatible"/>

         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

         <style type="text/CSS">

             div {

                 margin-top: 50px;

                 width: 100%; 

                   margin: 0px;

                 height:120px;

                 line-height:120px;

                   color:#fff;

                   font-size:22px;

                   background:#ff9900;

                 text-align: center;

             }

         </style>

         <script src="index.js"></script>

     </head>

     <body>

         <div>Hello,大熊!</div>

     </body>

 </html>

  (2),建立”index.js“

alert("Hello bb !") ; // 为了测试就这么一句代码
  (3),建立”server.js“

var http = require("http");

var fs = require('fs');

var url = require('url');

var path = require("path") ;

http.createServer(function(request,response) {

    var method = request.method ;

    method = method.toLowerCase() ;

    var fileName = path.basename(request.url) ;

    var extName = path.extname(fileName) ;

    var root = "./" ;

    if("get" == method){

        if(extName){

            fs.readFile("./" + fileName,"utf-8",function (error,data){

                if(error)throw error ;

                response.writeHead(200,{

                    "Content-Type": {

                         ".css": "text/css" ,

                         ".js" : "application/javascript"

                  }[extName]

                }) ;

                response.write(data) ;

                response.end() ;

            });

        }

        else{

            fs.readFile(root + "index.html","utf-8",function (error,data){

                if(error)throw error ;

                response.writeHead(200,{

                    "Content-Type" : "text/html"

                });

                response.write(data) ;

                response.end() ;

            });

        }

    }

    else if("post" == request.url){

        // handle post here

    }

}).listen(8888) ;

console.log("WEB Server Running , Port On ---> 8888") ;


  node server.js 运行一下。

三,总结一下

(1),理解上述三个模块之间的联系,灵活使用 。
(2),熟练使用 "Url,QueryString,Path" 三个模块相关的api。
(3),最后强调:理解上面例子中的代码意图,不断重构,不断总结

--结束END--

本文标题: NodeJS学习笔记之(Url,QueryString,Path)模块

本文链接: https://lsjlt.com/news/12210.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • NodeJS学习笔记之(Url,QueryString,Path)模块
    一,开篇分析 这篇文章把这三个模块拿来一起说,原因是它们各自的篇幅都不是很长,其次是它们之间存在着依赖关系,所以依次介绍并且实例分析。废话不多说了,请看下面文档: (1),"Url模块"   来个小栗子:...
    99+
    2022-06-04
    学习笔记 模块 NodeJS
  • Nodejs学习笔记之Stream模块
    一,开篇分析 流是一个抽象接口,被 Node 中的很多对象所实现。比如对一个 HTTP 服务器的请求是一个流,stdout 也是一个流。流是可读,可写或兼具两者的。 最早接触Stream是从早期的unix开...
    99+
    2022-06-04
    学习笔记 模块 Nodejs
  • Nodejs学习笔记之NET模块
    一,开篇分析 从今天开始,我们来深入具体的模块学习,这篇文章是这个系列文章的第三篇,前两篇主要是以理论为主,相信大家在前两篇的学习中, 对NodeJS也有一个基本的认识,没事!!!趁热打铁,让我们继续将No...
    99+
    2022-06-04
    学习笔记 模块 Nodejs
  • NodeJS学习笔记之Http模块
    一,开篇分析 首先“Http”这个概念大家应该比较熟悉了,它不是基于特定语言的,是一个通用的应用层协议,不同语言有不同的实现细节,但是万变不离其宗,思想是相同的, NodeJS作为一个宿主运行环境,以Jav...
    99+
    2022-06-04
    学习笔记 模块 NodeJS
  • NodeJS学习笔记之MongoDB模块
    一,开篇分析 这篇属于扩展知识篇,因为在下面的文章中会用到数据库操作,所以今天就来说说它(Mongodb模块)。 (1),简介 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WE...
    99+
    2022-06-04
    学习笔记 模块 NodeJS
  • NodeJS学习笔记之FS文件模块
    一,开篇分析 文件系统模块是一个简单包装的标准 POSIX 文件 I/O 操作方法集。可以通过调用 require("fs") 来获取该模块。文件系统模块中的所有方法均有异步和同步版本。 (1),文件系统模...
    99+
    2022-06-04
    学习笔记 模块 文件
  • NodeJS学习笔记之Connect中间件模块(一)
    希望大家能够坚持看下去我这系列的文章,这也是对我的最大的鼓励与支持,让我们共同进步,以文会友,相互帮助。好了直接进入今天的主题, 什么是“Connect”,中间件又当如何理解,带着问题来看今天的文章。 如...
    99+
    2022-06-04
    学习笔记 中间件 模块
  • NodeJS学习笔记之Connect中间件模块(二)
    一,开篇分析 大家好,今天这篇文章主要是对"Connect"中间件以及相关辅助中间件,做一个源码分析系列,我想上一篇文章大家也看了, 介绍了使用方式及用途,而这篇也是出于本人的兴趣,让读者对其有一个更深入的...
    99+
    2022-06-04
    学习笔记 中间件 模块
  • Python学习笔记之json模块和pickle模块
    目录json模块序列化与反序列化json模块中的方法pickle模块总结json模块 json用于不同语言之间的数据交换,比如C和Python之间等等,即可跨语言。而pickle只能...
    99+
    2023-05-18
    json模块 pickle模块 python各个模块讲解
  • nodejs学习笔记之路由
    server.js var http = require("http"); var url = require("url"); function start(route){//route.js 的rou...
    99+
    2022-06-04
    路由 学习笔记 nodejs
  • python之web模块学习-- url
      下面继续学习python的web模块 ---  urllib2,一个源于urllib又高于urllib的模块。1  urllib2 简介    urllib2是python自带的一个访问网页及本地文件的库。    与urllib相比,显...
    99+
    2023-01-31
    模块 python web
  • Nodejs学习笔记之入门篇
    分享第一篇,关于 NodeJS —— Javascript 的常用知识以及如何从 Javascript 开发者过渡到 NodeJS 开发者(不会介绍具体的框架)。在读本文前,希望你对 javascript ...
    99+
    2022-06-04
    学习笔记 入门篇 Nodejs
  • python学习笔记(九)、模块
    1 模块   使用import 语句从外部导入模块信息,python提供了很大内置模块。当你导入模块时,你会发现其所在目录中,除源代码文件外,还新建了一个名为__pycache__的子目录(在较旧的Python版本中,是扩展名为.pyc ...
    99+
    2023-01-31
    学习笔记 模块 python
  • python os模块学习笔记
    import os os.mkdir(name) #创建目录 os.path.exists(name) #判断文件或者目录是否存在 os.path.isdir(name) #判断指定对象是否为目录。是True,否则Fa...
    99+
    2023-01-31
    学习笔记 模块 python
  • Python3学习笔记(urllib模块
    1.基本方法urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)-    ...
    99+
    2023-01-31
    学习笔记 模块 urllib
  • Python 学习笔记 (4)—— 模块
           模块基本上就是一个包含了所有你定义的函数和变量的文件。为了在其他程序中重用模块,模块的文件名必须以.py为扩展名。        模块可以从其他程序 输入 以便利用它的功能。这也是我们使用Python标准库的方法。首先,我们...
    99+
    2023-01-31
    学习笔记 模块 Python
  • python zipfile模块学习笔记
    ZIP文件格式是一种常见的存档和压缩标准,这个zipfile模块提供了工具来创建、读取、写入、附加和列出一个ZIP文件。使用ZIP64扩展(即压缩文件大小超过4G),它能解压加密的ZIP文件,解密过程很慢。1、测试是否为ZIP文件is_zi...
    99+
    2023-01-31
    学习笔记 模块 python
  • 【Apollo学习笔记】——规划模块TASK之PATH_DECIDER
    文章目录 前言PATH_DECIDER功能简介PATH_DECIDER相关配置PATH_DECIDER总体流程路径决策代码流程及框架MakeStaticObstacleDecision PATH_DECIDER相关子函数参考 ...
    99+
    2023-08-30
    自动驾驶 决策规划 算法 planning apollo 人工智能
  • node.js入门学习之url模块
    前言 今天主要记录的是关于node.js里面的一个简单的模块,url模块。这个url的模块要使用的话需要先引入。若只是在命令行里比如cmd或git bash 等使用url这个模块的话,是不需要require...
    99+
    2022-06-04
    模块 入门 node
  • nodejs模块学习之connect解析
    nodejs 发展很快,从 npm 上面的包托管数量就可以看出来。不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子来解决现实的问题。 知其然,并知其所以然这是程序员的天性...
    99+
    2022-06-04
    模块 nodejs connect
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作