- 一、NodeJS 介绍
- 二、HTTP 模块、URL 模块 supervisor 工具
- 三、CommonJs 和 Nodejs 模块
- 四、NPM 第三方模块和 package
- 五、fs 模块
- 六、创建一个 WEB 服务器
- 七、Nodejs 的非阻塞 I/O、异步、事件驱动
- 八、静态文件托管 GET POST 路由 EJS 模板引擎
- 九、MongoDb 数据库介绍、安装、使用
- 十、MongoDB 数据库创建删除、表(集合)创建删除、数据增删改查
- 十一、MongoDB 索引 explain 分析查询速度
- 十二、nodejs 操作 mongodb3.x 数据库的方法
- 十三、NodeJs 操作 MongoDb 数据库 数据的增加 修改 删除
- 十四、Express 安装和使用
- 十五、express 中间件 cookie 的基本使用
- 十六、express 中间件 express-session 常见参数配置使用
一、NodeJS 介绍
1.1 简介
nodejs
是一个 JavaScript
运行环境。它让 JavaScript
可以开发后端程序,实现几乎其他后端语言实现的所有功能
Nodejs
是基于 V8
引擎, V8
是 Google
发布的开源 JavaScript
引擎,本身就是用于 Chrome
浏览器 的 JS
解释部分, V8
搬到了服务器上,用于做服务器的软件
短短几年的时间,Node 取得了巨大的成功。在企业界,Node 的应用也越来越广泛,2016 年 nodeJS 官方的调查报告。2016 年全球有 350 万开发者使用 nodeJS,相比去年保持了 100%的增长率。像 Yahoo、 Microsoft 这样的大公司,有好多应用已经迁移到 Node 了。国内的阿里巴巴、网易、腾讯、新浪、百度等 公司的很多线上产品也纷纷改用 Node 开发,并取得了很好的效果。据统计很多 A 轮、 B 轮的创业公司更 喜欢使用 NodeJs 开发。
1.2 NodeJs 的优势
1. NodeJs 语法完全是 js 语法,只要你懂 JS 基础就可以学会 Nodejs 后端开发
Node 打破了过去 JavaScript 只能在浏览器中运行的局面。前后端编程环境统一,可以大大降低开发成本
2. NodeJs 超强的高并发能力
Node.js
的首要目标是提供一种简单的、用于创建高性能服务器及可在该服务器中运行的各种应用程 序的开发工具- 首先让我们来看一下现在的服务器端语言中存在着什么问题。 在
Java
、PHP
或者.net
等服务器端语言中,会为每一个客户端连接创建一个新的线程。而每个线程需要耗费大约2MB
内存 理论上,一个8GB
内存的服务器可以同时连接的最大用户数为4000
个左右 。要让Web
应用程序支持更多的用户,就 需要增加服务器的数量,而Web
应用程序的硬件成本当然就上升了 Node.js
不为每个客户连接创建一个新的线程,而仅仅使用一个线程。当有用户连接了,就触发一个 内部事件,通过非阻塞I/O
、事件驱动机制,让Node.js
程序宏观上也是并行的。使用Node.js
,一个8GB
内存的服务器,可以同时处理超过4 万
用户的连接
3. 实现高性能服务器
- 严格地说,
Node.js
是一个用于开发各种 Web 服务器的开发工具。在Node.js
服务器中,运行的是高性能V8 JavaScript
脚本语言,该语言是一种可以运行在服务器端的JavaScript
脚本语言 - 那么,什么是
V8 JavaScript
脚本语言呢?该语言是一种被V8 JavaScript
引擎所解析并执行的脚本语言。V8 JavaScript
引擎是由Google
公司使用 C++语言开发的一种高性能JavaScript
引擎,该引擎并不局限于在浏览 器中运行。Node.js
将其转用在了服务器中,并且为其提供了许多附加的具有各种不同用途的API
。例如, 在一个服务器中,经常需要处理各种二进制数据。在JavaScript
脚本语言中,只具有非常有限的对二进制数 据的处理能力,而Node.js
所提供的Buffer
类则提供了丰富的对二进制数据的处理能力 - 另外,在
V8 JavaScript
引擎内部使用一种全新的编译技术。这意味着开发者编写的高端的JavaScript
脚本代码与开发者编写的低端的 C 语言具有非常相近的执行效率,这也是Node.js
服务器可以提供的一个重要特性
4. 开发周期短、开发成本低、学习成本低。
Node.js
自身哲学,是花最小的硬件成本,追求更高的并发,更高的处理性能。- 特点:
Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient.
1.3 NodeJs 适合做什么
在短短几年多的时间里,
Node
变得非常热门,使用者也非常多。这些使用者对于Node
的各自倚重点也各部相同,经过整理,主要有下几类
1. 前后端编程语言环境统一
这类重点的代表是雅虎。雅虎开放了
Cocktai
框架,利用 自己深厚的前端沉淀,将YUI3
这个前端框架的能力借助Node
延伸到服务器端,使得使用 者摆脱了日常工作中一边写JavaScript
—边写PHP
所帯来的上下文交换负担
2. Node 带来的高性能 I/0 用于实时应用
Voxer
将Node
应用在实时语音上。国内腾讯的 朋友网将 Node 应用在长连接中,以提供实时功能,花瓣网、蘑菇街等公司通过socket.io
实 现实时通知的功能。
3. 并行 I/0 使得使用者可以更高效地利用分布式环境
阿里巴巴 eBay 是这方面的典型。 阿里巴巴的 NodeFox 和 eBay 的 ql.io 都是借用 Node 并行 I/O 的能力,更高效地使用已有的 数据
4. 并行 I/O •有效利用稳定接口提升 Web 渲染能力
雪球财经和 Linkedln 的移动版网站均 是这种案例,撇弃 同步等待式的顺序请求,大胆采用并行丨/〇,加速数据的获取进而提升 Web 的渲染速度
5. 云计算平台提供 Node 支持
微软将 Node 引入 Azure 的开发中,阿里云、百度均纷纷 在云服务器上提供 Node 应用托管服务,Joyent 更是云计算中提供 Node 支持的代表。这类 平台看重 JavaScript 带来的开发上的优势,以及低资源占用、高性能的特点
6. 游戏开发领域
游戏领域对实时和并发有很高的要求,网易开源了 pomelo 实时框架, 可以应用在游戏和高实时应用中
7. 工具类应用
过去依赖
java
或其他语言构建的前端工具类应用,纷纷被一些前端工程 师用Node
重写,用前端熟悉的语言为前端构建熟悉的工具
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论