1.Node.js介绍与起步

2019-03-01  本文已影响0人  璎珞纨澜

1.Node.js 介绍

1.1 node.js 是什么

1.2 Node.js 能做什么

1.3 node.js 能学到啥

2. 起步

2.1 安装node环境

2.2 HelloWord

  1. 创建编写JavaScipt脚本文件

  2. 打开终端,定位到脚本文件所属目录

  3. 使用输入node 文件名执行对应的文件

注意:文件名不要使用node.js命名

2.3 读取文件

  1. 使用require方法加载fs核心模块

    var fs= require('fs')

  2. 读文件方法

    fs.readFile(filePath,function(error,data){回调处理方法})

    • 【param1】filePata:要读取的文件路径

    • 【param2】function:回调函数

    • 读取结果:

      • 读取成功:data->数据,error->null

      • 读取失败:data->undefine没有数据,error->错误对象

    • 注意:读取文件中data存储的是二进制数据,通过 toString 方法转换。

2.4 写入文件

  1. 使用require方法加载fs核心模块

    var fs= require('fs')

  2. 写文件方法

    fs.writeFile(filePath,fileContent,function(error){回调处理方法})

    • 【param1】filePata:要写入的文件路径

    • 【param2】fileContent:要写入的文件内容

    • 【param3】function:回调函数

    • 读取结果:

      • 写入成功:error->null

      • 写入失败:error->错误对象

2.5 HTTP请求

  1. 加载http核心模块

    var http=require('http')

  2. 使用http.createServer() 方法创建一个Web服务器,返回一个Server实例

    var server=http.creatServer()

    服务器用于提供对数据的服务:

    • 发送请求

    • 接收请求

    • 处理请求

    • 发送响应

  3. 注册request请求事件,当服务器收到请求,就会自动触发request请求事件,执行回调处理函数

    server.on('request',function(){回调处理方法})

    • 【param1】'request':注册事件类型为请求事件

    • 【param2】function:回调函数

  4. 绑定端口号,启动服务器

    server.listen(port,function(){回调处理方法})

    • 【param1】port:端口号

    • 【param2】function:回调函数

最简单的http服务:

//1. 加载 http 核心模块
 var http = require('http')
 ​
 // 2. 创建一个 Web 服务器返回一个 Server 实例
 var server = http.createServer()
 ​
 // 3. 注册 request 请求事件,监听客户端请求
 server.on('request', function () {
  console.log('收到客户端的请求了')
 })
 ​
 // 4. 绑定端口号,启动服务器
 server.listen(3000, function () {
  console.log('服务器启动成功了,可以通过 http://127.0.0.1:3000/ 来进行访问')
 })

2.6 HTTP请求与响应

  1. 注册request请求事件,当服务器收到请求,就会自动触发request请求事件,执行回调处理函数

server.on('request',function(request,response){回调处理方法})

  1. 根据不同的请求路径发送不同的响应结果

    (1) 获取处理路径

    req.url获取到的是端口之后的那一部分路径,所有的url都是以 / 开头的

    (2) 判断路径处理响应

    //1. 加载 http 核心模块
     var http = require('http')
     ​
     // 2. 创建一个 Web 服务器返回一个 Server 实例
     var server = http.createServer()
     ​
     // 3. 注册 request 请求事件,监听客户端请求,根据不同的请求路径发送不同响应结果

     server.on('request', function (req,res) {
      var url=req.url
      if(url==='/'){
      res.end('index page')
      }else if(url==='/login'){
      res.end('login page')
      }else{
      res.end('404 not found!')
      }
     })
     ​
     // 4. 绑定端口号,启动服务器
     server.listen(3000, function () {
      console.log('服务器启动成功了,可以通过 http://127.0.0.1:3000/ 来进行访问')
     })

3. Node 中的 JavaScript

3.1 核心模块

Node为JavaScipt提供了很多服务器级别的API,这些API绝大多数都被包装到了一个具名的核心模块中了。例如文件操作的fs核心模块,http服务构建的http模块,path路径操作模块,os操作系统信息模块,等等。

使用核心模块:

 var fs = require('fs')
 var http = require('http')
 var os = require('os')

详细API文档见:http://nodejs.cn/api/

3.2 用户自定义模块

用户自己编写的文件模块

  1. 加载:

    var foo=require('./b.js')或者var foo=require('./b')

  1. 导出:(b.js)

    exports.foo='hello'

4. Web服务器开发

4.1. IP地址与端口号

4.2. Content Type

Content-Type查询表网址:

http://tool.oschina.net/commons

补充: Node 中的其他成员

在每个模块中,除了requireexports 等模块相关 API 之外,还有两个特殊的成员:

在文件操作中,使用相对路径是不可靠的。因为文件操作路径中,相对路径 (./xxx) 设计的是相对于执行 node 命令所处的路径, 不是当前文件所处的路径。
例如:

// 这里的 ./a.txt 是相对于执行代码文件的 node 命令行所处路径,不是代码文件的所处路径
fs.readFile('./a.txt', 'utf8', function (err) {
  if (err) {
    throw err
  }
  console.log(data)
})

所以为了解决这个问题,只需要把相对路径变成绝对路径就可以了。
那我们可以使用__dirname 或者 __filename 来帮我们解决这个问题。
在拼接路径的过程中,为了避免手动拼接带来的一些低级错误,所以推荐多使用:path.join 来辅助拼接。
所以为了进尽量避免使用相对路径不可靠的问题,在文件操作中使用相对路径都统一转换为 动态绝对路径

fs.readFile(path.join(__dirname, './a.txt'), 'utf8', function (err) {
  if (err) {
    throw err
  }
  console.log(data)
})

注意:模块中的路径标识和文件操作中的相对路径标识不一致,模块中的路径标识就是相对于当前文件模块,不受执行 node 命令所处路径影响。例如:require('./b')

上一篇下一篇

猜你喜欢

热点阅读