### nodejs菜鸟进阶之路
作为一个iOS开发,看到nodejs,第一反应是,这么什么?
对于一个未知事物,我们要秉承三个问题?
What?
Why?
How?
#### What
简而言之,是什么?
Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。
#### Why
为什么用它?
RESTful API :客户端和服务器之间的交互在请求之间是无状态的
单线程 : Node.js可以在不新增额外线程的情况下,依然可以对任务进行并行处理 —— Node.js是单线程的。它通过事件轮询(event loop)来实现并行操作,对此,我们应该要充分利用这一点 —— 尽可能的避免阻塞操作,取而代之,多使用非阻塞操作。
非阻塞IO:
V8虚拟机
事件驱动
#### How
其实上面都是扯淡了,现在才是真正的开始。
### nodejs初始
#### 前奏
我们需要去了解一下npm 或者yarn命令的使用,这是基础哦!
#### 安装
这个大家去网上找相应教程即可,通过npm\yarn执行相应命令就可以了,当然,也可以使用docker之类的高级工具。
#### 第一个项目
```
var http = require('http');
http.createServer(function (request, response) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Hello World\n');
}).listen(8888);
```
是的,你没有看错,就是这几行代码,(尼玛。。。)
你创建一个js文件,命令行输入 node server.js就起来了。
然后访问127.0.0.1就能看到 Hello World了
如果你只想知道什么是node,看到这里,你可以撤了!
### eggjs
我这边做的项目是基于eggjs开发的,所以主要以介绍eggjs为主。
#### eggjs项目主要目录及文件
接手一个项目,了解文件目录是必要的,方便后期问题代码定位。
#### 一级目录
app: 项目代码编码区
config 项目配置区
app.js 项目对象,有些时候不存在
package.json 项目包管理文件
主要介绍app文件目录,其他目录各位自行去其他项目扒,基本上都是死的。
#### app目录
app/router.js 用于配置URL路由规则。
app/controller/ 用于解析用户输入,处理后返回响应结果。
app/extend/ 用于框架内部对象的拓展(request,response,context,application)和工具类(helper)的编写。
app/middleware/ 用于编写中间件。
app/service/ 用于编写业务逻辑,如数据库操作的封装,api请求的封装等。
app/public/ 用于放置静态文件。
app/view/ 用于放置模板文件。
app/model/ 用于放置数据模型。
app/router/ 用户放置分离的路由
本期先介绍到这儿,下期介绍,项目必要安装包。