zoukankan      html  css  js  c++  java
  • crossplatform---Nodejs in Visual Studio Code 02.学习Nodejs

    1.开始

    源码下载:https://github.com/sayar/NodeMVA

    在线视频:https://mva.microsoft.com/en-US/training-courses/using-node-js-with-visual-studio-code-13920

    2.事件驱动编程语言Nodejs

    阻塞与非阻塞(Blocking I/O and Non Blocking I/O)

    Blocking I/O

    1
    2
    3
    4
    var fs = require('fs');
     
    var contents = fs.readFileSync('package.json').toString();
    console.log(contents);

    Non Blocking I/O

    1
    2
    3
    4
    5
    var fs = require('fs');
     
    fs.readFile('package.json'function (err, buf) {
         console.log(buf.toString());
    });

    Nodejs与C#相反,readFileSync表示阻塞线程,而readFile不阻塞线程异步执行方法,调用完成后执行callback方法。

    注:在c#中同步方法一般为object.action,同步方法会阻塞线程等待耗时操作执行完成,异步方法为object.actionAsyc,异步方法经常有个异步事件可以注册待异步方法执行结束后调用。

    3.Hello World

    打开源码文件夹01_HelloWorld,包含两个文件app.js和package.json

    app.js

    1
    console.log('Hello world'); //在控制台中输出Hello World , 令人熟悉的console类

    package.json

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    {
      "name""_01_HelloWorld",
      "version""0.0.0",
      "description""Hello World",
      "main""app.js",
      "author": {
        "name""Rami Sayar",
        "email"""
      }
    }

    打开CMD执行命令node app可以看到执行结果Hello World。

    1
    2
    3
    cd 01_HelloWorld
    $ node app
    Hello World

      

    4.FileIO

    打开源码文件夹03_FILEIO

    app.js

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var fs = require('fs');
     
    //阻塞I/O toString 用起来很顺手,比学C#简单多了
    var contents = fs.readFileSync('package.json').toString();
    console.log(contents);
     
    //非阻塞I/O
    fs.readFile('package.json'function (err, buf) {
        console.log(buf.toString());
    });

      

    5.Streams

    打开源码文件夹06_Streams

    app.js

    1
    2
    3
    4
    5
    6
    var fs = require("fs");
     
    // Read File
    fs.createReadStream("package.json")
        // Write File
        .pipe(fs.createWriteStream("out-package.json"));

    6.HelloWorldHttp

    打开源码文件夹02_HelloWorldHttp

    app.js

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var http = require('http');
     
    //处理http请求,返回200ok hello world
    var server = http.createServer(function (request, response) {
        response.writeHead(200, { "Content-Type""text/plain" });
        response.end("Hello World ");
    });
     
    //侦听7000端口
    server.listen(7000);

    7.HelloWorldTCP

    打开源码文件夹05_HelloWorldTCP

    server.js

    1
    2
    3
    4
    5
    6
    7
    8
    9
    var net = require('net');
     
    // The handler argument is automatically set as a listener for the 'connection' event
    var server = net.createServer(function (socket) {
        console.log("Connection from " + socket.remoteAddress);
        socket.end("Hello World ");
    });
     
    server.listen(7000, "127.0.0.1");

    client.js

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    var net = require('net');
     
    var client = new net.Socket();
     
    client.connect(7000, "127.0.0.1");
     
    client.on('data'function (data) {
        console.log('Data: ' + data);
        client.destroy();
    });
     
    // Add a 'close' event handler for the client socket
    client.on('close'function () {
        console.log('Connection closed');
    });

    打开两个CMD窗口,这两个窗口将会互相通讯。

    1
    2
    cd 05_HelloWorldTCP
    $ node server

      

    1
    2
    cd 05_HelloWorldTCP
    $ node client

    8.Requests

    打开源码文件夹10_Requests

    app.js

    1
    2
    3
    4
    5
    var request = require("request");
      
    request("http://www.bing.com"function(error, response, body) {
      console.log(body);
    });

    http://www.cnblogs.com/mengkzhaoyun/p/5355186.html

  • 相关阅读:
    51nod贪心算法入门-----完美字符串
    HDU6030----矩阵快速幂
    O(n)求1~n的逆元
    (四)添加签到奖励功能
    (三)开始在OJ上添加签到功能
    (二)OJ的主要文件
    (一)在linux上ubuntu搭建hustOJ系统
    CF 148A Insomnia cure
    lower_bound和upper_bound
    C++ string的常用功能
  • 原文地址:https://www.cnblogs.com/auh2010006/p/5716977.html
Copyright © 2011-2022 走看看