Node.js 入门教程 (三):API

(一)URL网址解析

URI: 统一资源标识

URL:统一资源定位

网址就是一个URL,说明了要以那种协议来访问哪种资源,URI更加抽象,是一个字符串格式规范,URL是URI的子集

parse()

第二个参数设为true,可以看到query变成了一个对象

第三个参数设置前后的区别

format()

resolve()

(二)querystring 参数处理

stringify()将对象序列化,第二个参数可以替换参数之间的连接值,第三个参数可替换key和value之间的连接值

parse()反序列化,第二三个参数和querystring一样

(三)http

http基础知识回顾

预备知识

nodejs的http模块:

支持更多特性

不缓冲请求和响应

处理流相关

分析一个例子:

var http = require(‘http‘)
http
    .createServer(function(req, res){
        res.writeHead(200, {‘Content-Type‘:‘text/plain‘})
        res.write(‘Hello Nodejs‘)
        res.end()
    })
    .listen(2015)

http.createServer(requestListener),返回了一个Server的实例,return new Server(requestListener)

如果requestListener存在,就会在当前实例上添加一个事件监听function addListener(‘request‘, requestListener),来监听request,当request事件发生,就会触发requestListener

那么什么时候request事件会发生呢?

在function parserOnIncoming(req,shouldKeepAlive)里面有一个emit(‘request‘,req,res),这里会触发request,这里的req,res就是回调函数接收的两个参数。

那什么时候生成的req和res呢?

req来自于new IncomingMessage(parser.socket)

在parserOnIncoming方法里面有一个res = new ServerResponse(req), ServerResponse是OutgoingMessage的一个子类

那什么时候会调用parserOnIncoming()呢?

parseOnIncoming 是在function connectionListener(socket)里面定义的,connectionListener又是在addListener(‘connection‘,connectionListener),也就是在connection事件的时候触发的

那connection事件又是什么时候触发的呢?

在net.js里面,在function onconnection()里面调用了emit(‘connection‘,socket),而onconnection又是在function _listen2()里面调用的,而_listen2正是在function listen()里面调用的

这就看出来了,listen最终会触发createServer的回调函数

时间: 2024-08-02 01:54:41

Node.js 入门教程 (三):API的相关文章

Node.js入门教程

http://www.nodebeginner.org/index-zh-cn.html#a-basic-http-server Node入门 作者: Manuel Kiessling翻译: goddyzhao & GrayZhang & MondayChen 关于 本书致力于教会你如何用Node.js来开发应用,过程中会传授你所有所需的“高级”JavaScript知识.本书绝不是一本“Hello World”的教程. 状态 你正在阅读的已经是本书的最终版.因此,只有当进行错误更正以及针对

Node.js 入门教程 (二):模块

由于新工作要做前端,作为前端小白而且能尽快学习,所以选择慕课网的node.js的入门教程.博客只做自己学习的记录. JavaScript缺少模块管理机制,容易出现变量被覆盖,方法被替代的情况(既被污染).特别是存在依赖关系时,容易出现错误.采用命名空间的方式,把变量和函数限制在某个特定的作用域内,人肉约定一套命名规范来限制代码,保证代码安全运行. CommonJs是一套规范,包括了modules,system,encodings,unit test等等来约定JavaScript应该怎么去组织和编

Node.js入门教程——如何实现文件上传功能

作者:zhanhailiang 日期:2014-11-16 本文将介绍如何使用Node.js实现文件上传功能. 1. 初始化项目信息:npm init [root@~/wade/nodejs/nodejs-upload-image-demo]# npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to gu

Node.js入门教程 第一篇 (环境配置及概念原理)

Node.js 概念 Node.js本质上是使用Google的V8引擎制作出来的服务框架.V8本身是Google为了解决Chrome浏览器的性能问题而制作的前端引擎(开源).本身依托于浏览器引擎,这也是为什么Node.js使用的是前端的JavaScript语言编程. V8的诞生是Google为了解决JavaScript的性能问题,用了内联缓存和隐藏类技术实现的前端引擎.V8使用C++编写,也因此V8可以在C++项目中完美兼容使用. V8被Google使用在大多数产品中,如Chrome浏览器,安卓

Node.js入门教程 第五篇 (Express框架)

Express框架 Express是适用于Node.js web的框架,提供了大量实用功能,例如路由功能及http功能. Express 框架核心特性: 可以设置中间件来响应 HTTP 请求. 定义了路由表用于执行不同的 HTTP 请求动作. 可以通过向模板传递参数来动态渲染 HTML 页面. 安装: npm install express --save 可能需要的中间件: body-parser - Node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据. c

Node.js 入门教程 (三):API-准备知识

==========关于异步=========== 什么是回调? 回调是异步编程最基本的方法,比如nodejs中,需要按顺序执行异步逻辑的时候,一般采用后续传递的方式,也就是将后续逻辑封装在回调函数中作为起始函数的参数,逐层去嵌套,利用这种方式来让程序按照我们所期望的方式走完整个流程. function learn(something){    console.log(something)}function we(callback,something){    something += ' is

Node.js入门:事件机制

Evented I/O for V8 JavaScript 基于V8引擎实现的事件驱动IO. 事件机制的实现 Node.js中大部分的模块,都继承自Event模块(http://nodejs.org/docs/latest/api/events.html ).Event模块(events.EventEmitter)是一个简单的事件监听器模式的实现.具有addListener/on,once,removeListener,removeAllListeners,emit等基本的事件监听模式的方法实现

Windows 下 Node.js 入门

例子工程在此下载 Windows 下 Node.js 入门 NodeJS的历史就不说了,别人说过了.最最关键Google JavaScript V8 开发成功,运行效率很高,开放二次开发接口(C++库,功能类似常见的Lua,Python等脚本的的开放库).本来V8主要给Chrome浏览器服务的,经不住运行效率太优秀了,所以就有人动起了开发Native端的JavaScript运行环境的主意.NodeJS是这个思路的产物. 这是官网 https://nodejs.org/ 英文 https://no

Web视频合成器Seriously.js入门教程

Web视频合成器Seriously.js入门教程 作者:云荒杯倾 Seriously.js是一个实时的,基于节点(node)的(注意:不是基于nodejs)web视频合成器.受after affects和nuke等专业软件的启发,Seriously.js能渲染高质量的可交互的视频动态效果. 下载Seriously.js库 git clone https://github.com/brianchirl... 加载Seriously.js脚本 和其他js库一样,使用Seriously.js的第一步是