node.js基础了解

node.js的特点

单线程:只有一个线程执行任务

非堵塞I/O:在I/O耗时操作时,线程不堵塞

事件驱动:使用事件驱动程序往下继续运行

node,js模块化

规范:遵循common.js规范

    加载模块的时候同步。当遇到require() 语句时,会停下来等加载完成然后继续往下执行。

    暴露模块的时候推荐通过exports.xx = 或 module.exports.xx = 或 module.exports = 向外暴露。

在node,js中,每一个JS文件就是一个模块

在node,js中,分为内置核心模块 和 自定义模块(或者第三方模块)

内置核心模块:

    这些模块是node,js自带的,比如http url querystring fs(FileSystem)

    引入方式:直接调用名称引入


var http = require("http");
var url = require("url");
var fs = require("fs");

自定义模块(或者第三方模块):

    引入方式:使用“./”开头 加上 名称


//在A.js文件中
var b = require("./B");

注意:

但是假如自定义模块(或者第三方模块)放在node_modules目录下,放进去的模块就跟内置核心模块一样的引入方式


//在A.js文件中
//因为B.js文件放在了node_modules目录下,可以直接使用名称引入
var b = require("B");

这种方式引入,看上去像是引入了核心模块 其实只是一种假象 moduleA并不是变成了核心模块 只是引入方式一样了。

var moduleA = require("moduleA");

当同一级目录中有node_modules文件夹时,并且里面有moduleA模块 并且上一级目录中有node_modules文件夹,里面也有moduleA模块时,会引用同级目录下的node_modules文件夹中的模块

当同级有node_modules文件夹但是没有moduleA模块, 但是上级有node_modules文件夹也有moduleA模块,此时会使用上级的moduleA模块


// 注意!!!! 这种方式引入,看上去像是引入了核心模块 其实只是一种假象 moduleA并不是变成了核心模块 只是引入方式一样了。
var moduleA = require("moduleA");
// 当同一级目录中有node_modules文件夹时,并且里面有moduleA模块 并且上一级目录中有node_modules文件夹,里面也有moduleA模块时
// 此时,会引用同级目录下的node_modules文件夹中的模块
// 当同级有node_modules文件夹但是没有moduleA模块, 但是上级有node_modules文件夹也有moduleA模块,此时会使用上级的moduleA模块

模块暴露:node.js 向外暴露的方式与sea.js一样,推荐module.exports 或者exports.


module.exports.c = c;
module.exports = c;
exports.c = c;

http模块

搭建服务器


// 调用createServer来创建服务器
var server = http.createServer(function(req, res) {
})

    req对象:请求对象 所有的请求时浏览器附加的信息都可以从req身上获取

        req.url 请求对象中url地址的path部分(pathname + search)

    注意:url地址的组成部分

node.js基础了解

        req.method 请求对象中请求方式get 还是 post 返回值是大写

        req.connection.remoteAddress 请求对象中访问服务器的客户端的IP地址

        req.on("data", function(data_chunk){    }) 在处理post请求时,请求数据时

        req.on("end", function(){    }) 在处理post请求时,请求数据完毕时

    res对象:响应对象 决定返回结果给前端由res决定

        res.setHeader( ) 设置响应对象的响应头

        res.end(data) 该方法决定返回内容并挂断连接

        注意:这里的data必须是buffer类型或者字符串类型  buffer类型调用toString()方法

        res.write(data) 该方法决定返回内容但是不挂断连接

        res.status 决定响应状态

监听服务器

    第一个参数:端口号

    第二个参数:IP地址


// 将当前服务绑定到某个端口
server.listen(3000, "192.168.2.187");

// HTTP模块用于搭建服务器
var http = require("http");
// console.log(http);
// 调用createServer来创建服务器
var server = http.createServer(function(req, res) {
// req: request 前端请求对象 所有的请求时浏览器附加的信息都可以从req身上获取
// res: response 后端响应对象 决定返回什么东西给前端由res决定
// 当前函数在每一次前端有请求到达服务器的时候会调用
// console.log(req.url); // 请求url中path部分
// console.log(req.method); // 请求类型
console.log(req.connection.remoteAddress);
})
// console.log(server);
// 将当前服务绑定到
上一篇:ASP.NET一般处理程序访问Session问题


下一篇:【MongoDB学习笔记15】MongoDB的查询:find查询条件