Node.js (文件读写/http服务器)

Node.js 是什么:

 是JavaScript 运行时环境, 不是语言,也不是框架。它是一个平台,运行js代码。

  • 包含EcmaScript 的 JavaScript 语言部分(变量、方法、数据类型、内置对象) 
  • 没有 BOM、DOM,
  • Node.js运行环境中 为javascript增加一些服务器级别的API(文件读写,http服务,网络通信等)

特性:

  • 事件驱动,
  • 异步操作,
  • 轻量级、高效

用途:

  • Web服务器后台
  • 命令行工具 (npm 、git、hexo、)
  • 游戏后台等。

 

 

 

核心模块:

Node.js运行环境中 为javascript增加一些服务器级别的API,这些API基本都被包装到一个具名的核心模块中。

  1. 文件读写模块   fs
  2. http服务构建模块   http
  3. 路径操作模块  path
  4. 操作系统信息模块  os
  5. .........

要使用这些模块 必须require引入

var  http  =require("http");

 

 

文件读写API (fs 即 file-system):

// 1. 加载模块
var files = require("fs");

//2.调用读文件 方法
files.readFile("2.js",function (error,data){
    if(error){
    console.log("读文件失败");
    }else{
    console.log("读文件成功");
  }     
})


//写文件 
files.writeFile("2.js","内容",function (error){

})

读文件:

  • 参数一 :文件路径 
  • 参数二:回调函数(error,data)       // data是二进制数,可以通过data.toString 转为字符串。

成功 data 是数据,   error 为null
失败 data 为undefined    error 是错误对象

 

写文件:

  • 参数一:文件路径
  • 参数二:文件内容
  • 参数三:回调函数(error)

成功:error  是null

失败 error  是错误对象

 

注意:向服务器发送文件时,实际并不是真正意义上的发送文件,而是根据Content-type 解析文件里面的内容发送。

 

 

http服务API:

//1. 加载 http模块
var http = require("http");

// 2.创建服务器
var server = http.createServer();

// 3.服务端注册请求事件。 当客户端发送请求时,服务器就会执行回调函数,处理请求内容
server.on("request",function (request,response){
    console.log("服务器接到请求,请求路径是:"+request.url);
});

// 4.绑定端口号,启动服务器
server.listen(3000,function(){
    console.log("服务器启动成功,通过端口http://127.0.0.1:3000/ 访问");

})
 

3.服务端请求事件处理函数中,需要接收两个参数:

  • 参数一: request      请求对象。用来获取客户端的一些请求信息。如请求路径  request.url
  • 参数二:response    响应对象。用来给客户端发送响应信息。

 

request 请求对象的属性

  1. request.url    请求地址。根据不同请求路径 返回不同的数据。

 

response  响应对象的方法:

  1. response. write()     发送响应信息。一定要用 response.end() 结束,否则服务器会一直等待。一般不这样,下面的方式
  2. response.end("发送的响应信息“);         响应数据必须是是字符串或二进制数。  将数组转字符串JSON.stringify(arr)
  3. response.setHeader("Content-type","text/plain;charset=utf-8");   
  4.  

 

 

4.端口号:用来定位具体的某个应用程序(ip地址定位某台计算机)

  需要联网通信的应用程序都会占用一个端口号。


 

Node中 ,模块有三种

  1. 具名的核心模块 ,如fs 、http
  2. 第三方模块
  3. 用户自定义文件模块

 

注意:使用require()加载用户自定义文件模块时, 如果是相对路径,必须在文件名前添加 . /  , js后缀名可省略

require("./user.js")

执行顺序是 先执行 加载文件模块的内容  ,然后在执行 require() 后面的内容。

Node中没有全局作用域,只有模块作用域。

 

 

模块化编程:

node 在工具栏执行时 通过node  文件名.js  执行js代码,但需要引入多个js文件该怎么办?

  •  引入模块化编程。使用用户自定义文件模块。
  • var result = require("./b.js");
    

     

但是Node只有模块作用域,两个文件中的变量也不能互相使用,如何让模块间进行通信?

require()两个作用:1.加载文件模块 并执行里面的代码     2.拿到被加载文件模块 导出的 接口对象

  • 每个文件模块都有一个exports 对象,将外部文件需要访问的变量 挂载到exports对象上
    //b.js
    
    exports.foo="keke";                  //{ foo:keke }
    exports.add = function(a,b){      
        return a+b;      
    }
    
    //a.js
    var getExport = require("./b.js");   //返回的是对象
    
    console.log(getExport.foo);           //输出keke
    console.log(getExport.add(10,20));    //输出30
    
    

     

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值