日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

学习NodeJS第一天:node.js引言

發(fā)布時(shí)間:2024/4/17 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习NodeJS第一天:node.js引言 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Node.JS 是資深 C 程序猿 Ryan Dahl(http://four.livejournal.com/)的作品,根據(jù) Google 著名的開(kāi)源 JavaScript 引擎 V8 來(lái)進(jìn)行二次開(kāi)發(fā)的 Web I/O server(http://nodejs.org/)。V8 本身是很快的 JavaScript 引擎,處理 JS 執(zhí)行執(zhí)行的速度很高。相關(guān)測(cè)試表明,FireFox、Opera 和 IE 的 JS 引擎速度都不及 V8 來(lái)得快。并且,還能夠說(shuō),僅僅要瀏覽器之間的 JS 引擎大戰(zhàn)一日不減,NodeJs 就能夠從中受益。有競(jìng)爭(zhēng)才有進(jìn)步:)。

NodeJS 基本使用方法也是十分簡(jiǎn)單明了的,我們看看一下這一句,就是最簡(jiǎn)單的代碼:
var sys = require('sys') ,http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.write('Hello World'); res.close(); }).listen(8006); sys.puts('Server running at http://127.0.0.1:8006/');

以上語(yǔ)句 var http = require('http');http.createServer(function (req, res) {…}); 就是創(chuàng)建一個(gè) HTTP server,偵聽(tīng)來(lái)自client的請(qǐng)求,匿名參數(shù)中的 req 和 res 分別代表請(qǐng)求對(duì)象和響應(yīng)對(duì)象。NodeJS 把邏輯語(yǔ)句寫(xiě)在一個(gè)函數(shù)中,說(shuō)明創(chuàng)建server createServer() 連這一步驟都是異步的!并且除此之外,req 也有相關(guān)的異步操作:
http.createServer(function (req, res) { req.addListener("end",function(){ sys.puts("request end"); }); res.writeHead(200, {'Content-Type': 'text/plain'}); res.write('Hello World'); res.close(); }).listen(8006);

這樣就對(duì)請(qǐng)求 req 登記了 end 的事件。在請(qǐng)求結(jié)束時(shí)通過(guò) sys.puts 方法添�"request end"。在使用事件的過(guò)程中,實(shí)質(zhì)也算是一個(gè)異步過(guò)程,非同步的。


