Node.JS基本概念与基础操作

Node.JS是什么?

1.Node.JS不是一门语言,也不是框架、库,而是一个JS运行时环境,也就是说Node.JS可以解析和执行JS代码(以前只能有浏览器解析执行JS代码)

2.Node.JS的执行环境为JS提供了一些服务器级别的操作API:

文件读写

网络服务构建

网络通信

http服务器

注意:Node中的JS和浏览器中的JS不一样!

*浏览器中的JSecmaScript、DOM、BOM

*Node.JS中的JS只有ecmaScript,不包含DOM、BOM

3.Node.JS具有事件驱动、异步特性,轻量而高效

4.npm:基于Node.JS开发的npm包管理工具是世界上最大的开源库生态系统。绝大部分JS相关包都放在了npm上

 

Node.JS能做什么?

-Web服务器(解析执行JS、读写文件、http)

-命令行工具(git、npm、webpack、hexo……)

 

安装Node.JS:

https://blog.csdn.net/Marshallren/article/details/103334791

 

基本操作:

使用Node执行JS脚本文件:

创建一个JS脚本文件,在终端中输入node 文件名就可执行该JS文件

例子:

var foo = 'hello world'
console.log(foo)

终端输入命令显示结果:

 

读取文件:

fs是filesystem的简写,文件系统

在Node中如果想要进行文件操作,就必须引入fs核心模块

在fs核心模块中提供了所有文件操作相关的API

//1.使用require方法加载fs核心模块
var fs = require('fs')
//2.读取文件
//  参数1:要读取的文件路径
//  参数2:回调函数
//      读取成功:data:数据
//               error:null
//      读取失败:data:null
//               error:错误对象
fs.readFile('./00-helloworld.js',function(error,data){
    console.log(data)
})

结果:

*上述结果是二进制数据,只不过该二进制转为了16进制

若想看懂,则需要data.toString()方法

var fs = require('fs')
fs.readFile('./00-helloworld.js',function(error,data){
    console.log(data.toString())
})

结果:

 

写文件:

var fs = require('fs')
//第一个参数:新建文件路径
//第二个参数:文件内容
//第三个参数:回调函数
//      成功:error:null
//      失败:error:错误对象
fs.writeFile('writefile.txt','我是Node.JS',function(error){
    console.log(error)
})

 

http服务:

在Node中专门提供了一个核心模块:http

http这个模块的职责就是帮助你创建编写服务器

//1.加载http核心模块
var http = require('http')

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

//3.服务器要干嘛?提供对数据的服务
//客户端发请求--服务端接收请求--处理请求--发送处理结果
//注册request请求事件
//当客户端发请求过来,就会自动触发request请求事件,然后执行回调函数
server.on('request',function(){
    console.log('服务端:已收到请求')
})

//4.绑定端口号,启动服务器
//涉及网络通讯的都要有端口号
server.listen(3000,function(){
    console.log('服务器启动成功,可以通过http://127.0.0.1:3000/进行访问')
})

运行终端,此时我们可以输入上述url或点击终端上的链接来访问网页,当访问时,终端会自动弹出有关提示信息

不过这种访问方式的问题就是服务端只是接收了用户端发来的请求,并没有处理请求,所以网页会一直转圈,最后提示拒绝访问

注意:若要开启其他终端,需要ctrl+C取消当前请求以释放端口号

*同一时间,一个应用程序只能占用一个端口号

 

http发送响应:

var http = require('http')

var server = http.createServer()

//若要on函数响应客户端请求,需要接收两个参数
//  参数1:Request,请求对象
//      请求对象可以用来获取客户端的一些请求信息
//  参数2:Response,响应对象
//      响应对象可以用来给客户端发送响应消息

server.on('request',function(request,response){
    console.log('收到客户端请求,请求路径:'+request.url)

    //response对象的write方法可以用来给客户端发送响应数据
    //响应内容只能是二进制数据/string类型字符串
    //write可以多次使用,但最后一次write方法后,一定需要使用end结束响应,否则客户端会一直等待
    response.write('hello')
    response.write('nodejs')
    response.end()

    //该写法为上述简化的发送的响应数据代码
    response.end('hello node.js')

})

server.listen(3000,function(){
    console.log('服务器启动成功,可以通过http://127.0.0.1:3000/进行访问')
})

注意:

1./favicon.ico是网页图标

2.http发送响应的内容只能是二进制数据或者字符串,如果要响应的内容是对象,需要使用语法JSON.stringify(对象名)

var http = require('http')
var server = http.createServer()
server.on('request',function(req,res){
    console.log('收到客户端请求,请求路径:'+req.url)

    var url = req.url
    //url后面的值是你在网址栏输入的路径,在代码中只是一个标识而非路径
    if(url==='/products'){
        var products = [
            {
                name:'华为mate30',
                price:4299
            },
            {
                name:'Iphone11',
                price:5499
            },
            {
                name:'小米10',
                price:4999
            }
        ]
        //响应内容只能是字符串、二进制数据,其他都不可以
        res.end(JSON.stringify(products))
    }
})

server.listen(3000,function(){
    console.log('服务器启动成功,可以访问了')
})

猜你喜欢

转载自blog.csdn.net/Marshallren/article/details/104581983