2。1。1 nodejs
在软件开发中, Node。js是一个是服务器端的开源的,跨平台的web应用程序的运行环境。虽然Node。js的并不是一个JavaScript框架,但是它的许多基本模块都使用Javascript编写,并且许多开发人员可以使用JavaScript编写新的模块。它的运行时环境使用谷歌的V8 JavaScript引擎解释JavaScript。论文网
Node。js具有能够异步I/O的事件驱动的架构。这些设计选择的目的是为了优化拥有许多输入输出的web应用程序的吞吐量和可扩展性,以及那些实时web应用(例如,实时通信的程序和浏览器游戏)。
Node。js分布式开发项目,由Node。js的基金会支配,由Linux基金会的合作项目计划提供帮助。
Node。js允许使用JavaScript和处理各种核心功能的“模块”集合创建web服务器和各种网络工具。 Node。js的模块使用了一系列的API,旨在降低编写服务器应用程序的复杂性。常见的框架包括连接,Express。js,Socket。IO,Koa。js,Hapi。js等等。
许多现代桌面的IDE提供了编辑和调试的Node。js应用的专门功能。这样的集成开发环境包括Atom,Brackets,JetBrains公司的WebStorm,微软的Visual Studio,NetBeans,Nodeclipse Enide studio(基于Eclipse和Visual Studio代码)。一些基于Web的在线集成开发环境也支持Node。js,例如Codeanywhere,Cloud9 IDE和Koding。当然,任何文本编辑器如Notepad++耶能够代替IDE使用,虽然他们没有代码补全和调试的功能。
Node。js 运行在一个单线程上,使用非阻塞的I/O回调函数,使得它能够支持成千上万的同步连接而无需线程切换的花费。这样的设计使得所有的请求在观察者模式下共享了一个单线程,构建了一个高冰法的应用,在这里所有的I/O函数必须有一个回调函数。为了容纳单线程的事件循环,nodejs轮流利用libuv库实现了一个固定大小的线程池负责所有的非堵塞的异步I/O操作。
一个单线程的缺陷是,Node。js不允许对应用进行垂直缩放,例如通过增加CPU核心数,让它运行而不使用一个附加的模块,如cluster。StrongLoop Process Manager 或者 pm2。然而开发者们可以增加默认的libuv线程池中的线程数,这些线程可能会被跨核的分布在操作系统的各个地方。文献综述
Node。js中执行并行任务由线程池处理。主线程函数提交任务到公共任务队列,使得线程池中的线程们能够被pull出来并且被执行。Node。js由自带的无阻塞系统功能,包括网络转换功能,它能转化为内核端非阻塞套接字。Node。js也自带阻塞系统功能,如文件I/O,它九运行在其自己的线程上。当线程池中的线程完成一个任务,它会通知主线程,这时候主线程会依次唤醒并执行注册了的回调函数。当回调函数们在主线程上依次串行的被处理,拥有长时间运算的和其他CPU密集型任务的整个事件回调将会被冰冻,直到整个队列清空,他们才会被解冻并且运算。
2。1。2 npm
NPM是Node。js的服务器平台的预安装包管理工具。它用来安装那些在npm上注册了的程序,它能够管理安装和第三方Node。js程序。NPM不与CommonJS的require()语句相混淆。它不用于负载的代码;相反,它是用来在命令行下安装代码以及管理程序之间的依赖性。在npm注册表能够中找到的包有简单的帮助库像underscore。js也有任务处理工具像grunt。
2。2 后端
2。2。1 Express
Express。js是一个web应用服务器框架,用于构建单页面,多页面和混合页面的web应用。它是一个Node。js标准的原始服务器。它本来的作者Holowaychuk将其形容为一个Sinatra启发服务器,意味着它相当小巧,拥有许多特性,通过安装插件来实现。Express是一个MEAN stack的后端部分,这之中由mongodb负责数据库而由angularjs负责前端。 Nodejs+restful视频管理系统设计(4):http://www.youerw.com/jisuanji/lunwen_97480.html