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\n" );
});
 
//侦听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\n" );
});
 
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

转载于:https://www.cnblogs.com/auh2010006/p/5716977.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值