当前位置: 首页 > Web前端 > CSS

Node.js新手必须知道的4个JavaScript概念

时间:2023-03-31 12:00:58 CSS

Node.js新手必须知道的4个JavaScript概念RyanDahl创建了node.js来使这个想法成为现实。Node.js是基于Chrome强大的V8JavaScript引擎构建的服务器端框架。虽然最初是用C++编写的,但该应用程序通过JavaScript运行。这样,问题就解决了。一种语言可以统治它们。而且,您只需要在整个应用程序中使用这一种语言。因此,我们需要深入了解node.js。这就是本文的主题。以下四个基本概念是您掌握node.js所必需的。我会尽量让它们尽可能短。1.非阻塞或异步I/O由于Node.js是一个服务器端框架,其主要工作之一是处理浏览器请求。在传统的I/O系统中,当前请求只有在前一个请求的响应(HTML页面)到达时才会发出。这就是为什么它被称为阻塞I/O。服务器为了处理当前请求而阻塞其他请求,导致浏览器等待。Node.js不遵循这个I/O原则。如果请求耗时较长,Node.js会将请求发送到事件循环并继续处理调用堆栈中的下一个请求。一旦挂起的请求完成处理,它会通知Node.js并在浏览器上呈现响应。用一个虚拟的例子来理解这一点:阻塞I/O//接受表1的订单并等待...varorder1=orderBlocking(['Coke','IcedTea']);//一旦订单准备好,接受订单backtotable.serveOrder(order1);//一旦订单交付,移动到另一个表。//接受表2的订单并等待...varorder2=orderBlocking(['Coke','Water']);//一旦订单准备好,将订单返回给table.serveOrder(order2);//一旦订单交付,移动到另一个表。//为表3接收订单并等待...varorder3=orderBlocking(['IcedTea','Water']);//订单准备好后,将订单返回table.serveOrder(order3);//订单交付后,移至另一张桌子。在这个餐厅例子中,服务器给出菜单,等待点单完成,然后根据菜单返回餐桌上菜。当前顾客点餐时,服务员在旁边等候,不接受其他顾客的菜单。非阻塞I/O//获取表1的顺序并继续...orderNonBlocking(['Coke','IcedTea'],function(drinks){returnserveOrder(drinks);});//获取顺序对于表2并继续...orderNonBlocking(['Beer','Whiskey'],function(drinks){returnserveOrder(drinks);});//为表3订购并继续...orderNonBlocking(['汉堡包','比萨饼'],function(food){returnserveOrder(food);});在此示例中,服务员获取菜单,通知厨师,然后返回获取另一个菜单。在完成第一个菜单的过程中,他既按顺序服务当前顾客,又接受其他顾客的订单。服务员不会浪费时间阻止其他顾客的订单。2.原型原型是JavaScript中的一个复杂概念。但是由于在Node.js中多次使用原型,每个JavaScript开发人员都必须理解这个概念。在实现经典继承的语言中,比如Java,或者C++,为了代码重用,你首先要写一个类,然后从那个类创建对象或者扩展那个类。然而,类的概念在JavaScript中并不存在。首先在JavaScript中创建一个对象,然后从这个对象中添加你自己的对象,或者创建新的对象。这就是所谓的原型继承和原型实现。每个JavaScript对象都从它可以继承的属性链接到原型对象。原型类似于其他OO语言中的类,但不同之处在于它们本身就是对象。每个对象都链接到Object.prototype,而Object.prototype带有预定义的JavaScript。如果您通过obj.propName或obj['propName']查找属性,而该对象没有可以通过obj.hasOwnProperty('propName')检查的属性,则JavaScript运行时会在其原型对象。如果原型对象也没有这样的属性,则依次检查其原型,直到找到匹配项或达到Object.prototype。如果原型链上不存在该属性,则会导致未定义的值。这次给大家推荐一个免费的学习圈,总结了移动应用网站开发,css,html,webpack,vuenodeangular,面试资源。获取信息???对web开发技术感兴趣的同学欢迎加裙子:???582735936???,不管你是小白还是大牛我都欢迎,还有大牛整理的一套高效学习路线和教程免费分享给你,视频资料每天更新。最后祝大家早日学业有成,拿到满意的offer,快速升职加薪,走上人生巅峰。使用下面的代码示例来理解这个概念:if(typeofObject.create!=='function'){Object.create=function(o){varF=function(){};F.prototype=o;返回新的F();};varotherPerson=Object.create(person);当你创建一个新对象时,你必须选择一个对象作为它的原型。在这里,我们向Object函数添加一个方法。此方法创建一个新对象,该对象使用另一个对象作为其原型,并将其作为参数传递给它。当我们改变新对象时,它的原型不受影响。但是,当我们对原型对象进行更改时,这些更改对基于该原型的所有对象都是可见的。原型是一个复杂的概念。我将在另一篇文章中详细介绍。3.模块如果您曾经使用过Java中的包,那么Node.js中的模块也不例外。如果没有,请不要担心。模块是包含特定用途代码的简单JavaScript文件。模块模式用于使您的代码易于导航和使用。要使用模块属性,您需要在JavaScript文件中要求它,就像在Java类中导入包一样。node.js中有两种类型的模块。核心模块——这些模块是用Node.js库预编译的。核心模块的目的是为开发人员提供频繁出现和重复的代码片段,如果没有这些代码片段,将导致开发人员不得不一遍又一遍地编写相同的代码。一些常见的核心模块是HTTP、URL、EVENTS、FILESYSTEM等。用户定义模块-用户定义模块是开发人员为特定目的在应用程序中创建的模块。当核心模块不能满足需要的功能时,就需要用户自定义模块。模块是通过require函数提取的。如果它是核心模块,则参数只是模块的名称。如果是用户自定义模块,则参数为模块在文件系统中的路径。例如://提取一个像这样的核心模块varhttp=require('http);//提取用户定义的模块,例如thisvarsomething=require('./folder1/folder2/folder3/something.js');4.回调函数在JavaScript中,函数被认为是一流的对象。这意味着您可以使用这些函数来完成您可以使用常规对象执行的所有操作。您可以将函数分配给变量,将函数作为参数传递给方法,将函数声明为对象属性,甚至从函数返回函数。回调函数是JavaScript中的匿名函数,它可以作为参数传递给其他函数,可以被执行或从函数返回以供稍后执行。这就是回调函数——最广泛使用的函数式编程范式的基础。当我们将回调函数作为参数传递给另一个函数时,我们只能传递函数定义……换句话说,我们不知道回调函数什么时候执行。这完全取决于调用函数的机制。它将在稍后的某个时间点“回调”,因此得名。这也是Node.js非阻塞或异步行为的唯一基础,如下例所示。setTimeout(function(){console.log("world");},2000)console.log("hello");这是回调函数最简单的例子之一。我们传递一个匿名函数作为参数,它只是将控制台上的一些输出记录到setTimeout函数。它是唯一的函数定义,但不知道何时执行。这个需要在2秒后通过第二个参数调用setTimeout函数来判断。首先,第二条日志语句将输出记录到控制台,然后,2秒后,回调函数中的日志语句记录输出。//outputhelloworld这是Node.js新手必须知道的4个最重要的JavaScript概念。你怎么认为?希望大家畅所欲言!这次给大家推荐一个免费的学习圈,总结了移动应用网站开发,css,html,webpack,vuenodeangular,面试资源。获取信息???对web开发技术感兴趣的同学欢迎加裙子:???582735936???,不管你是小白还是大牛我都欢迎,还有大牛整理的一套高效学习路线和教程免费分享给你,视频资料每天更新。最后祝大家早日学业有成,拿到满意的offer,快速升职加薪,走上人生巅峰。