前言
既然说到要入门Node,那么它必然有其使用的好处,才值得我们去学习它。首先我们带着这样的疑问?
1. Node.js到底是什么?
说白了Node.js存在意义就是让JavaScript可以和其他的后端语言一样能够在浏览器上运行,它的存在对于JavaScript有了质的飞跃,可以让前端语言JavaScript在写完之后交给Node.js进行编译和解释
2. Node.js如何诞生?
计算机处理器智能识别机器语言,而JavaScript是一门高级语言,计算机并不能直接读懂。所以需要用引擎来将其转化成计算机所能理解的机器语言。例如,JavaScript本身并没有read这么一个function,然而通过v8,我们可以将其绑定到一个用c++写的readvcallback上,从而通过JavaScript我们也可以直接加载文件了。于是借助于v8种种便利的功能,诞生了Node.js
3. Node.js的优劣(很重要)?
优势:
- 1:Node.js采用事件驱动、异步编程,为网络服务而设计。其实Javascript的匿名函数和闭包特性非常适合事件驱动、异步编程。而且JavaScript也简单易学,很多前端设计人员可以很快上手做后端设计
- 2:Node.js非阻塞模式的IO处理给Node.js带来在相对低系统资源耗用下的高性能与出众的负载能力,非常适合用作依赖其它IO资源的中间层服务
- 3:Node.js轻量高效,可以认为是数据密集型分布式部署环境下的实时应用系统的完美解决方案。Node非常适合如下情况:在响应客户端之前,您预计可能有很高的流量,但所需的服务器端逻辑和处理不一定很多
劣势:- 1:Node.js单线程,只支持单核CPU,不能充分的利用多核CPU服务器。一旦这个进程崩掉,那么整个web服务就崩掉了。
- 2:Node.js开启多个进程,每个进程绑定不同的端口,用反向代理服务器如 Nginx 做负载均衡,好处是我们可以借助强大的 Nginx 做一些过滤检查之类的操作,同时能够实现比较好的均衡策略,但坏处也是显而易见就是我们引入了一个间接层。
- 3:Node.js多进程绑定在同一个端口侦听。在Node.js中,提供了进程间发送“文件句柄” 的功能。一个进程负责监听、接收连接,然后把接收到的连接平均发送到子进程中去处理。
- 4:Node.js可靠性低一旦代码某个环节崩溃,整个系统都崩溃。(原因:单进程,单线程)
4.Node.js的适合场景
- 1: 大量Ajax请求的个性化应用,每个用户看到的页面都不一样,缓存失效,需要在页面加载的时候发起Ajax请求,Node.js能响应大量的并发请求,Node.js能响应大量的并发请求
- 2:可以处理数万条连接,本身没有太多的逻辑,只需要请求API,组织数据进行返回即可。由于响应是少量文本,入站请求也是少量的文本,因此流量不高,一台机器甚至也可以处理最繁忙的公司的API需求。
- 3:Web论坛: nodeclub,是用 Node.js和MongoDB 开发的新型社区软件,界面优雅,功能丰富,小巧迅速,但你完全可以用它搭建自己的社区
- 4:Web博客:Hexo是一个简单地、轻量地、基于Node的一个静态博客框架。通过Hexo我们可以快速创建自己的博客,仅需要几条命令就可以完成。发布时,Hexo可以部署在自己的Node服务器上面,也可以部署github上面。对于个人用户来说,部署在github上好处颇多,不仅可以省 去服务器的成本,还可以减少各种系统运维的麻烦事(系统管理、备份、网络)。所以,基于github的个人站点
- 5:对Nodejs有初步的了解,接下来看看Node.js的应用场景。Web开发:Express + EJS + Mongoose/MySQL
5.Node.js的应用
- 1:express 是轻量灵活的Nodejs
- 2:Web应用框架,它可以快速地搭建网站。Express框架建立在Nodejs内置的Http模块上,并对Http模块再包装,从而实际Web请求处理的功能
- 3:ejs 是一个嵌入的Javascript模板引擎,通过编译生成HTML的代码。
- 4:mongoose 是MongoDB的对象模型工具,通过Mongoose框架,可以进行访问MongoDB的操作
- 5:mysql 是连接MySQL数据库的通信API,可以进行访问MySQL的操作
6. Node.js零基础入门案例
- 1:首先当然就是环境搭建。
- 2:数据库链接,这里用MySql数据库;到时候我也会写一份用MongoDB数据库的
- 3:接口的编写,包括增删改查
- 4:日志的打印
- 5:项目的部署