首页 > 代码库 > 开发环境-node-2

开发环境-node-2

NPM Node Packaged Modules       node包管理器

npm install 命令会在本目录下新增一个node_modules文件夹,并会在node_modules文件夹中添加npm模块
node.js 项目框架 express(官网:http://expressjs.com/)
socket.io 模块 使用socket协议处理长连接多请求的问题
forever 模块,实现项目的运营、监控
jade 模块,处理node.js无法内嵌html问题
request 模块,解决node.js发起HTTP请求处理模块
formidable 表单数据处理模块



express 使用
npm install -g express 全局安装express模块
npm install -g express-generator 安装express命令行工具

Usage: express [options] [dir]
options:
-h, --help output usage information (输出使用信息)
-v, --version output the version number (输出版本编号)
-e, --ejs add ejs engine support (添加ejs模板支持)
--pug add pug engine support (添加pug模板支持,pug-->jade)
--hbs add handlebars engine support (添加handlebars模板支持)
-H, --hogan add hogan.js engine support (添加hogan模板支持)
-v, --view <engine> add view <engine> support (ejs|hbs|hjs|jade|pug|twig|vash) (defaults to jade) (添加视图引擎支持(支持ejs|hbs|hjs|jade|pug|twig|vash))
-c, --css <engine> add stylesheet <engine> support (less|stylus|compass|sass) (defaults to plain css) (添加样式表引擎支持(支持less|stylus|compass|sass))
--git add .gitignore (添加 git忽略文件)
-f, --force force on non-empty directory (强制没有空文件夹)

创建express项目 express --view=jade {项目名}

安装指定版本时需要使用 npm install -g express@3.5.0这样的命令
用express创建后的project一定要使用npm install在project目录下添加依赖才可以运行
运行应用不再是node (app.js|bin/www)而是npm start(package.json scripts)



forever使用
npm install -g forever
forever start -l {路径}forever.log -o {路径}out.log -e {路径}err.log (app.js/ bin/www)
(-l 指定forever的运行日志 -o指定脚本流水日志 -e指定脚本运行错误日志)
//(linux) netstat -nap|grep node 查看node进程返回
在windows下安装后,启动forever时出现c:\root\.forever\9Rah.log无法创建问题时,需要手动在c:\中创建root文件
windows 查看forever进程 forever list


socket.io 模块
npm install socket.io
index_server.js //服务端
index_client.html //客户端



request模块
HTTP规范 ,get用于信息获取,post表示可能修改服务器上的资源的请求
英文/数字 原样发送 ;空格转换为+ ;中文/其他字符,则直接把字符串用base64加密,得出%E4......其中%XX中的XX为该符号以十六进制表示的ASCII



formidable模块
npm install formidable
IncomingForm 进来的form
//创建form解析器
var form = new formidable.IncomingForm();
//解析收到表单中的文件和字段
form.parse(req, function (err, fields, files) {}



NPM模块开发指南
node.js开发实战详解 p45



Node.js设计模式
exports.{name} 公有 public
var {name} 私有 private
公有方法在require引入后,其他模块可以使用

继承util模块的util.inherits(constructor,superConstructor)

// 单例模式 适配器模式(通过例外实例对象调用其他相关方法) 装饰模式(类似于面向切面 多态)
// 工厂模式

// 静态文件缓存
/*
* 设置缓存
* */
if (mmieConf[extname]) {
var date = new Date();
date.setTime(date.getTime() + CACHE_TIME);
// 设置文件的最后修改时间
resp.setHeader("Last-Modified", lastModified);
// 设置文件的最后过期时间为 1年
resp.setHeader("Expires", date.toUTCString());
resp.setHeader("Cache-Control", "public, max-age=" + CACHE_TIME);
}
// 如果请求头中包含 文件自从..时间修改之后 如果文件的最后修改时间和浏览器发出的最后记录时间相同 则返回304 表示文件没有修改,浏览器读取缓存
if (req.headers[‘if-modified-since‘] && lastModified == req.headers[‘if-modified-since‘]) {
resp.writeHead(304, "Not Modified");
resp.end();
return;
}


File System / 3 file system 1

// 显示还有中文名称的静态资源的问题
pathname=decodeUri(pathname);
// cross-device link not permitted 不允许跨设备链路
form.uploadDir = "d://imgsave"; 重设缓存路径

开发环境-node-2