1 why:
1 Web 服务器是并发处理这些链接请求的。并发越高,服务器性能越好——到最终,大概是要解决著名 “C10K 问题”。在处理并发的这个技术问题上,NodeJS 表现出来的,就是高并发、低消耗的佼佼者。 前后端联调工作量减少,接口清晰后也方便自动化测试,对于大团队来说可以大幅度提升整体效率而性能从来都不是重点考虑的因素
2 what:
2.1 Node.js 是一个js 运行的平台。异步式 I/O。 事件驱动,异步编程,一个请求一个回调函数—》 到一个 堆栈中,执行堆栈。 2.2流程: 我们的应用已经可以通过应用各层之间传递值的方式(请求处理程序 -> 请求路由 -> 服务器)将请求处理程序返回的内容(请求处理程序最终要显示给用户的内容)传递给HTTP服务器。、 现今多数的 Web 服务器中,有一条新的链接就会申请一条线程来负责处理至到这个Request 周期结束,接着执行其他流程。可以想象,成千上万个链接便有成千上万条线程(Thread-spawning)。每条线程姑且以堆栈2MB 的消耗去计算,一条条线程它们的累加都是不小的数目。如何优化和改进本身就是一个大问题,此外,使用系统线程,必须考虑线程锁的问题,否则造成堵塞主进程又是一个令人操心的难题。NodeJS 则通过基于事件的异步模型绕开了基于线程模型的所带来的问题。NodeJS 使用 JavaScript 单线程(Single-threaded)轮询事件,设计上比较简单,高并发时,不仅根本性的减少了线程创建和切换的开销(因而没有吓人的消耗),而且由于没有锁,也不会造成进程阻塞。每当有链接发起到服务端之后,NodeJS 会分发 epoll、kqueue、dev/poll 或select 指令通知操作系统,有新链接到达,应执行指定的回调函数(Callback)。每个链接从成本上说只消耗一个堆(heap allocation)。 NodeJS选择高速 GoogleV8 的 JS 引擎 备注: Model.exports===可以重写 同一个时刻 执行的 请求个数 是一个 单线程的 但是 由于v8 执行的 回调函数的速度 很快的。 就无需同一个时刻执行 多个请求。 A:I/O 阻塞 一个线程 执行一个任务i/o操作时候任务不再继续了。, B:非阻塞的 一个线程永远执行操作。完全利用cpu。 - A:遇到I/O操作 要等待的 就停下来。 - B:遇到I/O操作。继续带系统完成操作时候,事件形式通知执行i/o操作线程, 该线程特定情况下执行事件。 模块化 与包。基于 commonJs 中 require(请求 使用) model.export(定义 声明) 包 –》 就是 模块化的—》实现具体功能的 一个集合文件集。 调试: 1 supervisor –》node (替代) + index.js 文件 改变了 的时候 自动重新加载。 2 命令行调试 node debug debug.js nànext, restartà重启。 工具 node-inspector。 核心模块: Fs 文件系统, util 采用工具 inherits 和inspect , process console.log(“”); 中间件的 使用中间件。 Req.flash 当前与下一次的 信息。 Next 符合DRY(Don’t Repeat yourself). 中间件: 其实 就是 在 每个 请求处理 函数 中 相同的东西 提取出来的代码片段。 在客户端和应用程序之间的一个处理请求和响应的的方法。 index.js( 请求基于对 模块, router 分配, 处理) router.js(路由的 url 与处理 函数的关系的映射) Mode.js 层(使用 数据类型 用对象的 noSql MongoDB数据库)---》 非关系型 view.js(模板) 流行的 库:Express 使用。 ,bootstrap 页面设计 (简单的方式。)
3 How:
环境 :node环境, npm(包管理)—》找到 地方 执行命令行。 使用的东西: 3.1 Ctrl + C 关闭 监听。 3.2 Cd 转换 文件的 目录 3.3 直接打开 某 磁盘 E:回车。 Web 开发 :MVC 模式 index.js( 请求基于对 模块, router 分配, 处理) router.js(路由的 url 与处理 函数的关系的映射) Mode.js 层(使用 数据类型 用对象的 noSql MongoDB数据库)---》 非关系型 view.js(模板) 流行的 库:Express 使用。
4 参考文献
Node 入门 :http://cssor.com/nodejs-start.html http://blog.csdn.net/zhangxin09/article/details/5874632 http://pan.baidu.com/share/link?shareid=3832225091&uk=1526873401&fid=542468211 http://www.cnblogs.com/lhb25/archive/2013/12/05/node-js-tutorials.html 文档 :http://nodeapi.ucdok.com/#/api/ 调试:http://blog.chinaunix.net/uid-52437-id-3451654.html http://dingbuoyi.iteye.com/blog/1472553 http://linmomo02.iteye.com/blog/1496736
5 疑问:
???/到这里,我们可以将postData从服务器以及请求处理程序中移除了 —— 一方面,对于我们处理文件上传来说已经不需要了,另外一方面,它甚至可能会引发这样一个问题: 我们已经“消耗”了request对象中的数据,这意味着,对于form.parse来说,当它想要获取数据的时候就什么也获取不到了。(因为Node.js不会对数据做缓存)