node简介(代码片段)

Skd一路花开 Skd一路花开     2022-10-22     673

关键词:

一、什么是node.js

  Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。

  Node.js是一个让js运行在服务器端环境(类似于jvm)。

  Node.js提供了大量的工具库,使得js语言可以和操作系统交互(比如读写文件、新建子进程等)。从这个角度讲,node是js的工具库。

 

 二、Node的常用命令

  a、进入 REPL:

    – node – node

    --use_strict

  • REPL 环境中:

  – 类似 Chrome Developer Tools → Consoles

  – 特殊变量下划线(_)表示上一个命令的返回结果

  – 通过 .exit 或执行 process.exit() 退出 REPL 交互

  b、运行js代码 

  -在控制台进入当前的js文件所在的目录

  -node ./*.js

三、Node的全局对象

  Node中的全局对象是global。类似于客户端 JavaScript 运行环境中的 window。

  global属性:指向全局对象global。

  • Buffer
  • __dirname
  • __filename
  • clearImmediate(immediateObject)
  • clearInterval(intervalObject)
  • clearTimeout(timeoutObject)
  • console
  • exports
  • global
  • module
  • process
  • require()
  • setImmediate(callback[, ...args])
  • setInterval(callback, delay[, ...args])
  • setTimeout(callback, delay[, ...args])  

  全局变量在所有模块中均可使用。 但以下变量的作用域只在模块内,详见 module文档:

  • __dirname
  • __filename
  • exports
  • module
  • require()

  常用的全局对象

  process 对象是一个全局变量,它提供当前 Node.js 进程的有关信息,以及控制当前 Node.js 进程。 因为是全局变量,所以无需使用 require()

  常用属性(详细参考开发文档)

    a、process.argv  process.argv 属性返回一个数组,这个数组包含了启动Node.js进程时的命令行参数。

        b、process.stdout.write()    等价于没有换行的console.log();    

    c、process.stdin.on(\'data\',callback(input))  //注册一个接受用户输入的事件。

四、Node中的异步回调函数实现  

 1 //node中的异步回调函数的实现
 2     console.log("开始任务");
 3     setTimeout((filename) => 
 4        var file=redfile(filename) //阻塞io的操作 读文件
 5        print(file) //打印文件内容
 6     , 0);
 7     console.log("结束任务");
 8 
 9     console.log("开始任务");
10       
11     //读写文件的函数
12     function getfile(filename,callback)
13         if(file可读)
14             //错误优先的回调函数:try/catch语句无法捕获异步代码中的错误
15             callback(null,file);
16         else         
17             //错误优先的回调函数:try/catch语句无法捕获异步代码中的错误
18             //异步的throw new Error(\'文件读取失败\') 抛出的错误可能无法捕获。
19             callback(new Error(\'文件读取失败\'))      
20     
21     //使用函数
22     getfile(filename,(err,file)=>
23         if(err)
24             throw err;
25         print(file);//打印文件内容
26     )
27     console.log("结束任务");

 

五、Node中自定义事件  

 1 var event=require(\'events\');
 2 //自定义事件的构造函数
 3 function Myevent()
 4     //让先创建的events对象继承EventEmitter中的属性
 5     event.EventEmitter.call(this);
 6     //时间注册监听
 7     this.register=function()
 8         this.once(\'Myevent\',function()
 9             process.stdout.write(\'this is my event\');
10         )
11     
12 
13 //继承EventEmitter的方法
14 Myevent.prototype=event.EventEmitter.prototype;
15 //创建事件
16 var myevent=new Myevent();
17 //为事件注册一个监听
18 myevent.register();
19 //发射事件
20 myevent.emit(\'Myevent\');

六、Node.js的事件机制 

  Node.js应用程序在一个单线程的事件驱动模型中运行。虽然Node.js在后台实现了一个线程池来做工作,但是应用程序本身不具备多线程的任何概念。

  在传统的线程网络模型中,请求进入一个Web服务器,并被分配给一个可用的线程,对于该请求的处理工作继续在该线程上进行,直到请求完成并发出响应。

  

  node.js不会在各个线程上执行每个请求的所有工作,而是把工作添加到事件队列中,然后通过一个单线程的事件循环从事件队列中把工作提取出来执行,事件循环会抓取事件队列中最上层的工作,执行它,先后抓取下一个找工作执行,当事件队列里的所有工作都被执行完成时,node.js应用程序终止。

  

  上面图中有两个请求GetFile和GetData.Node.js程序把两个请求添加进事件队列中,然后事件循环主线程会提取出第一个GetFile请求,执行完成后执行回调函数,回调函数中的Open(file)和它的回调函数请求被添加进事件队列中,事件循环从事件队列中提取下一个GetData请求执行,执行完成后执行回调函数,后调函数中的Connect(file)和他的回调函数被加入事件队列,这种情况会一直持续到事件队列中没有可提取的事件为止。

  阻塞IO:停止当前线程的执行等待回应,直到收到回应才继续执行,阻塞IO的例子有:请求文件、读取数据库、请求套接字、访问远程服务。

  Node.js采用事件回调来避免对阻塞IO的等待。事件循环主线程会将阻塞IO的请求放入Node后台的线程池中执行,主线程可以处理其他的请求,当后台线程处理完那个阻塞IO的请求,主线程执行对应的回调函数,如果回调函数中没有阻塞IO的代码,直接执行返回,如果回调函数中包含阻塞IO的代码,继续放入事件循环的队伍,等待事件循环执行。

  

node.js简介(代码片段)

目录1.Node.js是什么?官网解释①Node.js isaJavaScriptruntimebuilton Chrome'sV8JavaScriptengine.1)     node不是一门语言,不是库,不是框架        是一个JavaScript运行时环境(runtime)        以前只有浏览器能... 查看详情

node.js基础(代码片段)

node.js初学1.node.js简介2.node.js搭建服务器3.fs模块的简单使用4.路由的简单设计Content-Type:5.模块HTML的多文件引用node.js的多文件引用exports命令exports的命名空间module.exports文件夹的使用node_modules文件夹6.npm的基本使用npm的身份证和依赖... 查看详情

node.js简介(代码片段)

文章目录Node.js简介基本含义产生原因nodejs特点nodejs的用途node.js的基本使用node环境搭建node编写终端编写js文件编写在Vscode上使用node.js运行js代码nodejs环境和浏览器环境的区别node特点总结:Node.js简介基本含义Node.js是一个能够... 查看详情

node以及指令相关知识(代码片段)

Node笔记Node简介及配置、快速上手、核心特点、模块化Node简介客户端的JavaScript是怎样的什么是JavaScript?脚本语言运行在浏览器中一般用来做客户端页面的交互(Interactive)JavaScript的运行环境?是不是运行在浏览器呢?不够严谨... 查看详情

node.js简介(代码片段)

目录一、什么是node.js二、为什么要用node.js三、node.js中的npm1、npm是什么2、npm命令安装模块3、选用cnpm四、node.js的模块化 1、CommonJS模块规范及规范化内容    2、moudle对象 3、使用require导入模块一、什么是node.jsNode.js是JavaScript... 查看详情

node.jsexpress框架详细总结(代码片段)

文章目录Express框架简介原生Node.js与Express框架对比Express中间件Express请求处理Express框架详细信息Express项目结构分析app.js文件配置详解express-art-template模板引擎Express框架简介Express是一个最小的,灵活的Node.jsWeb应用程序框架... 查看详情

node多进程学习(代码片段)

多进程学习简介进程间通信句柄传递简介NodeJs是一个单进程的语言,不能像Java那样可以创建多线程来并发执行。当然在大部分情况下,NodeJs是不需要并发执行的,因为它是事件驱动性永不阻塞。但单进程也有个问题... 查看详情

express简介(代码片段)

ExpressExpress安装及helloworld安装:npminstallexpressHelloWorld:constexpress=require(‘express‘)constapp=express()app.get(‘/‘,(req,res)=>res.send(‘HelloWorld‘))app.listen(8000,()=>console.log("服务已启动"))通过express-generator创建express项目安装expres... 查看详情

一初始node.js(代码片段)

一、Node.js简介1.1、什么是Node.jsNode.js®isaJavaScriptruntimebuiltonChrome’sV8JavaScriptengine.Node.js是一个基于ChromeV8引擎的JavaScript运行环境。Node.js的官网地址:https://nodejs.org/zh-cn/1.2、Node.js中的JavaScript运行环境注意& 查看详情

一初始node.js(代码片段)

一、Node.js简介1.1、什么是Node.jsNode.js®isaJavaScriptruntimebuiltonChrome’sV8JavaScriptengine.Node.js是一个基于ChromeV8引擎的JavaScript运行环境。Node.js的官网地址:https://nodejs.org/zh-cn/1.2、Node.js中的JavaScript运行环境注意& 查看详情

macnpm配置(代码片段)

1、NPM简介NPM(nodepackagemanager),通常称为node包管理器,是目前世界上最大的开源库生态系统。使用NPM可以对node包进行安装、卸载、更新、查看、搜索、发布等操作。安装完Node.js?,NPM就可以直接用了。2、NPM环境配置2.1安装Node.j... 查看详情

node.js--express框架中间件(代码片段)

...迎学习交流!!!持续更新中…文章目录框架简介Express框架--Web框架Express概述Express安装Express项目的目录结构原生Node.js与Express框架对比路由对比中间件app.use中间件用法中间件应用错误处理中间件捕获错误框架简介框... 查看详情

vue环境搭建简介(代码片段)

简单整理下vue的安装的新建项目安装node.js和npm参考其他教程安装vuenpminstallvue安装脚手架vue-clinpminstall--globalvue-cli安装完成后,执行命令查看vue版本Vue--version安装webpacknpminstall-gwebpack创建项目vueinitwebpack"ProjectName" 设置项目属性... 查看详情

superagent使用简介(代码片段)

SuperAgentSuperAgent是轻量级更为优化的ajaxAPI,对比大量糟糕的现存的API,SuperAgent是灵活的、易读的、并且非常易学,同时SuperAgent可用于Node.js!request.post('/api/pet').send(name:'Manny',species:' 查看详情

npm/node下载安装,环境变量设置(代码片段)

...load/选安装目录进行安装环境配置测试三、前期准备Node.js简介简单的说Node.js就是运行在服务端的JavaScript。 查看详情

nodeselector:pod定向调度(代码片段)

文章目录简介给Node上标签标签选择kubernetes预定义标签简介在实际情况下,有时候需要将Pod调度到制定的一些Node上,比如说CPU密集型Pod调度到CPU够大的节点上,IO密集型Pod调度到带宽够大的节点上等等。可以通过Node的... 查看详情

nodeselector:pod定向调度(代码片段)

文章目录简介给Node上标签标签选择kubernetes预定义标签简介在实际情况下,有时候需要将Pod调度到制定的一些Node上,比如说CPU密集型Pod调度到CPU够大的节点上,IO密集型Pod调度到带宽够大的节点上等等。可以通过Node的... 查看详情

nodeselector:pod定向调度(代码片段)

文章目录简介给Node上标签标签选择kubernetes预定义标签简介在实际情况下,有时候需要将Pod调度到制定的一些Node上,比如说CPU密集型Pod调度到CPU够大的节点上,IO密集型Pod调度到带宽够大的节点上等等。可以通过Node的... 查看详情