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

NodeJs安装和使用介绍

时间:2023-04-03 16:53:17 Node.js

1.NodeJs介绍  NodeJS官网介绍:  Node.js是一个构建在Chrome的JavaScript运行时上的平台,用于轻松构建快速、可扩展的网络应用程序。Node.js  使用事件驱动、非阻塞I/O模型,使其轻量级且高效,非常适合跨分布式设备运行的数据密集型实时  应用程序。是一个Javascript运行环境,依赖于ChromeV8引擎进行代码解释事件驱动的非阻塞I/O(NodeJS会在遇到I/O事件时创建一个线程去执行,然后主线程继续执行)轻量级,可扩展,适用于实时数据交互应用单进程,单线程2.NodeJs的优缺点(NodeJS适用于高并发,I/O密集,业务逻辑量小的场景(高并发,聊天,实时消息推送))1)优点:  1。高并发(最重要的优点)  NodeJs改变了它连接服务器的方式,每次连接发出(emit)一个运行在NodeJS引擎进程中的事件(Event),并放入事件队列中,而不是生成为每个连接线程一个新的操作系统(并为其分配一些支持内存))  2。适用于I/O密集型应用2)缺点:  1。不适合CPU密集型应用;CPU密集型应用给Node带来的挑战主要有:由于JavaScript单线程,如果有长时间运行的计算(比如大循环  ),CPU时间片不会被释放,所以无法启动后续I/O;    解决方案:分解大型计算任务是多个小任务,让计算及时释放,不会阻塞I/O调用的发起;  2。只支持单核CPU,不能充分利用CPU  3。可靠性低,一旦代码某个链接崩溃,整个系统崩溃(原因:单进程,单线程)    解决方案:(1)Nnigx反向代理,负载均衡,开启多进程,绑定多端口;         (2)开启多个进程监听同一个端口,使用cluster模块;  4.Debug不方便,报错没有stacktrace3.NodeJs安装  下载地址:http://nodejs.org  安装:直接运行  查看安装版本:node-v4.Helloworld测试1.在节点中。在js安装目录新建文件helloworld.js,内容如下:console.log('HelloWorld');2、在控制台,进入nodejs目录,输入命令:nodehello.js控制台输出:HelloWorld5、浏览器访问测试1、说明:需要设置端口和http参数信息2、示例如下:1)在nodejs安装目录创建http.js文件复制代码varhttp=require('http');http.createServer(function(req,res){res.writeHead(200,{'Content-Type':'text/plain'});res.end('helloWorld\n');}).listen(1337,'127.0.0.1');console.log('服务器运行于http://127.0.0.1:1337/');复制代码2)在命令行启动服务,输入nodehttp.js3)在浏览器中输入http://127.0.0.1:1337/,页面输出HelloWorld6.使用hotnode热发布(自动更新脚本)1)注意:如果使用第5章中的nodehttp.js方式发布,需要在更改http.js后ctrc+c终止,然后重新发布。如果使用hotnode,则可以实现Hotrelease,有变化不需要重启2)使用方法1.npm-ginstallhotnode安装hotnode,可以使用hotnode-v查看hotnode版本2.使用hotnodehttp.js启动时,如第5章的例子,更改响应内容后直接在浏览器刷新页面 3.每次更新,hotnode会打印两条记录,已更改和节点进程s重启,如下图:七、NodeJs模块加载1)说明:1、NodeJs可以通过模块名或者模块路径获取模块的引用。2.内置模块(核心模型)在node进程开始时已经预加载,比如http模块    3.对于非内置模块,模块的引用会被映射到一个js文件2)模块加载:usevarmodel=require('modelName');    1.执行完require语句后,如果是内置模块,会在node内部加载内置模块    2.如果不是内置模块,则通过npm安装模块    3.require返回的对象可以是任意类型的JS对象3)加载文件模块     1.路径可以是绝对路径也可以是相对路径2.js可以省略    3.当前路径需要添加./varmodel=require('/asset/js/model.js');varmodel=require('/asset/js/model');varmodel=require('../asset/js/model');varmodel=require('./main.js');4)加载目录模块    1、加载方式如下:varmodel=require('../folderName');     2.如果文件夹中没有定义package.json文件,则默认加载index.js文件     3。如果存在package.json文件,则加载package.js中定义的文件,package.json中定义的格式如下:{name:'pack';main:'modelName.js';}     4。如果package.json文件和index.js文件不存在,就会加载失败。5)如果模块名不是内置模块,不是路径,也不是文件夹,node会尝试从当前目录的node_modules文件夹中搜索。如果没有找到结果,它将进入下一个目录,直到根目录。八、npm常用命令(node包管理器)1)安装Node模块——$npminstallmoduleNames2)查看当前目录下已安装的node包——$npmlist3)查看node模块的package.json文件夹——$npmviewmoduleNames4)查看包依赖-$npmviewmoduleNamerepository.url5)查看包依赖的Node版本-$npmviewmoduleNameengines6)更新节点模块-$npmupdatemoduleName7)卸载节点模块-$npmuninstallmoudleName