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)

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



  
  
  1. var http = require("http");
  2. var url = require("url");
  3. var fs = require("fs");

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

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



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

注意:

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



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

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

var moduleA = require("moduleA");

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

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



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

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



  
  
  1. module.exports.c = c;
  2. module.exports = c;
  3. exports.c = c;

http模块

搭建服务器



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

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

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

    注意:url地址的组成部分


        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地址



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


  
  
  1. // HTTP模块用于搭建服务器
  2. var http = require("http");
  3. // console.log(http);
  4. // 调用createServer来创建服务器
  5. var server = http.createServer(function(req, res) {
  6. // req: request 前端请求对象 所有的请求时浏览器附加的信息都可以从req身上获取
  7. // res: response 后端响应对象 决定返回什么东西给前端由res决定
  8. // 当前函数在每一次前端有请求到达服务器的时候会调用
  9. // console.log(req.url); // 请求url中path部分
  10. // console.log(req.method); // 请求类型
  11. console.log(req.connection.remoteAddress);
  12. })
  13. // console.log(server);
  14. // 将当前服务绑定到
相关文章
|
JavaScript 前端开发
node.js 学习入门(01 - node.js基础)
node.js 学习入门(01 - node.js基础)
node.js 学习入门(01 - node.js基础)
node编译TS时,tsconfig.json中的基础配置 与 webpack编译TS时webpack.config.js中的基础配置
node编译TS时,tsconfig.json中的基础配置 与 webpack编译TS时webpack.config.js中的基础配置
|
Web App开发 存储 JavaScript
开启前端全栈之路—— node 基础
能够和后端程序员更加紧密的配合。 网站业务逻辑前置,学习前端技术需要后端技术支撑(Ajax)。 扩展知识视野,能够站在更高的角度审视整个项目。
142 0
开启前端全栈之路—— node 基础
|
存储 算法 JavaScript
Node.js基础常用知识点全总结(五)
Node.js基础常用知识点全总结
187 0
Node.js基础常用知识点全总结(五)
|
JavaScript 前端开发 API
Node.js基础常用知识点全总结(四)
Node.js基础常用知识点全总结
132 0
Node.js基础常用知识点全总结(四)
|
数据采集 JSON JavaScript
Node.js基础常用知识点全总结(三)
Node.js基础常用知识点全总结
144 0
Node.js基础常用知识点全总结(三)
|
JavaScript
Node.js基础常用知识点全总结(二)
Node.js基础常用知识点全总结
165 0
Node.js基础常用知识点全总结(二)
|
Web App开发 存储 JavaScript
Node.js基础常用知识点全总结(一)
Node.js基础常用知识点全总结
275 0
Node.js基础常用知识点全总结(一)
|
Web App开发 JavaScript 前端开发
【node.js从入门到精通】使用node.js写入读取文件内容,基础方法使用
【node.js从入门到精通】使用node.js写入读取文件内容,基础方法使用
209 0
【node.js从入门到精通】使用node.js写入读取文件内容,基础方法使用
|
缓存 移动开发 JavaScript
重学Node.js及其框架(Express, Koa, egg.js) 之 Nodejs基础(下)
重学Node.js及其框架(Express, Koa, egg.js) 之 Nodejs基础