博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
crossplatform---Nodejs in Visual Studio Code 02.学习Nodejs
阅读量:6047 次
发布时间:2019-06-20

本文共 2968 字,大约阅读时间需要 9 分钟。

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

你可能感兴趣的文章
[小白技巧]如何在Linux上检查MySQL数据表的存储引擎类型
查看>>
《Nmap渗透测试指南》—第9章9.7节审计VNC服务器
查看>>
Ubuntu 14.04中修复“update information is outdated”错误
查看>>
《R语言数据分析》——3.5 小结
查看>>
被埋没的SQL优化利器——Oracle SQL monitor
查看>>
Android App瘦身实战
查看>>
阿里云有个“怪”博士团队,竟用AI让1亿人吃上了热饭
查看>>
Kafka 消息监控 - Kafka Eagle
查看>>
Centos 7 service 命令的更改,systemctl命令简单实用实例
查看>>
数据透视 - 商场(如沃尔玛)选址应用
查看>>
shell脚本入门篇
查看>>
解决webapp 键盘不隐藏
查看>>
[LeetCode]--8. String to Integer (atoi)
查看>>
数据结构实践——计数的模式匹配
查看>>
【阿里云资讯】阿里云7岁了,你确定了解处女座的它么?
查看>>
递归函数(四):全函数与计算的可终止性
查看>>
正则表达式-深入理解
查看>>
对话阿里云AI 科学家闵万里:1984年人工智能低潮是否会重演?
查看>>
Intellij IDEA 添加jar包的三种方式
查看>>
十分钟入门RocketMQ
查看>>