Node.js 學習

回調函數處理併發。web

Sync 同步;併發

var data = fs.readFileSync('input.txt');
console.log(data.toString());函數


fs.readFile('input.txt', function (err, data) {
if (err) return console.error(err);
console.log(data.toString());
});ui

阻塞是按順序執行的,而非阻塞是不須要按順序的,
因此若是須要處理回調函數的參數,咱們就須要寫在回調函數內。this

事件驅動程序
Node.js 使用事件驅動模型,當web server接收到請求,就把它關閉而後進行處理,而後去服務下一個web請求。
當這個請求完成,它被放回處理隊列,當到達隊列開頭,這個結果被返回給用戶。
這個模型很是高效可擴展性很是強,由於webserver一直接受請求而不等待任何讀寫操做。
(這也被稱之爲非阻塞式IO或者事件驅動IO)server


emit 發出; 發射; 頒佈; 發表;對象


Node.js 提供了exports 和 require 兩個對象,其中 exports 是模塊公開的接口,
require 用於從外部獲取一個模塊的接口,即所獲取模塊的 exports 對象。接口


//main.js
var hello = require('./hello');
hello.world();隊列

//hello.js
exports.world = function() {
console.log('Hello World');
}事件

//hello.js
function Hello() {
var name;
this.setName = function(thyName) {
name = thyName;
};
this.sayHello = function() {
console.log('Hello ' + name);
};
};
module.exports = Hello;

這樣就能夠直接得到這個對象了:
//main.js
var Hello = require('./hello');
hello = new Hello();
hello.setName('BYVoid');
hello.sayHello();

 

//Node.js 函數
function say(word) {
console.log(word);
}

function execute(someFunction, value) {
someFunction(value);
}

execute(say, "Hello");

// the same
function execute(someFunction, value) {
someFunction(value);
}

execute(function(word){ console.log(word) }, "Hello");

咱們在 execute 接受第一個參數的地方直接定義了咱們準備傳遞給 execute 的函數。
用這種方式,咱們甚至不用給這個函數起名字,這也是爲何它被叫作匿名函數 。


var http = require("http");

http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}).listen(8888);

var http = require("http");

function onRequest(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}

http.createServer(onRequest).listen(8888);

相關文章
相關標籤/搜索