IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Node.js(1)— 简介、功能、读写文件、http服务 -> 正文阅读

[JavaScript知识库]Node.js(1)— 简介、功能、读写文件、http服务

目录

一、什么是Node.js

二、Node.js能做什么

三、读写文件及错误处理

四、简单的http服务


一、什么是Node.js

  • Node.js不是一门语言,也不是库,不是框架,它是一个JavaScript运行时环境。也就是说Node.js可以解析和执行JavaScript代码(之前只有浏览器可以做到)。由于Node.js,现在的JavaScript可以完全脱离浏览器运行.
  • 浏览器中的JavaScript包含EcmaScript、BOM、DOM;?Node.js中的JavaScript则没有BOM、DOM。在Node (这个JavaScript执行环境) 中为JavaScript提供了一些服务器级别的操作API(例如,文件的读写,网络服务的构建,网络通信,HTTP服务器等处理)
  • npm是世界上最大的生态开源系统,绝大多数JavaScript相关的包都存放在npm上,让开发人员更方便的去下载使用
  • Node.js构建于Chrome的V8引擎之上,代码只是具有特定格式的字符串,引擎可以认识它并且解析和执行;Google Chrome的V8引擎是目前公认解析执行JavaScript代码最快的,Node.js的作者把Google Chrome中的V8引擎移植了出来,开发了一个独立的JavaScript运行时环境

二、Node.js能做什么

  • Web服务器后台
  • 命令行工具 ( npm [基于node开发的] 、git [C语言开发的] 、hexo [基于node开发的] )
  • 对于前端开发工程师来说,接触node最多的是命令行工具

三、读写文件及错误处理

????????在Node中,采用EcmaScript进行编码,没有BOM、DOM,它和浏览器中的JavaScript不一样,浏览器中的JavaScript是没有文件操作能力的,但是Node中的JavaScript具有文件操作能力

????????在Node中如果想要进行文件操作,就必须引入fs这个核心模块【fs是file-system的简写,意思是文件系统】。在fs这个核心模块中,就提供了所有的文件操作相关的API。例如:fs.readFile就是用来读文件的

读取文件如下所示:?

结果如下:

写文件如下所示:

var fs = require('fs')
    
    //第一个参数:文件路径
    //第二个参数:文件内容
    //第三个参数:回调函数
    //   error
    //   成功:       
    //      文件写入成功 error是null
    //   失败:
    //      文件写入失败 error是错误对象
fs.writeFile('./write.md','你好,这里是Node.js',function(error){
    console.log('文件写入成功');
})

结果如下所示:

当路径或文件名有误时,文件不能够成功读写,此时需要加入错误处理。例如:

var fs = require('fs')
fs.readFile('./hello.txt',function(error,data){
    //在这里进行错误处理
    if(error){
        console.log('读取失败');
    }else{
        console.log(data.toString());
    }
})

四、简单的http服务

? ? ? ? 使用Node可以轻松构建Web服务器,Node中专门提供了一个核心模块:http 。 http这个模块的职责就是帮助创建编写服务器的。

使用http核心模块:

//1.加载核心模块
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/ 来进行访问');
})

在地址栏中通过?http://127.0.0.1:3000/ 来进行访问

结果如下:?

request 请求事件处理函数,需要接收两个参数:request,response

request请求对象

? ? ? 请求对象可以用来获取客户端的一些请求信息,例如请求路径

response响应对象

? ? ? 响应对象可以用来给客户端发送响应消息

? ? ??response对象的方法:write可以用来给客户端发送响应数据

? ? ? (write利用使用多次,但最后一定要用end来结束响应,否则客户端会一直等待)

var http = require('http')
var server = http.createServer()

//request 请求事件处理函数,需要接收两个参数:
//  request请求对象
//      请求对象可以用来获取客户端的一些请求信息,例如请求路径
//  response响应对象
//      响应对象可以用来给客户端发送响应消息
server.on('request',function(request,response){
    console.log('收到客户端的请求了,请求路径是'+request.url)
    //response对象的方法:write可以用来给客户端发送响应数据
    //write利用使用多次,但最后一定要用end来结束响应,否则客户端会一直等待
    response.write('hello')
    response.write('node.js')
    //告诉客户端,话说完了,可以呈现给用户了
    response.end()
})

server.listen(3000,function(){
    console.log('收到客户端的请求了,可以通过 http://127.0.0.1:3000/ 来进行访问');
})

结果如下:

根据不同的请求返回不同的响应结果时,只需要改变url的值,代码如下:

var http = require('http');
var server = http.createServer()
server.on('request',function(request,response){
    console.log('收到请求了,请求路径是:'+request.url);
    //根据不同请求路径发送不同的响应结果
    var url = request.url
    if(url === '/001'){
        response.end('index page')
    }else if(url === '/002'){
        response.end('login page')
    }else if(url === '/003'){
        response.end('404 not found')
    }else if(url ==='/products'){
        var products=[
            {
                name:'apple',
                price:22
            },
            {
                name:'banana',
                price:12
            },
            {
                name:'parent',
                price:11
            }
        ]
        //响应内容只能是二进制数据或者字符串
        response.end(JSON.stringify(products))
    }
})
server.listen(3434,function(){
    console.log('running');
})

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-25 12:26:58  更:2021-10-25 12:29:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:34:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码