node.js学习笔记

node.js应用组成部分
  • 引入required模块: 我们可以使用 require 指令来载入 Node.js 模块。
  • 创建服务器: 服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
  • 接收请求与相应请求: 服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。
创建服务器
  • require指令载入http模块赋值给变量http
  • createServer()创建服务器,并使用listen()绑定8888端口。函数通过request、response参数接收和响应数据
let http = require('http')

http.createServer( (request, response) => {
    // 发送http头部
    // HTTP状态值:200 -OK
    // 内容类型:text/plain
    response.writeHead(200, {'Content-Type': 'text/plain'})

    // 发送响应数据
    response.end('Hello world')
}).listen(8888)

// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888')
npm
  • 使用淘宝镜像命令

npm install -g cnpm --registry=https://registry.npm.taobao.org

  • 查看所有全局安装的模块

npm list -g

  • 查看模块版本号

npm list ××

  • 卸载模块

npm uninstall ××

  • 更新模块

npm update ××

  • 搜索模块

npm search ××

  • package.json

位于模块目录下,用于定义包的属性

  • code . 用编译器打开当前文件
  • npm install ×× -D:将此安装为开发模式下的依赖
Package.json 属性说明
  • name - 包名。
  • version - 包的版本号。
  • description - 包的描述。
  • homepage - 包的官网 url 。
  • contributors - 包的其他贡献者姓名。
  • dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。
  • repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。
  • main - main 字段指定了程序的主入口文件,require(‘moduleName’) 就会加载这个文件。这个字段的默认值是模块根目录下面的 index.js。
  • keywords - 关键字
NPM版本号
  • NPM使用语义化版本号管理代码,语义化版本号分为X、Y、Z三位,分别代表主版本号、次版本号、补丁版本号
  • 当代码变更时,版本号会按以下原则更新
    • 如果只是修复bug,需要更新Z位。
    • 如果是新增了功能,但是向下兼容,需要更新Y位。
    • 如果有大变动,向下不兼容,需要更新X位。
REPL (交互式解析器)

类似于windows的powershell窗口

  • 下划线(_)变量:获取上一个表达式的运算结果
Node.js文件系统

fs模块是node.js的文件系统模块,负责读、写文件

  • readFileSync() 同步读取方法 顺序执行
  • readFile 异步读取方法,可接收回调函数 不按顺序执行
/* 异步读取方法 */
const fs = require('fs')

fs.readFile('input.txt', (err, data) => {
    if (err) return console.log(err)

    console.log(data.toString())
})

console.log('程序结束!')
  • 打开文件 fs.open(path, flags, callback)
    • 文件路径,文件打开行为,回调函数
  • 获取文件信息 fs.stat(path, (err, stats) => {})
  • 关闭文件 fs.close(fd, callback)
  • 截取文件 fs.ftruncate(fd, len, callback)
  • 删除文件 fs.unlink(path, callback)
EventEmitter类
  • on函数用于绑定时间名, emit属性触发事件
  • EventEmitter的每一个事件由一个时间名和若干个参数组成
  • 事件触发时,注册到这个事件的事件监听器依次被执行,事件参数作为回调函数参数传递
// 引入events模块
const events = require('events')

// 创建eventEmitter对象
const eventEmitter = new events.EventEmitter()

// 创建事件处理程序
const connectHandle = function connected () {
    console.log('连接成功!')

    eventEmitter.emit('data_received')
}

// 绑定 connection 事件处理程序
eventEmitter.on('connection', connectHandle)

// 使用匿名函数绑定 data_received 事件
eventEmitter.on('data_received', () => {
    console.log('数据接收成功!')
})

// 触发 connection 事件
eventEmitter.emit('connection')

console.log('程序执行完毕!')
  • EventEmitter属性&方法
    • once(event, listener) 触发一次后移除
    • removeListener(event, listener)
    • listenerCount(emitter, event) 返回指定事件的监听器数量
      • events.emitter.listenerCount(eventName) //推荐

exports 和 mudule.exports的使用区别
  • exports 对外暴露属性和方法
  • mudule.exports 暴露对象(类似class),包含很多属性和方法
exports.world = () => {} // 暴露world方法

module.exports = Hello // 暴露Hello类
node.js全局对象

注意:在 Node.js 中你不可能在最外层定义变量,因为所有用户代码都是属于当前模块的, 而模块本身不是最外层上下文。

  • __filename 表示当前正在执行脚本的文件名。输入文件所在位置的绝对路径
  • __dirname 表示当前执行脚本的所在目录
  • setTimeout() 只执行一次指定函数
process

全局对象,即global的对象属性

它用于描述当前Node.js 进程状态的对象,提供了一个与操作系统的简单接口

Node.js工具模块
  • OS模块 提供基本的系统操作函数
  • Path模块 提供处理和转换文件路径的工具
  • Net模块 用于底层的网络通信。提供了服务端和客户端的的操作。
  • DNS模块 用于解析域名
  • Domain模块 简化异步代码的异常处理,可以捕捉处理try catch无法捕捉的。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值