APP下载

Node.js认识初步

2021-02-18王浪

科学与生活 2021年30期

王浪

摘要:现代信息技术日新月异的同时针对 Node.js 的机制、语言比较、前景发展分析与自我认识基础。

关键词:Node.js 后端编程发展

1.node介绍

和java一样Node.js是以 JS语法在后端运行的服务器部署语言,他诞生的初始意愿是为了方便编程开发人员对于 web开发的全栈开发。而且它对于其他服务器端语言而言,它诞生到现在仅仅十余年,与成熟稳定的 Java而言,node还是一个年轻且具有广阔发展前景的后生语言。同时,node与前端 JavaScript两者一脉相承,使用同一套语法,但两者却定位不一致,前端 JavaScript针对页面布局操作以控制页面中元素动作为主,而 node在后台部署时,更多的是进行数据库操作、接受前端数据并处理和返回处理数据,并没有和前端一样的 DOM与 BOM元素操作。

2.node机制

和 JavaScript一样,node使用的是单线程机制。也就是说在同一时间之内 node只能进行一件事件操作,也就意味着对于多线程池里的资源对于node而言将难以利用。在这一问题上node采用异步I/O与实践驱动相结合的用法,将单线程的node在高并发运维环境,发挥其重要作用将一些系统操作转至主线程的其他同步操作之上,以此达到让主线程去处理更多客户端传递过来的用户请求与数据库相应操作。同时在资源占用的比较上 node的地位也是众多后端语言不可比拟的,node虽然是单线程,但正因为如此,在服务器承载巨大压力的时候,相较于其他语言对内存的占用依然是很小的。同时单线程安全性能更好控制,在线程中避免多线程同步互斥之间的锁死、加锁、解锁等冗余操作。

3.模块化编程

使用 node开发 web服务器时,为构建高效率的 web服务,其中node将操作系统的很多底层繁琐代码封装成一个个核心模块,供开发者在开发时随时调用,提高时间效率。例如,fs、http、path……等等模块, 引入一个核心模块式需先定义一个变量接收,然后通过该变量对所需进行步骤操作,对于一个模块的获取,其中有个关键字尤其重要,那就是 exports,简单地翻看源码就可以知道,export相当于接口 API的出口,所有的封装方法即使用到的变量都挂载在这个关键字中。同时,在系统提供的“官方”模块时,在项目实现过程中必然各式各样的需求,而这些需求有的是“系统”’所提供的不了的,那么在这时,就需要其他功能的模块来实现这些花样的操作才行,也就产生了第三方模块,和系统内置的一样,它们同样也和系统核心模块一样的引入方式,不同的是它们并非内置,使用时需要通过互联网到资源网站中按需下载,而在node平台,在命令行中使用 npm + I + ‘模块名称’’即可。

4.与非关系型数据库的契合操作

Node可以操作的数据库很多,但常常与其联用的都是非关系型数据库的代表 MongoDB。首先相比关系型数据库严格的表结构,MongoDB中并没有表结构,取而代之的是一个一个的集合,这在设计格式上更加地灵活,在对于数据格式存储上,其格式多元化,多样化,其中的数据存储模板 mongoose.Schema 可根据数据接口类型变化而变化,不像关系型数据库一样往往只能使用基本格式,格式变更难度大。和 node一样 MongoDB都属于轻量级架构,对于中项目数据库需求的往往部署很简单。项目中数据库操作只需要配置一些环境变量,然后直接安装,通过官网提供的 node连接语句进行连接即可。

5.框架基础

虽然 node可以直接使用 Es6的語法来提高开发效率,但是对于使用一个新语法而言,如果有一个对基础操作进行封装的快速框架的话,那么项目开发效率将大大提升,所以早在 2010 年时,node的 Express框架就诞生了,他是 node最早的一个框架,到目前也是使用人数最多的一个框架。框架本质上是一个包含了多个模块功能(node_module)文件大文件汇总。针对 Express框架,它是一个面向代码新手的一个框架,其框架构建之初的定位为快速、简约、独立、精巧灵活的 node框架,它的构建基础为 node原生 http核心模块上,同时它也并不像一些大型后端框架一样比较呆板。对于 Express的使用,在 node控制面板植入命令 npmiexpress ,然后通过第三方模块引入方式进行框架模块的使用。

6.与 Java的对比

不同的后台布局语言都有一个共同的特点,那就是都能完成同一个需求,但不同的是不同语言实现需求的核心语法和操作过程是不同的。在这时,对于同一需求不同语言实现的代码过程越简单,效率越高,则会优先使用该语言。Node与 Java相比之下,其开发速度更加快速,在项目线上运行时也更流畅,但 node在企业中一般针对中小型项目的部署,对于大型项目而言使用 node不利于项目文件管理,管理不当容易使文件错乱,虽然对于开发速度相对较慢的 Java而言,大型项目也能轻易的进行项目管理,管理成本节省很多。解决需求问题时 node比 java效率高。实际开发中复杂的开发环境中,采用多线程解决信息处理需求无疑是很好地应对方法策略,但在遇到这方面的需求时单线程的 node利用 JavaScript的回调函数进行需求的异步处理操作。

7.发展与前景

第一个版本的 node起源于 Google的 V8引擎,同时由于多数 web开发工作者使用 js来布局前端页面,所以 node在 web开发中得以快速发展蔓延开来。因为 与 JavaScript同源,所以在升级过程中关键点为轻量、减少开发难度。至 2009 年到2021年为止 node已经更新了 17 个版本。随着技术成熟度的增加,未来对于项目的性能需求将会越来越高。同时没有任何一门后端语言如 node般与前端如此契合,而且针对node的高性能和容易且快速上手的性质,尤其对于 web开发的前端程序员而言,在前端转向全栈的趋势下,node便会成为未来 web开发人员的必备技能,其广阔的前景不可限量。

参考文献

【1】深入浅出Node.js[J]. 中国科技信息,2014(1).

【2】张钊源,刘晓瑜,鞠玉霞. Node.js后端技术初探[J]. 中小企业管理与科技,2020(22).

【3】唐榜. 基于Node.js的Web服务端框架研究与实现[D]. 2021.

【4】刘江涛,王亮亮,崔夏阳,等. 基于Node.js和MongoDB的铁路选线案例系统设计与实现[J]. 铁路计算机应用,2021(9). DOI:10.3969/j.issn.1005-8451.2021.09.09.