前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端要了解的Node.js

前端要了解的Node.js

作者头像
zhouzhouya
发布2023-10-27 16:05:37
2510
发布2023-10-27 16:05:37
举报
文章被收录于专栏:一名前端开发一名前端开发

Node.js简介

Node.js是一个能够在服务器端运行JavaScript的开放源代码、跨平台JavaScript运行环境。 Node采用Google开发的V8引擎运行js代码,使用事件驱动、非阻塞和异步I/O模型等技术来提高性能,可优化应用程序的传输量和规模。 Node大部分基本模块都用JavaScript编写。在Node出现之前,JS通常作为客户端程序设计语言使用,以JS写出的程序常在用 户的浏览器上运行。 目前,Node已被IBM、Microsoft、Yahoo!、Walmart、 Groupon、SAP、 LinkedIn、Rakuten、PayPal、Voxer和 GoDaddy等企业采用。 Node主要用于编写像Web服务器一样的网络应用,这和PHP 和Python是类似的。 Node.js允许通过JS和一系列模块来编写服务器端应用和网络相关的应用。 核心模块包括文件系统I/O、网络(HTTP、TCP、UDP、DNS、TLS/SSL等)、二进制数据流、加密算法、数据流等。Node 模块的API形式简单,降低了编程的复杂度。

Node的用途

Web服务API,比如REST 实时多人游戏 后端的Web服务,例如跨域、服务器端的请求 基于Web的应用 多客户端的通信,如即时通信

安装Node.js

进入官网nodejs.org/en

image.png
image.png
image.png
image.png
image.png
image.png

选择你要安装的地址

image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

通过cmd查看安装的版本

image.png
image.png

至此node已经安装完成了。

commonJs规范

CommonJS规范的提出,主要是为了弥补当 前JavaScript没有模块化标准的缺陷。 CommonJS规范为JS指定了一个美好的愿景, 希望JS能够在任何地方运行。 CommonJS对模块的定义十分简单: 模块引用 – 模块引用 – 模块定义 – 模块标识

模块引用

在规范中,定义了require()方法,这个方 法接手模块标识,以此将一个模块引入到 当前运行环境中。 模块引用的示例代码:

代码语言:javascript
复制
var aaa = require('aaa');

模块定义

在运行环境中,提供了exports对象用于导出当前模块的方法或者变量,并且它是唯一的导出的出口。 在模块中还存在一个module对象,它代表模块自身,而exports是module的属性。 在Node中一个文件就是一个模块。

代码语言:javascript
复制
exports.xxx = function() {};  
module.exports = {};

模块标识

模块标识其实就是模块的名字,也就是传递给require()方法的参数,它必须是符合驼峰命名法的字符串,或者是以.、..开头的相对路径、或者绝对路径。 模块的定义十分简单,接口也十分简洁。每个模块具有独立的空间,它们互不干扰,在引用时也显得干净利落。

Node的模块实现

Node中虽然使用的是CommonJS规范,但是 其自身也对规范做了一些取舍。 在Node中引入模块,需要经历如下3个步骤: – 路径分析 – 文件定位 – 编译执行 在Node中,模块分为三类:一类是底层由C++编写的内建模块,一类是Node提供的核心模块;还有一类是用户编写的模块,称为文件模块。

包 package

CommonJS的包规范允许我们将一组相关的模块组合到一起,形成一组完整的工具。 CommonJS的包规范由包结构和包描述文件两个部分组成。 包结构 – 用于组织包中的各种文件 包描述文件 – 描述包的相关信息,以供外部读取分析

包结构

包实际上就是一个压缩文件,解压以后还原为目录。符合规范的目录,应该包含如下文件: – package.json 描述文件 – bin 可执行二进制文件 – lib js代码 – doc 文档 – test 单元测试

包描述文件

包描述文件用于表达非代码相关的信息,它是一个JSON格式的文件 – package.json,位于包的根目录下,是包的重要组成部分。 package.json中的字段 – name、description、version、keywords、maintainers、contributors、bugs、licenses、repositories、dependencies、homepage、os、cpu、engine、builtin、directories、implements、scripts、author、 bin、main、devDependencies。

fs(文件系统)

在Node中,与文件系统的交互是非常重要的,服务器的本质就将本地的文件发送给远程的客户端 Node通过fs模块来和文件系统进行交互 该模块提供了一些标准文件访问API来打开、读取、写入文件,以及与其交互。 要使用fs模块,首先需要对其进行加载 – const fs = require("fs");

