nodejs 4 npm

来源:互联网 发布:python的前景 编辑:程序博客网 时间:2024/06/08 16:42

npm和配置

Node Packaged Modules 简称NPM,是nodejs的包理器。


Express框架

express框架继承了web的http服务器的创建,静态文件管理,服务器的url请求处理,GET和POST请求分发,Session处理等功能。

  1. 全局安装express $ npm install -g express-generator (express-generator可以安装express框架的工程模板生成一个项目。)
  2. 进入任何目录执行$ express app

    image

    如图所示: 下载依赖: $ cd app && npm install

  3. 进入app文件夹,运行app.js启动项目 npm start

  4. 浏览器输入http://127.0.0.1:3000

    image


jade模板

jade是一款高性能、简洁易懂的模版引擎,jade是html的javascript实现。

安装jade:目录下执行$ npm install jade --save

  • app应用下的jade模板文件index.jade
extends layoutblock content  h1= title  p Welcome to #{title}
  1. extends layout 在index.jade页面加载layout.jade
  2. h1和p1分别表示html对应的<h1></h1><p></p>,其后的值是标签内的DOM元素
  3. #{title}是服务器Node.js传递的参数
  4. 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循环语法

    1. each:

      var items = ["one", "two", "thress"];each item in items  li = item
    2. for:

      for user in users  for role in users.roles    li = role

forever模块

  • 作用: 监控文件更改、自动重启等。

  • 使用方法:

    1. 命令行中使用
    2. 在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模块

  1. 作用: 将WebSocket协议应用到所有的浏览器。
  2. 应用实例: 在线联网游戏、实时聊天、实施股票查看、二维码扫描登陆等。
  3. 安装 $ npm install socket.io
  4. 实例项目:

    登录统计在线人数,服务端实时推送给客户端在线人数

    因为代码挺长的 这里就不复制粘贴了,详细代码请看代码仓库的代码。
    代码仓库(喜欢请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/');

运行结果:

image

image


撒花~~读书笔记真不容易写(┬_┬)

原创粉丝点击