從宏觀層面看以上的演示,上面不過(guò)一個(gè)比較底層的操作,都是低層次的控制,不足以提供很多其它 High Level 邏輯。要增強(qiáng) NodeJS 這個(gè)平臺(tái)功能,我們能夠使用其它環(huán)繞 NodeJS 而開(kāi)發(fā)模塊,甚至是一個(gè)初具規(guī)模的“框架”,——當(dāng)中一個(gè)就是 Express(http://github.com/visionmedia/express)。安裝 Express 的前提是安裝還有一個(gè)依賴包:Kiwi(http://github.com/visionmedia/kiwi),然后鍵入kiwi -v install express 才干夠正式安裝 Express。安裝好 Express 之后,立馬輸入以下代碼測(cè)試一下:
var sys = require("sys"), kiwi = require("kiwi"), express = kiwi.require('express'); get('/', function(){ this.redirect('/hello/world') }); get('/hello/world', function(){ return 'Hello World' }); get('/goodbye/world', function(){ return 'Goodbye World' }); run();
Express 執(zhí)行的 URL 和port是 http://localhost:3000,默認(rèn)請(qǐng)求的規(guī)則都會(huì)被轉(zhuǎn)移到 /hello/world 文件夾,返回 'Hello World' 的字符串。訪問(wèn) /goodbye/world 文件夾就返回 'Goodbye World'。Express 之所以被稱為一個(gè)“框架”,應(yīng)該還有其它的功能在內(nèi),比如請(qǐng)求路由、渲染視圖的其它高級(jí)功能。

Webserver的事件編程其意義
我們知道而且十分清楚,JavaScript 是單線程的(就當(dāng)前流行的 js v1.5而言),怎么避免 I/O 通道上的堵塞(block)呢?——基于事件驅(qū)動(dòng)(Event-based)的編程或者或者是一種可行之道,為不少后臺(tái)程序解決線程/堵塞之用。自從 Viusal Basic 流行起,基于事件驅(qū)動(dòng)的編程模型在GUI之上早已為我們所熟悉,存在非常長(zhǎng)的一段時(shí)間了。若說(shuō)上早期的開(kāi)發(fā),那時(shí)我們常常的一個(gè)做法,就是在main()方法寫(xiě)一個(gè)無(wú)限循環(huán)(while(true) loop),從而獲得控制不論什么時(shí)刻程序的能力,亦算是一種樸素的“事件”模型。我們清楚,JavaScript天然是Function First Level的,對(duì)一個(gè)函數(shù)還能夠送入一個(gè)函數(shù)的參數(shù)(即傳入一個(gè)閉包c(diǎn)losure),換言之,JS天生與事件驅(qū)動(dòng)的編程是不謀而合,相得益彰的。鑒于此,Node.js的事件編程理念的確是一個(gè)亮點(diǎn)。

另外一點(diǎn),高并發(fā)的 Web server一直乃久經(jīng)不衰的熱點(diǎn)和話題,或許有非常多的解決方式,性能達(dá)到一定的指標(biāo)也沒(méi)有問(wèn)題,只是問(wèn)題是,因而,在保證并滿足性能達(dá)標(biāo)的前提下,卻非常少見(jiàn)一個(gè)自然、適合編寫(xiě)業(yè)務(wù)邏輯的開(kāi)發(fā)平臺(tái),以 JavaScript 為開(kāi)發(fā)語(yǔ)言的 NodeJS 正好符合這一需求,一種符合大多數(shù)人需求的 DSL(預(yù)計(jì) js 玩家數(shù)量可觀得能夠……)。比如,一個(gè)簡(jiǎn)單的計(jì)數(shù)器設(shè)計(jì),我登錄某個(gè) url,就觸發(fā)一個(gè)計(jì)數(shù)器的事件,十分自然。當(dāng)然,更重要的是,還是 JS 的語(yǔ)言特征,即 Function、閉包、相似的 C 語(yǔ)法、精煉與簡(jiǎn)潔的風(fēng)格等等,尤其 Function,簡(jiǎn)直為事件模型而生,輕松吻合 node.js 異步機(jī)制的理念,才是真正吸引玩家去樂(lè)此不疲的原因。


雖然 NodeJS 如今還很的年輕,也沒(méi)有久經(jīng)世故,只是值得可喜的是,如今涌現(xiàn)了一大批環(huán)繞 NodeJS 的插件、增強(qiáng)包,有的是鏈接數(shù)據(jù)庫(kù),有的是用于 logging、Template模板、單元測(cè)試,有的還是服務(wù)于長(zhǎng)鏈接下(long polling)輪詢的……等等。我們能夠參見(jiàn) NodeJS 詳細(xì)的模塊列表,在http://wiki.github.com/ry/node/modules。

?

分享一個(gè) Node.js 的專題站點(diǎn),適合剛開(kāi)始學(xué)習(xí)的人:

http://howtonode.org/

nodejs與websocket的資源:

http://blog.new-bamboo.co.uk/2009/12/7/real-time-online-activity-monitor-example-with-node-js-and-websocket

http://blog.johngoulah.com/2010/03/nodejs-websockets-and-the-twitter-gardenhose/http://blog.andregoncalves.com/2009/12/29/Nodejs-twitter-streaming-with-html5-websockets.html

寫(xiě)node.js的插件(C++)

https://www.cloudkick.com/blog/2010/aug/23/writing-nodejs-native-extensions/

在win平臺(tái)上跑node.js,借助虛擬機(jī):

http://www.lazycoder.com/weblog/2010/03/18/getting-started-with-node-js-on-windows/

在win直接執(zhí)行的可執(zhí)行文件(已編譯):

http://www.grati.org/?page_id=213 不錯(cuò)的node.js中文資源

轉(zhuǎn)載于:https://www.cnblogs.com/hrhguanli/p/4002447.html

與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的学习NodeJS第一天:node.js引言的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。