码迷,mamicode.com
首页 > Web开发 > 详细

nodejs入门案例与参数接受

时间:2018-10-30 17:24:00      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:调用   驱动   支持   为什么   log   data   index   var   并发   

javaScript 前台语言 nodejs 语法基于js 后台 重点 模块的学习 express Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。 Node.js 的包管理器 npm,是全球最大的开源库生态系统。

后台那么多为什么还要node.js


1. 异步事件驱动

2. 非堵塞I/O
   CPU密集型(CPU-bound)
   IO密集型(I/O bound)

  性能出众

入门

入门案例一

console.log(‘asdfsd‘);

入门案例二

var oDate=new Date();

console.log(oDate.getFullYear());

入门案例三

var re=/\d+/g;

console.log("sdf343 34534ree r5345345g 345".match(re));

http模块介绍

http简介
 超文本传输协议  网络数据传输必须遵循的协议

监听

所谓的端口监听,是指主机网络进程接受到IP数据包后,察看其的目标端口是不是自己的端口号,如果是的话就接受该数据包进行处理。

案例一

const http=require(‘http‘);

var server=http.createServer(function (request, response){
  console.log(‘有人来了‘);
});

//监听——等着
//端口-数字
server.listen(8080);

案例二

请求与响应
request 请求  输入-请求的信息
response    响应  输出-输出的东西

const http=require(‘http‘);

var server=http.createServer(function (req, res){
  //console.log(‘有人来了‘);

  res.write("abc");
  res.end();
});

//监听——等着
//端口-数字
server.listen(8080);

//http://localhost:8080/

案例三

const http=require(‘http‘);

var server=http.createServer(function (req, res){
  switch(req.url){
    case ‘/1.html‘:
      res.write("111111");
      break;
    case ‘/2.html‘:
      res.write("2222");
      break;
    default:
      res.write(‘404‘);
      break;
  }

  res.end();
});

//监听——等着
//端口-数字
server.listen(8080);

//http://localhost:8080/

文件操作

阻塞读取文件

var fs = require("fs");

var data = fs.readFileSync(‘input.txt‘);

console.log(data.toString());
console.log("程序执行结束!");
node.js的文件操作是异步的

异步与同步介绍
request 请求  输入-请求的信息
response    响应  输出-输出的东西
Node.js 回调函数
Node.js 异步编程的直接体现就是回调。

异步编程依托于回调来实现

回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数。

例如,我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回。这样在执行代码时就没有阻塞或等待文件 I/O 操作。这就大大提高了 Node.js 的性能,可以处理大量的并发请求。

回调函数一般作为参数的最后一个参数出现:

http与fs整合

const http=require(‘http‘);
const fs=require(‘fs‘);

var server=http.createServer(function (req, res){
  //req.url=>‘/index.html‘
  //读取=>‘./www/index.html‘
  //  ‘./www‘+req.url
  var file_name=‘./www‘+req.url;

  fs.readFile(file_name, function (err, data){
    if(err){
      res.write(‘404‘);
    }else{
      res.write(data);
    }
    res.end();
  });
});

server.listen(8081);

node.js接受前台参数

手动自己接受

const http=require(‘http‘);

http.createServer(function (req, res){
  var GET={};

  if(req.url.indexOf(‘?‘)!=-1){
    var arr=req.url.split(‘?‘);
    //arr[0]=>地址  ‘/aaa‘
    var url=arr[0];
    //arr[1]=>数据  ‘user=blue&pass=123456‘

    var arr2=arr[1].split(‘&‘);
    //arr2=>[‘user=blue‘, ‘pass=123456‘]

    for(var i=0;i<arr2.length;i++){
      var arr3=arr2[i].split(‘=‘);
      //arr3[0]=>名字   ‘user‘
      //arr3[1]=>数据   ‘blue‘
      GET[arr3[0]]=arr3[1];
    }
  }else{
    var url=req.url;
  }

  console.log(url, GET);

  //req获取前台请求数据
  res.write(‘aaa‘);
  res.end();
}).listen(8080);

通过queryStirng模块接受

queryStirng演示
const querystring=require(‘querystring‘);

var json=querystring.parse("user=blue&pass=123456&age=18");
console.log(json);
const http=require(‘http‘);
const querystring=require(‘querystring‘);

http.createServer(function (req, res){
  var GET={};

  if(req.url.indexOf(‘?‘)!=-1){
    var arr=req.url.split(‘?‘);
    var url=arr[0];

    GET=querystring.parse(arr[1]);
  }else{
    var url=req.url;
  }

  console.log(url, GET);

  //req获取前台请求数据
  res.write(‘aaa‘);
  res.end();
}).listen(8080);

通过url模块接受

url案例

const urlLib=require(‘url‘);

var obj=urlLib.parse("http://www.zhinengshe.com/index?a=12&b=5", true);

console.log(obj.pathname, obj.query);
const http=require(‘http‘);
const urlLib=require(‘url‘);

http.createServer(function (req, res){

给true就自动将query部分转成json
  var obj=urlLib.parse(req.url, true);

  var url=obj.pathname;
  var GET=obj.query;

  console.log(url, GET);

  //req获取前台请求数据
  res.write(‘aaa‘);
  res.end();
}).listen(8081);

post参数的接受

const http=require(‘http‘);
const querystring=require(‘querystring‘);

http.createServer(function (req, res){
  //POST——req

  var str=‘‘;   //接收数据

  //data——有一段数据到达(很多次)
  var i=0;
  req.on(‘data‘, function (data){
    console.log(`第${i++}次收到数据`);
    str+=data;
  });
  //end——数据全部到达(一次)
  req.on(‘end‘, function (){
    var POST=querystring.parse(str);
    console.log(POST);
  });
}).listen(8080);

post与readFile整合

const http=require(‘http‘);
const fs=require(‘fs‘);
const querystring=require(‘querystring‘);
const urlLib=require(‘url‘);

var server=http.createServer(function (req, res){
  //GET
  var obj=urlLib.parse(req.url, true);

  var url=obj.pathname;
  const GET=obj.query;

  //POST
  var str=‘‘;
  req.on(‘data‘, function (data){
    str+=data;
  });
  req.on(‘end‘, function (){
    const POST=querystring.parse(str);

    /*
    url——要什么
    GET——get数据
    POST——post数据
    */

    //文件请求
    var file_name=‘./www‘+url;
    fs.readFile(file_name, function (err, data){
      if(err){
        res.write(‘404‘);
      }else{
        res.write(data);
      }
      res.end();
    });
  });
});

server.listen(8081);

nodejs入门案例与参数接受

标签:调用   驱动   支持   为什么   log   data   index   var   并发   

原文地址:http://blog.51cto.com/13477015/2310579

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!