当前位置: 首页 > 后端技术 > Node.js

节点初步(一)

时间:2023-04-03 18:20:36 Node.js

node介绍了node.js的一些'是'和'不是'它不是一个框架,这个库不是一个新的语言,它是一个平台,它是一个JS运行环境(浏览器也是一个JS运行环境)运行在Chrome的V8引擎中,性能非常高,不运行在浏览器沙箱中功能类似于C/C++可以访问电脑上的资源(文件,网络等)/NGINX前端搭建/前端工程(environment)转义(es6->es5,less/sass->css)压缩,混淆(把易读的源码变成几乎不可读的,最重要的手段是通过改变形参的名字)打包(package所有使用的文件从入口文件开始合并成一个文件)爬虫、命令行工具等Electron(VScode、Atom)没有UI框架、节点和浏览器组合,使用浏览器窗口实现用户界面(VScode)后台通用输入-outputmodelSynchronousI/O当文件读取完全完成后,返回内容传统上,一个文件完全读取执行完后,再读取下一个for(vari=0;我<10;i++){varcontent=readFile(i+'.txt')}优化方式(C/C++)所有文件同时读取,哪个先读取,哪个先执行。select函数是一个内置系统当传递的参数数组中的任何元素就绪时函数将返回varconn1=connect()varconn2=connect()varconn3=connect()while(true){varreadyConns=select([conn1,conn2,conn3])for(varreadyConnofreadyConns){vardata=read(readyConn)varresult=process(data)Write(readyConn,result)}}多线程多个文件在多线程中进行异步I/O(node.js)脚本在读写设备的同时不断执行,任务完成时调用回调函数实际上是通过多线程实现的,只是即多线程比较隐蔽,只有对应的接口才能调用fs.readFile('a.txt',(err,data)=>{})console.log(1)Synchronous/asynchronous同步方式包含隐藏等待I/O,适用于线性控制流程序异步模式下的等待I/O,适用于非线性控制模型。节点版本号相关,每年4月和10月发布大版本号(11.x.x->12.x.x)奇数版本维护时间相对较短(等下一个偶数版本发布后,再维护完全停止)新的偶数版本发布后,之前的偶数版本将成为LTS(LongTermService)版本,并继续保持1.5年的LTS版本非常稳定(API几乎不会改变),并将修复漏洞node命令执行js文件$nodehello.js(文件名)交互式控制台(REPL)$node>1+12>.help//一些常用的帮助信息(break/clear/editor/exit/load/save)$命令行参数process.argv可以得到传递给脚本的命令行参数showargv.js只包含一个console.log(process.argv)语句$nodeshowargv.js一--和二["node","/home/margin/showargv.js","one","--and","two"]debugdebuginbrowser$node--inspect-brkhello.js运行命令后,打开控制台Chrome并单击节点图标以中断以使命令在第一行暂停。你可以直接在VScode中调试ndb模块节点,而无需将其添加到全局范围内。很多函数,大部分函数都是通过调用require函数从模块中获取的。从路径为y的模块require(x)如果x是内置模块->直接返回内置模块->如果x以'/'开头则结束->如果x以'开头则将y设置为根目录./'或'../'或'/'->加载y+x组合的路径如果x看起来不像路径在当前文件夹的node-modules文件夹中寻找名为x的文件夹如果这个文件夹中有package.json,则加载主字段如果指向的文件中没有package.json,直接加载文件夹中的index文件。如果在当前文件夹的node-modules中找不到名为x的文件夹,则在当前文件夹的父文件夹中查找该节点-modules如果x为xx/yy,则加载xx文件夹中的yy文件chunk1=require('lodash').chunk//加载整个lodash,只读取chunkchunk2=require('lodash/chunk')//只加载lodash中的chunk.js文件来安装NPM模块$npminstallfiglet$npmifiglet//install和global可以简写$npmi-gfigletnpminstall:下载文件并安装到当前工作目录下npminstall--globalnode-modules文件夹下:全局安装,注意是global不是所有地方都需要安装,只能在当前文件夹需要,这里指的是全局安装一个命令行工具