zoukankan      html  css  js  c++  java
  • node.js 高级功能

    一、Web 模块

      1、http 请求(client.js)

    var http = require('http');
     
    // 用于请求的选项
    var options = {
       host: 'localhost',
       port: '8080',
       path: '/index.html'  
    };
     
    // 处理响应的回调函数
    var callback = function(response){
       // 不断更新数据
       var body = '';
       response.on('data', function(data) {
          body += data;
       });
       
       response.on('end', function() {
          // 数据接收完成
          console.log(body);
       });
    }
    // 向服务端发送请求
    var req = http.request(options, callback);
    req.end();

      2、Http 响应(server.js)

    var http = require('http');
    var url = require('url');
     
    // 创建服务器
    http.createServer( function (request, response) {  
       // 解析请求,包括文件名
       var pathname = url.parse(request.url).pathname;
       
       // 输出请求的文件名
       console.log("Request for " + pathname + " received.");
       
       // 响应内容
       response.writeHead(200, {'Content-Type': 'text/html'});
       response.write(‘Hello Boy!’);
       
       //  发送响应数据
       response.end();
    
    }).listen(8080);
     
    // 控制台会输出以下信息
    console.log('Server running at http://127.0.0.1:8080/');

      3、Express框架,用于简化http请求和响应

        安装

    cnpm install express --save

        简单使用

    var express = require('express');
    var app = express();
     
    app.get('/', function (req, res) {
       res.send('Hello World');
    })
     
    var server = app.listen(8081, function () {
     
      var host = server.address().address
      var port = server.address().port
     
      console.log("应用实例,访问地址为 http://%s:%s", host, port)
     
    })

    二、文件模块

      简单使用

    var fs = require("fs");
    
    // 异步读取
    fs.readFile('input.txt', function (err, data) {
       if (err) {
           return console.error(err);
       }
       console.log("异步读取: " + data.toString());
    });
    
    // 同步读取
    var data = fs.readFileSync('input.txt');
    console.log("同步读取: " + data.toString());

    三、多进程

      node.js 以单线程模式运行,但使用事件驱动来处理并发,子进程通过标准输出流返回处理结果,从而实现进程通信, 简单使用如下

      support.js 文件代码:

    console.log("进程 " + process.argv[2] + " 执行。" );

      master.js 文件代码:

    const fs = require('fs');
    const child_process = require('child_process');
    
    for(var i=0; i<3; i++) {
       var workerProcess = child_process.exec('node support.js '+i,
          function (error, stdout, stderr) {
             if (error) {
                console.log(error.stack);
                console.log('Error code: '+error.code);
                console.log('Signal received: '+error.signal);
             }
             console.log('stdout: ' + stdout);
             console.log('stderr: ' + stderr);
          });
    
          workerProcess.on('exit', function (code) {
          console.log('子进程已退出,退出码 '+code);
       });
    }

    四、连接MySQL

      安装驱动

    cnpm install mysql

      简单使用

    var mysql  = require('mysql');  
     
    var connection = mysql.createConnection({     
      host     : '10.102.16.64',       
      user     : 'sa',              
      password : 'abcd1234',       
      port: '3306',                   
      database: 'wind_wfcmisc_db', 
    }); 
     
    connection.connect();
     
    var  sql = 'SELECT * FROM  tb_customermanage_risk_type';
    connection.query(sql,function (err, result) {
            if(err){
              console.log('[SELECT ERROR] - ',err.message);
              return;
            }
     
           console.log('--------------------------SELECT----------------------------');
           console.log(result);
           console.log('------------------------------------------------------------
    
    ');  
    });
     
    connection.end();

    参考:菜鸟教程

  • 相关阅读:
    select_tag in rails about selected not change and onchange()
    debian7 请把标有“Debian GNU/Linux 7.1.0 _Wheezy_
    rails关于utf8问题-------------------utf8申明必须置顶
    ruby 删除文件
    svn conflict
    40亿个有序不同的数的文件中找一个缺失的数
    马云语录
    语音识别概率问题,一段在数学之美了看到的话
    两个有序数组的中位数
    磁盘文件排序-编程珠玑
  • 原文地址:https://www.cnblogs.com/MattCheng/p/8527381.html
Copyright © 2011-2022 走看看