手机版

初始节点

时间:2021-09-09 来源:互联网 编辑:宝哥软件园 浏览:

基本概念

Node.js,或称Node,是一个允许JavaScript在服务器端运行的平台。可以说,Node.js开创了javascript的模块化开发。早期的javascript需求非常简单,基本上是作为函数编写的,然后是面向过程的。后来,面向对象开发的思想慢慢被引入,然后作为类。最后,js模块化开发的概念始于node.js的出现,使得臃肿的js代码避免了命名冲突等一系列开发问题。

Node最大的特点是采用了异步I/O和事件驱动的架构设计。Node.js是一个让js在浏览器之外运行的平台。它的最初目标是实现事件驱动和无阻塞的输入输出网络服务器

Node.js只是一个JavaScript运行环境(或一组库),它补充了关于异步IO的标准js,即读写网络和文件的功能。一个库无非就是调优API。除了稍微有点反人类的事件回调,和其他后端语言(PHP、Python)没有太大区别。

Node.js采用单线程模式,每个线程完成一个功能,一个进程可以有多个线程,所有的I/O请求都是异步的。每个异步I/O请求完成后,都会被推送到事件队列,等待程序进程处理。

总之,节点的核心思想是:无阻塞、单线程、事件驱动。(同步对应于阻塞,异步对应于非阻塞)

节点示意图。JS架构

单线程

javascript语言的执行环境是“单线程”。所谓‘单线程’就是一次只能完成一个任务。如果有多个任务,必须排队,前一个任务完成,然后执行下一个任务,依此类推。

这种模型的优点是实现相对简单,执行环境相对简单;缺点是只要一个任务需要很长时间,后面的任务就必须排队等待,会耽误整个程序的执行。常见的浏览器无响应(feign死亡),往往是因为某个Javascript代码长时间运行(比如无限循环),导致整个页面卡在这个地方,其他任务无法执行。

I/O是大多数Web应用的瓶颈,即读写磁盘、读写网络和读写数据库。用什么样的策略来等待这个时间成为了提升性能的关键点

同步和异步

为了解决这个问题,Javascript语言将任务的执行模式分为两种:同步和异步。

“同步模式”是上一段的模式。后一个任务等待前一个任务完成,然后执行。程序的执行顺序与任务的排列顺序一致、同步;异步模式完全不同。每个任务都有一个或多个回调函数。前一个任务完成后,执行回调函数而不是后一个任务,后一个任务在前一个任务完成前执行该行。因此,程序的执行顺序与任务的排列顺序不一致、不同步。

异步模式非常重要。在浏览器端,长时间的操作应该异步执行,以避免浏览器失去响应。最好的例子就是Ajax操作。在服务器端,“异步模式”甚至是唯一的模式,因为执行环境是单线程的。如果允许所有http请求同步执行,服务器的性能会急剧下降,很快就会失去响应。

进程和线程

mac系统中的进程和线程

从图中我们可以看到,一个流程可以包含多个线程,流程就像工程中的车间一样,线程就是这个车间的工人。在引入线程的操作系统中,进程通常被视为分配资源的基本单位,而线程被视为独立操作和调度的基本单位。由于线程比进程小,基本没有系统资源,调度它们的成本会小很多,可以更高效地提高系统中多个程序之间的并发执行。

区分

线程和进程的区别在于子进程和父进程有不同的代码和数据空间,而多个线程共享数据空间,每个线程都有自己的执行栈和程序计数器作为其执行上下文。多线程主要是节省CPU时间,充分利用,具体情况看。线程的运行需要使用计算机的内存资源和CPU。

模块和封装模块

模块:实现某些特定功能以实现模块化编程的文件。通过require(模块名称)介绍模块。—模块中的函数(如变量和函数)通过分配给导出对象的属性提供给调用者。

如何使用该模块。

在Node中使用模块非常方便。在JavaScript代码中,可以直接使用全局函数require()加载模块。例如,我们可以使用require('http ')来加载node附带的http服务器模块。

包:包是封装用于发布、更新、依赖管理和版本控制的模块的文件夹。Package.json用于描述包信息:入口文件、依赖的外部包等。使用npm install命令安装软件包,并通过require使用软件包。

异步输入/输出和事件驱动

Node.js的异步机制是基于事件的,每个I/O都是一个请求,所有的磁盘I/O、网络通信和数据库查询都是以非阻塞的方式请求的,返回的结果由事件循环处理。如下图所示:

Node.js进程将同时只处理一个事件,并立即进入事件循环检查,处理以下事件。这样做的好处是CPU和内存可以同时专注于一件事情,同时可以尽可能并行执行耗时的I/O操作

开始节点编程

这里推荐大家使用webstorm开发node.js,方便快捷。与cmd或Mac相比,它更容易使用。

至于节点的安装,我们自己做百度吧。这里就不细说了。我们来看看webstorm下的节点编程界面:我们只需要在准备好的节点代码界面上按下鼠标右键,然后点击Run,方便快捷。

以下是节点的输出界面:

我推荐三个在Mac系统下进行网页开发的工具:coda2、webstorm和崇高text3。这些都是我目前拥有的最好的开发工具,大家不妨试试哪一款更适合自己的口味。

网络风暴中节点开发需要配置一定的文件,我们自己百度一下吧。因为我的webstorm已经配置好了,所以不能截图给大家看步骤。大致步骤如下:先点击顶栏的webstorm,然后点击讲课,再点击Node.js和NPM,然后点击右侧的Configure。最后,它会是这样的:

这个过程类似于windows中的过程。我用的版本是8.0.4。

全局变量

在js编程中,我们最好给每个变量添加var关键字,避免污染全局命名空间,增加代码耦合的风险。

安慰

控制台用于将字符输出到标准输出流(stdout)和标准错误流(stderr)。

Console.log()将字符打印到标准输出流中,并以换行符结束。它接受多个参数,将以类似于C语言的printf()格式输出

Console.log(__dirname)输出文件目录来计算代码运行时间

控制台。时间(标签)控制台。时间结束(标签)

我们只需要在开头和结尾给出相同的标签,并在中间放入任何想要计算执行时间的代码。

_ _文件名和_ _目录名

console . log(_ _ filename);///Users/hwax/Desktop/My Project/Avalon/hello . js console . log(_ _ dirname);///用户/hwax/桌面/我的项目/avalon

版权声明:初始节点是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。