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 [email protected]这样的命令用express创建后的project一定要使用npm install在project目录下添加依赖才可以运行运行应用不再是node (app.js|bin/www)而是npm start(package.json scripts)
forever使用npm install -g foreverforever 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.ioindex_server.js //服务端index_client.html //客户端
request模块HTTP规范 ,get用于信息获取,post表示可能修改服务器上的资源的请求英文/数字 原样发送 ;空格转换为+ ;中文/其他字符,则直接把字符串用base64加密,得出%E4......其中%XX中的XX为该符号以十六进制表示的ASCII
formidable模块npm install formidableIncomingForm 进来的form //创建form解析器 var form = new formidable.IncomingForm(); //解析收到表单中的文件和字段 form.parse(req, function (err, fields, files) {}
NPM模块开发指南 node.js开发实战详解 p45
Node.js设计模式exports.{name} 公有 publicvar {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"; 重设缓存路径
时间: 2024-11-14 12:23:13