<Node.js 高级编程> 作者简介 Pedro Teixerra 高产,开源项目程序员 Node 社区活跃成员,Node公司的创始人之一. 10岁开始编程,Visual Basic.C.C++.Java.PHP.Ruby.Javascript 构建模块Fugue.Alfred.js.Carrier.Nock 前言 大学期间,构建了多线程TCP服务器 事实证明,让同步精细化(最大化资源和时间)和正确化(避免死锁),比较难处理. 从事UNIX和关注Java,然后落到PHP和Ruby.才到Jav…
Motivation 世俗一把,看看前端的JavaScript究竟能做什么. 顺便检验一下自己的学习能力. Audience 想看偏后台的Java程序员关于前端JavaScript的认识的职业前端工程师.全栈工程师. 本人技术积累: 3年+语义网技术研究经验: 1年+Java Web开发经验(SSH+jQuery).已读过<HTTP权威指南>.有REST架构风格的意识: 粗略读过APUE.UNP第一卷,稍微详细的读过Netty in Action MEAP5. Scope Node.js文件.…
Outline 1 概述和安装 1.1 安装Node 1.2 Node简介 2 Node核心API基础 2.1 加载模块 2.2 应用缓冲区处理.编码和解码二进制数据 2.3 使用时间发射器模式简化事件绑定 2.4 使用定时器制定函数执行计划 1 概述和安装 1.1 安装Node 参见Ubuntu 14.04下搭建Node.js的开发环境或其他类似文章. npm: Node包管理器 两种主要的工作模式:全局模式.本地模式 本地模式:安装到当前目录下node_modules目录中. 常用命令: n…
Explanation 现阶段console.log(...),util.inspect(...), JSON.stringify(...)在控制台输出已经够用了[2015/07/19]. 单元测试隶属于高级话题,虽然是程序员的自我修养,但现阶段完全不予接受. 而关于控制回调流程,先等Node.js摆脱"性能不理想的恶名"再说. Outline 4 构建与调试模块及应用程序 4.1 测试模块及应用程序 4.2 调试模块及应用程序 4.3 控制回调流程 4 构建与调试模块及应用程序 4.…
Outline 5 构建Web应用程序 5.1 构建和使用HTTP中间件 5.2 用Express.js创建Web应用程序 5.3 使用Socket.IO创建通用的实时Web应用程序 5 构建Web应用程序 5.1 构建和使用HTTP中间件 5.1.1 Web开发的常见任务: (1) HTTP服务器负责的任务 解析请求URL.维护会话关联.持久化会话数据.解析Cookie等. (2) 业务程序可以参与的任务 检查和修改请求和响应,一些Web框架正是包装了请求和响应的传递链以方面业务程序的编码工作…
Node 核心API基础 第三章 加载模块 第四章 应用缓冲区 第五章 事件发射器模式简化事件绑定 第六章 使用定时器制定函数执行计划 第三章 加载模块 本章提要 加载模块 创建模块 使用node_modules文件夹 问题: 全局名称空间,共享 安全性问题.冲突.难以跟踪与解决. Node解决 使用了CommonJS模块标准. 划分模块,根本没有全局作用域 3.1 理解Node如何加载模块 文件路径 + 名称 核心模块会预先加载 NPM安装模块 var module = require('mo…
Outline 3.4 构建TCP服务器 3.5 构建HTTP服务器 3.6 构建TCP客户端 3.7 创建HTTP请求 3.8 使用UDP 3.9 用TLS/SSL保证服务器的安全性 3.10 用HTTPS保证HTTP服务器的安全性 3.4 构建TCP服务器 TCP服务器对象通过require("net").createServer()创建,它是一个事件发射器(event emitter),发射事件包括:listening, connection, close, error. TCP…
Outline 3 文件.进程.流和网络 3.1 查询和读写文件 3.2 创建和控制外部进程 3.3 读写数据流 3 文件.进程.流和网络 3.1 查询和读写文件 path 从Node 0.8起,path模块只负责处理文件路径相关的字符串,不与实际文件或路径关联. sample code: /** demonstration of module 'path' 's usage */ var path = require("path"); // 1 exists() - DEPRECAT…
Outline 6 连接数据库 6.1 使用node-mysql连接MySQL数据库 6.2 使用Nano连接CouchDB数据库 6.3 使用Mongoose连接MongoDB数据库 6 连接数据库 6.1 使用node-mysql连接MySQL数据库 node-mysql书上使用的版本与最新的版本API变化很大, 最新版本文档见node-mysql lib,可以看到还提供了连接池,这里不做介绍. 一个简单客户端 /** demonstration of node-mysql serviec…
2.1 控制器的角色 MVC模式中的控制器(Controller)主要负责响应用户的输入,冰球在响应时修改模型(Model).通过这种方式,MVC模式中的控制器主要关注的是应用程序流.输入数据的处理,以及对相关视图(View)输出数据的提供. URL首先告知路由机制去实例化哪个控制器,调用哪个操作方法,并为该方法提供需要的参数.然后控制器的方法决定使用哪个视图,并对该视图进行渲染. URL并不用存储在Web服务器磁盘上的文件有直接对应关系,而是与控制器类的方法有关. 2.2 示例应用程序:MVC…