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

crossplatform---Nodejs in Visual Studio Code 02.学习Nodejs的更多相关文章

  1. Nodejs in Visual Studio Code 02.学习Nodejs

    1.开始 源码下载:https://github.com/sayar/NodeMVA 在线视频:https://mva.microsoft.com/en-US/training-courses/usi ...

  2. Nodejs in Visual Studio Code 07.学习Oracle

    1.开始 Node.js:https://nodejs.org OracleDB: https://github.com/oracle/node-oracledb/blob/master/INSTAL ...

  3. Nodejs in Visual Studio Code 03.学习Express

    1.开始 下载源码:https://github.com/sayar/NodeMVA Express组件:npm install express -g(全局安装) 2.ExpressRest 打开目录 ...

  4. Nodejs in Visual Studio Code 14.IISNode与IIS7.x

    1.开始 部署IISNode环境请参考:Nodejs in Visual Studio Code 08.IIS 部署Nodejs程序请参考:Nodejs in Visual Studio Code 1 ...

  5. Nodejs in Visual Studio Code 11.前端工程优化

    1.开始 随着互联网技术的发展,企业应用里到处都是B/S设计,我有幸经历了很多项目有Asp.Net的,有Html/js的,有Silverlight的,有Flex的.很遗憾这些项目很少关注前端优化的问题 ...

  6. Nodejs in Visual Studio Code 10.IISNode

    1.开始 Nodejs in Visual Studio Code 08.IIS : http://www.cnblogs.com/mengkzhaoyun/p/5410185.html 参考此篇内容 ...

  7. Nodejs in Visual Studio Code 01.简单介绍Nodejs

    1.开始 作者自己:开发人员,Asp.Net , html / js , restful , memcached , oracle ,windows , iis 目标读者:供自己以后回顾 2.我看No ...

  8. Nodejs in Visual Studio Code 04.Swig模版

    1.开始 设置Node_Global:npm config set prefix "C:\Program Files\nodejs" Express组件:npm install e ...

  9. crossplatform---Nodejs in Visual Studio Code 07.学习Oracle

    1.开始 Node.js:https://nodejs.org OracleDB: https://github.com/oracle/node-oracledb/blob/master/INSTAL ...

随机推荐

  1. POJ2739_Sum of Consecutive Prime Numbers【筛法求素数】【枚举】

    Sum of Consecutive Prime Numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 19350 Ac ...

  2. angular风格指南

    原文 https://www.jianshu.com/p/1a0a0a74769a 大纲 综述 1.单一职责 2.命名 3.LIFT-D应用程序结构 4.组件 综述 以下说的准则是根据angular官 ...

  3. SelectionKey API 用法

    java.nio.channels 类 SelectionKey java.lang.Object java.nio.channels.SelectionKey 直接已知子类: AbstractSel ...

  4. 因权限引起的svn提交失败的错误及其解决办法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 前段时间,一个网友发邮件向我请教一个svn提交失败的错误.他的具体错误是这样的: 在配置svn强制输入日志时候遇到一个 ...

  5. event.relatedTarget、event.fromElement、event.toElement

    在标准DOM中,mouseover和mouseout所发生的元素可以通过event.target来访问,相关元素通过event.relatedTarget属性来访问.event.relatedTarg ...

  6. adobe-flash-player离线下载方法

    https://www.neowin.net/news/adobe-flash-player-3000134 http://fpdownload.adobe.com/get/flashplayer/p ...

  7. 使用Kotlin开发Android

    查看我的所有开源项目[开源实验室] 欢迎增加我的QQ群:[201055521],本博客client源代码下载[请点击] 摘要 我首先声明我并没有使用Kotlin非常长时间,我差点儿是在学习的同一时候写 ...

  8. Gibbs 采样的应用

    Gibbs 采样的最大作用在于使得对高维连续概率分布的抽样由复杂变得简单. 可能的应用: 计算高维连续概率分布函数的数学期望, Gibbs 采样得到 n 个值,再取均值: 比如用于 RBM:

  9. MySQL复制格式小结

    基于语句级的复制 binlog=statement   优点: (1)binlog文件较小. (2)日志是包含用户执行的原始SQL,方便统计和审计. (3)出现最早可binlog.兼容较好. (4)b ...

  10. WPF Opacity 最小值多少会被击穿

    粗略测试 这样也行.再小不懂咯(跟Double精度有关???) <WrapPanel.Background> <SolidColorBrush x:Name="opacit ...