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
var fs = require('fs'); var contents = fs.readFileSync('package.json').toString();
console.log(contents);
Non Blocking I/O
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
console.log('Hello world'); //在控制台中输出Hello World , 令人熟悉的console类
package.json
{
"name": "_01_HelloWorld",
"version": "0.0.0",
"description": "Hello World",
"main": "app.js",
"author": {
"name": "Rami Sayar",
"email": ""
}
}
打开CMD执行命令node app可以看到执行结果Hello World。
$ cd 01_HelloWorld
$ node app
Hello World
4.FileIO
打开源码文件夹03_FILEIO
app.js
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
var fs = require("fs"); // Read File
fs.createReadStream("package.json")
// Write File
.pipe(fs.createWriteStream("out-package.json"));
6.HelloWorldHttp
打开源码文件夹02_HelloWorldHttp
app.js
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
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
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窗口,这两个窗口将会互相通讯。
$ cd 05_HelloWorldTCP
$ node server
$ cd 05_HelloWorldTCP
$ node client
8.Requests
打开源码文件夹10_Requests
app.js
var request = require("request"); request("http://www.bing.com", function(error, response, body) {
console.log(body);
});
Nodejs in Visual Studio Code 02.学习Nodejs的更多相关文章
- crossplatform---Nodejs in Visual Studio Code 02.学习Nodejs
1.开始 源码下载:https://github.com/sayar/NodeMVA 在线视频:https://mva.microsoft.com/en-US/training-courses/usi ...
- Nodejs in Visual Studio Code 07.学习Oracle
1.开始 Node.js:https://nodejs.org OracleDB: https://github.com/oracle/node-oracledb/blob/master/INSTAL ...
- Nodejs in Visual Studio Code 03.学习Express
1.开始 下载源码:https://github.com/sayar/NodeMVA Express组件:npm install express -g(全局安装) 2.ExpressRest 打开目录 ...
- 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 ...
- Nodejs in Visual Studio Code 11.前端工程优化
1.开始 随着互联网技术的发展,企业应用里到处都是B/S设计,我有幸经历了很多项目有Asp.Net的,有Html/js的,有Silverlight的,有Flex的.很遗憾这些项目很少关注前端优化的问题 ...
- Nodejs in Visual Studio Code 10.IISNode
1.开始 Nodejs in Visual Studio Code 08.IIS : http://www.cnblogs.com/mengkzhaoyun/p/5410185.html 参考此篇内容 ...
- Nodejs in Visual Studio Code 01.简单介绍Nodejs
1.开始 作者自己:开发人员,Asp.Net , html / js , restful , memcached , oracle ,windows , iis 目标读者:供自己以后回顾 2.我看No ...
- Nodejs in Visual Studio Code 04.Swig模版
1.开始 设置Node_Global:npm config set prefix "C:\Program Files\nodejs" Express组件:npm install e ...
- crossplatform---Nodejs in Visual Studio Code 07.学习Oracle
1.开始 Node.js:https://nodejs.org OracleDB: https://github.com/oracle/node-oracledb/blob/master/INSTAL ...
随机推荐
- Eclipse混淆文件导入Android Studio Gradle编译报input jar file is specified twice
Eclipse项目中的混淆配置文件 复制到AS中 在混淆的过程中提示如下错误 Error:Execution failed for task ':app:proguardDemoRelease ...
- python小练习,打出1-100之间的所有偶数,设计一个函数,在桌面上创建10个文件,并以数字命名,复利计算函数
练习一:打出1-100之间的所有偶数 def even_print(): for i in range(1,101): if i % 2 == 0: print (i) even_print() #列 ...
- ubuntu wine卸载程序并删除图标
卸载ubuntu 下用wine安装的程序,可以用wine uninstaller命令,打开 添加/删除程序界面,进行删除程序操作:
- [Codeforces 501D] - Misha and Permutations Summation
题意是给你两个长度为$n$的排列,他们分别是$n$的第$a$个和第$b$个全排列.输出$n$的第$\left(a+b \right)\textrm{mod} \, n!$个全排列. 一种很容易的想法是 ...
- js 实现关键词球状旋转效果
效果图 html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...
- div 显示滚动条
overflow-x:auto 显示横向滚动条 overflow-y:hidden 隐藏纵向滚动条 引用此class,只显示横向的滚动条 .max{ margin:auto; overflow- ...
- 编写利用Fragment创建新闻列表
编写利用Fragment创建新闻列表 1.创建新闻实体类News,代码如下: public class News { private String title; private String co ...
- Android 开发笔记——对应用进行单元测试
在实际开发中,开发android软件的过程需要不断地进行测试.而使用Junit测试框架,是正规Android开发的必用技术, 在Junit中可以得到组件,可以模拟发送事件和检测程序处理的正确性. 第一 ...
- Android开发手记(20) 数据存储五 网络存储
Android为数据存储提供了五种方式: 1.SharedPreferences 2.文件存储 3.SQLite数据库 4.ContentProvider 5.网络存储 安卓的网络存储比较简单,因为A ...
- JNI type
ref: JNI type The mapping between the Java type and C type is: Type Signature Java Type Z boolean B ...