nodejs 4 npm
来源:互联网 发布:python的前景 编辑:程序博客网 时间:2024/06/08 16:42
npm和配置
Node Packaged Modules 简称NPM,是nodejs的包理器。
Express框架
express框架继承了web的http服务器的创建,静态文件管理,服务器的url请求处理,GET和POST请求分发,Session处理等功能。
- 全局安装express
$ npm install -g express-generator
(express-generator可以安装express框架的工程模板生成一个项目。) 进入任何目录执行
$ express app
如图所示: 下载依赖:
$ cd app && npm install
进入app文件夹,运行app.js启动项目
npm start
浏览器输入
http://127.0.0.1:3000
jade模板
jade是一款高性能、简洁易懂的模版引擎,jade是html的javascript实现。
安装jade:目录下执行$ npm install jade --save
- app应用下的jade模板文件index.jade
extends layoutblock content h1= title p Welcome to #{title}
extends layout
在index.jade页面加载layout.jade- h1和p1分别表示html对应的
<h1></h1>
和<p></p>
,其后的值是标签内的DOM元素- #{title}是服务器Node.js传递的参数
- render API: res.render( ‘模板名’ , { 参数对象 });
//app/routers/index.js /* GET home page. */router.get('/', function(req, res, next) { res.render('index', { title:'Express'}); );
jade中的if、for案例
【1】 if条件判断语法
if ${name} == 'admin' p this is an admin else p this is not an admin
【2】 for循环语法
each:
var items = ["one", "two", "thress"];each item in items li = item
for:
for user in users for role in users.roles li = role
forever模块
作用: 监控文件更改、自动重启等。
使用方法:
- 命令行中使用
- 在node.js编码中require forever模块种使用
全局安装
$ npm install forever -g
- 使用:
# 启动forever start ./bin/www #最简单的启动方式forever start -l forever.log ./bin/www #指定forever日志输出文件,默认路径~/.foreverforever start -l forever.log -a ./bin/www #需要注意,如果第一次启动带日志输出文件,以后启动都需要加上 -a 参数,forever默认不覆盖原文件forever start -o out.log -e err.log ./bin/www #指定node.js应用的控制台输出文件和错误信息输出文件forever start -w ./bin/www #监听当前目录下文件改动,如有改动,立刻重启应用,不推荐的做法!如有日志文件,日志文件是频繁更改的# 重启forever restart ./bin/www #重启单个应用forever restart [pid] #根据pid重启单个应用forever restartall #重启所有应用# 停止(和重启很类似)forever stop ./bin/www #停止单个应用forever stop [pid] #根据pid停止单个应用forever stopall #停止所有应用# 查看forever守护的应用列表forever list
socket.io模块
- 作用: 将WebSocket协议应用到所有的浏览器。
- 应用实例: 在线联网游戏、实时聊天、实施股票查看、二维码扫描登陆等。
- 安装
$ npm install socket.io
实例项目:
登录统计在线人数,服务端实时推送给客户端在线人数
因为代码挺长的 这里就不复制粘贴了,详细代码请看代码仓库的代码。
代码仓库(喜欢请star(๑•ᴗ•๑))注意:
报错:
http://127.0.0.1:8888/socket.io/1/?t=1404410309733 400 (Bad Request)
解决办法:应该是socket.io.js版本太低,客户端改成<script src="https://cdn.socket.io/socket.io-1.0.6.js"></script>
request模块
封装http请求方式: GET、POST、HEAD、DEL等
1. GET案例
//app_get.jsvar http = require('http');var server = http.createServer(function (req,res){ res.writeHead(200,{'Content-Type':'text/plain'}); res.end("hello world\n" + req.method);}).listen(3000,"127.0.0.1");console.log('Server running at http://127.0.0.1:3000/');//request_get.jsvar request = require("request");request.get("http://127.0.0.1:3000", function(err, response, result){ console.log("get", result);})//执行node app_get.js//执行node request_get.js//输出: get hello wolrd\n GET
2. POST案例
//app_post.jsvar http = require("http"); querystring = require("querystring");var server = http.createServer(function (req,res) { var postData = ""; /*接受客户端post的数据*/ req.addListener("data", function(postDataChunk) { postData += postDataChunk; }) /*数据接收完成后执行匿名回调函数*/ req.addListener("end", function() { var postStr = JSON.stringfy(querystring.parse(postData)); res.writeHead(200,{'Content-Type':'text/plain'}); res.end(postStr + "\n" + req.method); })}).listen(3000,"127.0.0.1");console.log('Server running at http://127.0.0.1:3000/');//request_post.jsvar request = require("request");request.get("http://127.0.0.1:3000", {form: {"name": "zula", "book": "node.js"}}, function(err, response, result) { console.log("get", result);})//执行node app_post.js//执行node request_post.js//输出:{"name": "zula", "book": "node.js"} POST
Formidable模块
解决文件上传
案例
//app.jsvar formiadable = require("formidable"),http = require("http"),util = require("util");http.createServer(function(req, res) { if (req.url == '/upload' && req.method.toLowerCase() == "post") { //pase a file upload var form = new formiadable.IncomingForm(); //new 一个form对象 //解析post数据 form.parse(req, function(err, fields, files) { res.writeHead(200, {"content-type": "text/plain"}); res.write("received upload:\n\n"); //util.inspect 将json对象转化为字符串 res.end(util.inspect({fields: fields, files: files})); }); return; } //show a file upload form res.writeHead(200, {"content-type": "text/html"}); /*http相应html信息*/ res.end ( '<form action="/upload" enctype="multipart/form-data" method="post">' + '<input type="text" name="title"/></br>' + '<input type="file" name="upload" multiple="multiple"/></br>' + '<input type="submit" value="Upload"/>' + '</form>' )}).listen(3000, "127.0.0.1");console.log('Server running at http://127.0.0.1:3000/');
运行结果:
撒花~~读书笔记真不容易写(┬_┬)
- nodejs 4 npm
- npm & nodeJS
- nodejs & npm
- [Nodejs] npm
- 安装NodeJS & npm + npm常用命令
- 【NODEJS】nodejs之npm管理
- nodejs npm安装expressjs
- NodeJS npm 安装 express
- NPM--nodejs包管理
- NodeJs 常用npm框架
- nodejs中npm常用命令
- nodejs npm常用命令
- nodejs npm 常用命令
- nodejs npm常用命令
- nodejs npm常用命令
- nodejs npm常用命令
- nodejs npm常用命令
- nodejs npm常用命令
- 图形绘制
- GIT常用命令
- SecureCRT 回车按键值修改
- json数组和List集合转换总结
- 线程中sleep和wait有什么区别
- nodejs 4 npm
- 安卓屏幕的那些事
- css学习小汇总
- 虚拟机 网络模式简介 及桥接模式设置
- android app图标常用尺寸
- CHAR,VARCHAR,VARCHAR2,nvarchar,nvarchar2的用法和区别
- SpringMVC入门
- 搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(八) elasticsearch配置外网访问及常见错误处理
- spring 和struts整合过程遇到的一些错误