同步和异步调用

fs模块中所有的操作都有两种形式可供选择 同步和异步。 同步文件系统会阻塞程序的执行,也就是除非操作完毕,否则不会向下执行代码。 异步文件系统不会阻塞程序的执行,而是在操作完成时,通过回调函数将结果返回。

打开和关闭文件

打开文件 – fs.open(path, flags[, mode], callback) – fs.openSync(path, flags[, mode]) 关闭文件 – fs.close(fd, callback) – fs.closeSync(fd)

写入文件

fs中提供了四种不同的方式将数据写入文件 – 简单文件写入 – 同步文件写入 – 异步文件写入 – 流式文件写入

简单文件写入

fs.writeFile(file, data[, options], callback) fs.writeFileSync(file, data[, options]) 参数: – file 文件路径 – data 被写入的内容,可以是String或Buffer – options 对象,包含属性(encoding、mode、flag) – callback 回调函数

同步文件写入

fs.writeSync(fd, buffer, offset, length[, position]) fs.writeSync(fd, data[, position[, encoding]]) 要完成同步写入文件,先需要通过openSync()打开文件来获取一个文件描述符,然后在通过writeSync()写入文件。 参数 – fd 文件描述符,通过openSync()获取 – data 要写入的数据(String 或 Buffer) – offset buffer写入的偏移量 – length 写入的长度 – position 写入的起始位置 – encoding 写入编码

异步文件写入

fs.write(fd, buffer, offset, length[, position], callback) fs.write(fd, data[, position[, encoding]], callback) 要使用异步写入文件,先需要通过open()打开文件,然后在回 调函数中通过write()写入。 参数: – fd 文件描述符 – data 要写入的数据(String 或 Buffer) – offset buffer写入的偏移量 – length 写入的长度 – position 写入的起始位置 – encoding 写入编码

流式文件写入

往一个文件中写入大量数据时,最好的方法之一是使用流。 若要将数据异步传送到文件,首需要使用以下语法创建一个Writable对象: – fs.createWriteStream(path[, options]) path 文件路径 options {encoding:"",mode:"",flag:""} 一旦你打开了Writable文件流,就可以使用write()方法来写入它,写入完成后,在调用end()方法来关闭流。

读取文件

fs中提供了四种读取文件的方式 – 简单文件读取 – 同步文件读取 – 异步文件读取 – 流式文件读取

简单文件读取

fs.readFile(file[, options], callback) fs.readFileSync(file[, options]) – 参数: file 文件路径或文件描述符options | – encoding | 默认 = null – flag 默认 = 'r' callback 回调函数,有两个参数err 、data

同步文件读取

fs.readSync(fd, buffer, offset, length, position) – 参数: fd 文件描述符 buffer 读取文件的缓冲区 offset buffer的开始写入的位置 length 要读取的字节数 position 开始读取文件的位置

异步文件读取

代码语言:javascript
复制
fs.read(fd, buffer, offset, length, position, callback)  

– 参数: fd 文件描述符 buffer 读取文件的缓冲区 offset buffer的开始写入的位置 length 要读取的字节数 position 开始读取文件的位置 callback 回调函数 参数err , bytesRead , buffer

流式文件读取

从一个文件中读取大量的数据时,最好的方法之一就是 流式读取,这样将把一个文件作为Readable流的形式打开。 要从异步从文件传输数据,首先需要通过以下语法创建 一个Readable流对象: – fs.createReadStream(path[, options]) path 文件路径 options {encoding:"",mode:"",flag:""} 当你打开Readable文件流以后,可以通过readable事件和read()请求,或通过data事件处理程序轻松地从它读出。

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:cloud.tencent.com/developer/s…

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Node.js简介
  • Node的用途
  • 安装Node.js
  • commonJs规范
    • 模块引用
      • 模块定义
        • 模块标识
        • Node的模块实现
        • 包 package
        • 包结构
        • 包描述文件
        • fs(文件系统)
        • 同步和异步调用
        • 打开和关闭文件
        • 写入文件
          • 简单文件写入
            • 同步文件写入
              • 异步文件写入
                • 流式文件写入
                • 读取文件
                  • 简单文件读取
                    • 同步文件读取
                      • 异步文件读取
                        • 流式文件读取
                        相关产品与服务
                        云开发 CloudBase
                        云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档