首页 > 编程语言 >node.Js

node.Js

时间:2023-09-05 13:07:25浏览次数:122  
标签:node Node http Buffer require js 模块 Js

创建 Node.js 应用

步骤一、使用 require 指令来加载和引入模块

语法格式如下:

const module = require('module-name');

其中,module-name 可以是一个文件路径(相对或绝对路径),也可以是一个模块名称,如果是一个模块名称,Node.js 会自动从 node_modules 目录中查找该模块。

require 指令会返回被加载的模块的导出对象,可以通过该对象来访问模块中定义的属性和方法,如果模块中有多个导出对象,则可以使用解构赋值的方式来获取它们。

我们使用 require 指令来载入 http 模块,并将实例化的 HTTP 赋值给变量 http,实例如下:

var http = require("http");

其中,module-name 可以是一个文件路径(相对或绝对路径),也可以是一个模块名称,如果是一个模块名称,Node.js 会自动从 node_modules 目录中查找该模块。

require 指令会返回被加载的模块的导出对象,可以通过该对象来访问模块中定义的属性和方法,如果模块中有多个导出对象,则可以使用解构赋值的方式来获取它们。

我们使用 require 指令来载入 http 模块,并将实例化的 HTTP 赋值给变量 http,实例如下:

var http = require("http");

步骤二、创建服务器

接下来我们使用 http.createServer() 方法创建服务器,并使用 listen 方法绑定 8888 端口。 函数通过 request, response 参数来接收和响应数据。

实例如下,在你项目的根目录下创建一个叫 server.js 的文件,并写入以下代码:

var http = require('http');

http.createServer(function (request, response) {

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

    // 发送响应数据 "Hello World"
    response.end('Hello World\n');
}).listen(8888);

// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');

Node.js REPL(交互式解释器)

Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Windows 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应。

Node 自带了交互式解释器,可以执行以下任务:

  • 读取 - 读取用户输入,解析输入的 Javascript 数据结构并存储在内存中。
  • 执行 - 执行输入的数据结构
  • 打印 - 输出结果
  • 循环 - 循环操作以上步骤直到用户两次按下 ctrl-c 按钮退出。

Node 的交互式解释器可以很好的调试 Javascript 代码。

Node.js 事件循环

Node.js 是单进程单线程应用程序,但是因为 V8 引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高。

Node.js 几乎每一个 API 都是支持回调函数的。

Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。

Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数.


事件驱动程序

Node.js 使用事件驱动模型,当web server接收到请求,就把它关闭然后进行处理,然后去服务下一个web请求。

当这个请求完成,它被放回处理队列,当到达队列开头,这个结果被返回给用户。

这个模型非常高效可扩展性非常强,因为 webserver 一直接受请求而不等待任何读写操作。(这也称之为非阻塞式IO或者事件驱动IO)

在事件驱动模型中,会生成一个主循环来监听事件,当检测到事件时触发回调函数。


Node.js Buffer(缓冲区)

JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。

但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。

在 Node.js 中,Buffer 类是随 Node 内核一起发布的核心库。Buffer 库为 Node.js 带来了一种存储原始数据的方法,可以让 Node.js 处理二进制数据,每当需要在 Node.js 中处理I/O操作中移动的数据时,就有可能使用 Buffer 库。原始数据存储在 Buffer 类的实例中。一个 Buffer 类似于一个整数数组,但它对应于 V8 堆内存之外的一块原始内存。

































标签:node,Node,http,Buffer,require,js,模块,Js
From: https://blog.51cto.com/u_15716707/7370464

相关文章

  • python的dict和json数据的区别
    python的dict和json数据有什么区别?-知乎(zhihu.com)python字典与json的区别_python字典与json的区别_阿君聊风控的博客-CSDN博客expectedpropertynameor'}'injsonatposition1遇到如上报错几次,因为没弄清dict和json的区别1、dict是数据结构,json是数据格式,一般用于......
  • vs code 中 python 项目 settings.json 是做什么用的
    在VisualStudioCode中,项目的settings.json文件是用于配置项目设置的文件。其中,settings.json文件中保存了项目特定的设置,可以覆盖全局默认设置或用户设置。对于Python项目来说,settings.json文件可以用于配置以下内容:Python解释器路径:通过"python.pythonPath"属性......
  • js处理树形结构数据过滤
    最近项目经常遇到后台接口返回整个树形结构,而前端展示只需要展示部分类型的数据,需要过滤一下,所以整理了一个过滤方法。非层级结构时过滤非常简单,只需要一层代码就够了exportfunctionfilterTree(tree){returntree.filter(item=>item.type===0)}而要做到子节点也过滤......
  • JS 追加元素的几种办法
    JS追加元素的几种办法append(),在父级最后追加一个子元素appendTo(),将子元素追加到父级的最后prepend(),在父级最前面追加一个子元素prependTo(),将子元素追加到父级的最前面after(),在当前元素之后追加(是同级关系)before(),在当前元素之前追加(是同级关系)insertAfter(),将元素追......
  • 使用JSON.parseObject深拷贝二-复杂型拷贝
    问:如果json拷贝类型类似Page<T>这种复杂型的呢答:使用JSON的publicstatic<T>TparseObject(Stringtext,TypeReference<T>type,Feature...features)方法;代码如下:Page<EtcPassBillDataResponseVo>voPage=JSON.parseObject(JSON.toJSONString(dtoPage),new......
  • JS 获取页面尺寸
    通过JS获取页面相关的尺寸是比较常见的操作,尤其是在动态计算页面布局时,今天我们就来学习一下几个获取页面尺寸的基本方法。获取页面高度functiongetPageHeight(){varg=document,a=g.body,f=g.documentElement,d=g.compatMode=="BackCompat"?a......
  • js怎么删除数组元素多种方法
    1.根据索引删除数组元素delete数组[索引]  vararr1=["aa","bb","cc","dd"];deletearr1[2];运行之后:arr=["aa","bb",undefined,"dd"];delete  它是将内容删除为空,但是元素的个数不变2.根据元素内容直接删除数组元素splice(inde......
  • js ast 函数调用替换为值
    目标替换ob文件中形如_0x55f3('0x19',"Pg54")的代码为具体的值。consttypes=require("@babel/types");conststr_to_str={ StringLiteral(path){ const{node}=path; node.extra=null; }}var_0x4818=["wqImMT0tw6RNw5k=&quo......
  • MySQL的Json类型个人用法详解
    前言虽然MySQL很早就添加了Json类型,但是在业务开发过程中还是很少设计带这种类型的表。少不代表没有,当真正要对Json类型进行特定查询,修改,插入和优化等操作时,却感觉一下子想不起那些函数怎么使用。比如把json里的某个键和值作为SQL条件,修改某个键下的子键的值,其中可能会遇到数组形式......
  • JS中函数的上下文和上下文规则
    JS:函数的上下文、上下文规则、call和apply指定上下文JS中函数的上下文和上下文规则一、函数的上下文函数中可以使用this关键字,它表示函数的上下文函数中的this具体指代什......JS中函数的上下文和上下文规则一、函数的上下文函数中可以使用this关键字,它表示函数的上下......