Node.js基本用法

本文介绍了Node.js的基础知识,包括Node.js的简介,如封装了V8引擎实现JavaScript在服务器端运行;特点,如非阻塞IO、事件驱动和单线程;还讲解了Node.js的基本语法,如箭头函数、高阶函数和闭包;事件机制,如事件监听和触发;全局对象,如_process和_console;以及定时器和Buffer数据类型用于处理二进制数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、Node.js简介

1.简称Node,封装了谷歌的V8引擎,使JavaScript可以在服务器端运行

2.特点

3.nodemon插件:可以监视node程序的改动,并自动重启node程序

二、Node的基本语法

1.箭头函数(ES6):使用=>来定义函数

(1)一个参数的箭头函数:

(2)两个参数的箭头函数

(3)无参的箭头函数

(4)函数体带有多条语句的

2.高阶函数:一个函数的参数也是函数

3.闭包:当函数作为返回值,或作为参数传递时,该函数称为闭包

4.回调函数

三、Node的事件机制

1.事件监听

2.触发事件:emit(‘事件名称’)

四、Node的全局对象

1._filename:代表当前正在执行的脚本文件的名字(带绝对路径)

2._dirname:代表当前正在执行的脚本文件的所在的目录

3.console类

4.process对象:进程对象

示例:使用readline对象+process对象实现终端的输入和输出

五、Node的定时器

1.一次性定时器:setTimeout(函数,间隔的时间)

2.周期性定时器:setInterval(函数,间隔的时间)

3.即时定时器:setImmediate()

六、Buffer数据类型

1.用于处理二进制数据的数据类型

2.Buffer对象类似于整数数组,大小在创建时确定并且不能改变

3.Buffer对象的创建

4.作用:用于编码的转换


一、Node.js简介

1.简称Node,封装了谷歌的V8引擎,使JavaScript可以在服务器端运行

2.特点

(1)非阻塞IO:又称为异步IO

(2)事件驱动:以事件为中心,把每个任务都当作事件来处理

博客:什么是程序?什么是进程?什么是线程?什么是协程?多线程、单线程?

  (3)单线程:主线程维护一个事件队列,当接收到请求后,会将请求放入事件队列,然后去接收下一个请求,在JavaScript层面是单线程的,但是Node本身是多线程的平台。

3.nodemon插件:可以监视node程序的改动,并自动重启node程序

  (1)安装:  npm i nodemon -g

  (2)由nodemon运行node程序 nodemon 文件名

二、Node的基本语法

1.箭头函数(ES6):使用=>来定义函数

(1)一个参数的箭头函数:

var 变量名 = x => x

//对应的普通函数:

var 变量名 = function(x){
    return x;
}

(2)两个参数的箭头函数

var 变量名 = (x,y)=> x*y

//对应的普通函数:

var 变量名 =function(x,y){
    Return x*y;
}

(3)无参的箭头函数

var 变量名 = ( ) => 3*6

//对应的普通函数:

var 变量名 =function( ){
    Return 3*6;
}

(4)函数体带有多条语句的

var 变量名 = () =>{
    函数体语句
}

强调:若箭头函数的函数体用大括号({})括起来了,就没有默认的return功能.若函数需要返回数据就必须显式的使用return语句

2.高阶函数:一个函数的参数也是函数

3.闭包:当函数作为返回值,或作为参数传递时,该函数称为闭包

4.回调函数

 fs模块:是filesystem(文件系统),该模块是node提供的异步读写文件的模块

const fs = require('fs') //导入fs模块
console.log('主程序开始...')
//调用fs的readFile函数异步读取文件(demo.txt)内容

//(1))匿名回调函数:若读取文件异常,err中存放的异常信息
//(2)data参数:从文件中读取的内容
fs.readFile('./demo.txt',function(err,data){ 
    if(err){
        console.error(err)
    }
    console.log(data.toString())
})
console.log('主程序结束...');

三、Node的事件机制

1.事件监听

 (1)引入事件模块:events

 (2)创建事件对象:EventEmitter( )

 (3)注册事件:on(“事件名称”,回调函数)

2.触发事件:emit(‘事件名称’)

const EventEmitter = require('events').EventEmitter //引入事件模块
const myEvent = new EventEmitter() //实例化事件对象
//注册事件:seen
myEvent.on('seen',function(who){
    console.log('报告,来了一位'+who);
})
myEvent.on('seen',function(){
    console.log('欢迎光临!!!');
})
//触发事件
myEvent.emit('seen','女士')

四、Node的全局对象

1._filename:代表当前正在执行的脚本文件的名字(带绝对路径)

2._dirname:代表当前正在执行的脚本文件的所在的目录

console.log('文件名:'+__filename); //文件名:C:\Users\lenovo\Desktop\前端\js\716\3.js

console.log('目录名:'+__dirname); //目录名:C:\Users\lenovo\Desktop\前端\js\716

3.console类

4.process对象:进程对象

示例:使用readline对象+process对象实现终端的输入和输出

const readline = require('readline')
var r1 = readline.createInterface({  //创建一个接口 
    input: process.stdin,  //stdin:表示标准的输入终端
    output: process.stdout //stdout:表示标准的输出终端
})

//注册'line'事件
r1.on('line',function(data){
    switch(data.trim()){
        case 'copy':
            console.log(data.toString()) 
            break
        case 'hello':
            console.log('Hello World!')
            break
        case 'close':
            r1.close()
            break
        default:
            console.log('没有这个指令!')

    }
});

r1.on('close',function(){
    console.log('bye bye')
    process.exit(0)
})

五、Node的定时器

1.一次性定时器:setTimeout(函数,间隔的时间)

2.周期性定时器:setInterval(函数,间隔的时间)

3.即时定时器:setImmediate()

六、Buffer数据类型

1.用于处理二进制数据的数据类型

2.Buffer对象类似于整数数组,大小在创建时确定并且不能改变

3.Buffer对象的创建

 (1)Buffer.from([ ])

 (2)Buffer.alloc( )

4.作用:用于编码的转换

 (1)在文件操作和网络操作中,如果没有显式声明编码格式,返回数据的默认类型为Buffer

 (2)通过使用显式字符编码将Buffer实例与JavaScript字符串相互转换

 (3)将Buffer实例转换成JSON对象

A.什么是JSON对象:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式JSON采用完全独立于语言(编程语言)的文本格式。

B.使用场景:只要应用程序需要将结构化信息作为文本进行交换或存储,即可使用它。

{
    code:200,
    Msg:‘查询成功’
}

C.语法规则

a.数据存放在key-value中

b.数据用逗号分割

c.大括号({})保存对象

d.方括号([])保存数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值