初探nodeJS
一、node概要
對(duì)nodeJS早有耳聞,但是一直遲遲沒有對(duì)它下手,哈哈哈,今兒咱就來初探一下它。
nodeJS是個(gè)啥東東?
nodeJS,我的理解就是可以運(yùn)行在后端的JavaScript。
為什么它能夠在后端運(yùn)行呢?
這就得歸功于V8引擎(V8是Google Chrome瀏覽器的JavaScript引擎),通過對(duì)高性能V8引擎的封裝,并通過一系列優(yōu)化的API類庫(kù),使其就能夠在后端運(yùn)行了。
并且node有兩大特點(diǎn):
1、基于事件驅(qū)動(dòng);
2、無阻塞。
從而nodeJS非常適合處理并發(fā)請(qǐng)求。
大家都知道nodeJS其本質(zhì)就是JavaScript,so基于事件驅(qū)動(dòng)不難理解,但是無阻塞呢?
JavaScript是單線程,所以要做到無阻塞,node是通過大量的回調(diào)函數(shù)來達(dá)到這一目的。
好了,廢話不多說了。接下來咱們就開始初步體驗(yàn)它。
二、Install node&npm
因?yàn)閚odeJS是后端運(yùn)行的JavaScript嘛,so得有個(gè)運(yùn)行環(huán)境啊。不過安裝nodeJS的環(huán)境比較簡(jiǎn)單,具體步驟見下:
1、首先到官網(wǎng)下載nodeJS安裝包。
在官網(wǎng)中,也能看見官方對(duì)nodeJS的一個(gè)描述:
Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine.Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js' package ecosystem, npm , is the largest ecosystem of open source libraries in the world.
2、在下載完安裝包后,在windows下按照默認(rèn)程序走就歐克啦。
3、檢驗(yàn)是否安裝成功,在Windows環(huán)境下,打開命令提示符,輸入node – v,如果正常就會(huì)出現(xiàn)版本號(hào)的輸出。
如下:
在官方介紹中,不是說到npm(Node.js' package ecosystem, npm , is the largest ecosystem of open source libraries in the world.)嘛,其實(shí)npm在你安裝nodeJS時(shí),就一帶幫你安裝了。
不信,咱就在命令提示符中輸入npm –v看看。
如下:
好了,node開發(fā)環(huán)境就這么完美的‘搭建'好了,哈哈,是不是很簡(jiǎn)單。
接下來,我們就開始敲打第一個(gè)node程序吧。
三、Get started
一切從"hello world"開始,畢竟我們都是有情懷的人。
簡(jiǎn)單的嘛,我們就在命令提示符下,敲打我們的程序,你只需輸入node,然后回車就可以進(jìn)入node在命令提示符下的交互環(huán)境了。
如下:
進(jìn)入node交互環(huán)境后,敲到"hello world"字符串后回車。
結(jié)果如下:
倘若我們想退出node的這個(gè)交互環(huán)境,就Ctrl + C,連按兩次就退出回到windows命令符啦。
如下:
如果要在node的這個(gè)交互環(huán)境下編程的話,太大費(fèi)周章了,所以,我們可以引入js文件來執(zhí)行,例如下面這樣。
前提:你得有一個(gè)js文件。
我將這個(gè)js(helloWorld.js)文件放在D盤的,so運(yùn)行結(jié)果如下:
'use strict' console.log('Hello world');
哈,有點(diǎn)意思哈。
不是說nodeJS是運(yùn)行在后端的JavaScript嘛。接下來,我們就用nodeJS來開發(fā)一個(gè)最簡(jiǎn)單的服務(wù)器程序。
四、Node for server
前提:nodeJS是遵循CommonJS規(guī)范的。
即,
每個(gè).js文件都是一個(gè)模塊,模塊的好處就是避免命名空間污染。倘若你想讓一個(gè)模塊對(duì)外暴露變量,可以用module.exports = variable;
而一個(gè)模塊想要引用另一個(gè)模塊對(duì)外暴露的變量,用require關(guān)鍵字就可以了,如var ref = require(‘module_name');
好了,簡(jiǎn)單的知道了nodeJS的運(yùn)用規(guī)則,那么我們想要編寫一個(gè)http服務(wù)器,就得先引入這個(gè)模塊。
如下:
接下來就是調(diào)用引入的HTTP模塊的一個(gè)工廠模式方法(createServer)來創(chuàng)建一個(gè)新的http服務(wù)器。
如下:
由于nodeJS的特性之一是事件驅(qū)動(dòng),so當(dāng)我們?cè)L問一個(gè)http服務(wù)器時(shí),它會(huì)觸發(fā)一個(gè)request事件,我們利用其進(jìn)行相應(yīng)處理。
例如,我們的處理方式是,利用writeHead來設(shè)置HTTP的響應(yīng)頭和HTTP正文。
具體代碼如下:
最后,就是想監(jiān)聽的端口號(hào)咯。比如我們監(jiān)聽的是80端口。
代碼以及很完美了,但,為了方便在nodeJS交互環(huán)境下運(yùn)行該js文件后,知道服務(wù)器已經(jīng)啟好了,我們還是打印一條日志吧。
如下:
'use strict' //通過require將http庫(kù)包含到程序中 var http = require('http'); //創(chuàng)建新的HTTP服務(wù)器 var server = http.createServer(); //通過request事件來響應(yīng)request請(qǐng)求 server.on('request',function(req, res){ res.writeHead(200, {'Content-Type':'text/plain'}); res.end('Hell World\n'); }); server.listen('80'); console.log('Server running!'); EntireCode
好了,開啟nodeJS交互環(huán)境,運(yùn)行該js文件,我的命名是http.js。
so:
這樣http服務(wù)器就啟好了,接下來我們?cè)俅蜷_網(wǎng)頁(yè),輸入127.0.0.1:80,看看效果:
good!!有木有一點(diǎn)小小的激動(dòng),這樣就把http服務(wù)器啟好并運(yùn)行起來了。
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!
- 簡(jiǎn)單實(shí)現(xiàn)nodejs上傳功能
- 基于NodeJS+MongoDB+AngularJS+Bootstrap開發(fā)書店案例分析
- NodeJS實(shí)現(xiàn)客戶端js加密
- 詳解NodeJs支付寶移動(dòng)支付簽名及驗(yàn)簽
- nodeJS刪除文件方法示例
- 學(xué)習(xí) NodeJS 第八天:Socket 通訊實(shí)例
- nodejs連接mongodb數(shù)據(jù)庫(kù)實(shí)現(xiàn)增刪改查
- Nodejs 搭建簡(jiǎn)單的Web服務(wù)器詳解及實(shí)例
- window通過vbs+bat實(shí)現(xiàn)自動(dòng)在后臺(tái)運(yùn)行nodejs application
- NodeJS和BootStrap分頁(yè)效果的實(shí)現(xiàn)代碼
- NodeJS使用formidable實(shí)現(xiàn)文件上傳
- nodejs簡(jiǎn)單實(shí)現(xiàn)操作arduino
相關(guān)文章
node.js實(shí)現(xiàn)簡(jiǎn)單的壓縮/解壓縮功能示例
這篇文章主要介紹了node.js實(shí)現(xiàn)簡(jiǎn)單的壓縮/解壓縮功能,結(jié)合實(shí)例形式分析了node.js實(shí)現(xiàn)本地文件與服務(wù)器端壓縮/解壓縮相關(guān)操作技巧,需要的朋友可以參考下2019-11-11Node.js事件循環(huán)(Event Loop)和線程池詳解
這篇文章主要介紹了Node.js事件循環(huán)(Event Loop)和線程池詳解,這篇文章比較淺顯地探討了有關(guān)事件循環(huán)的內(nèi)部運(yùn)作機(jī)制和技術(shù)細(xì)節(jié),都是經(jīng)過深思熟慮的,需要的朋友可以參考下2015-01-01connect中間件session、cookie的使用方法分享
今天大象哥用了下connect的session和cookie,感覺還挺好用的,分享一下(里面坑挺多的,文檔寫的太模糊了,費(fèi)了哥不少時(shí)間)。2014-06-06NodeJs環(huán)境中NODE_ENV介紹和設(shè)置方法
這篇文章主要給大家介紹了關(guān)于NodeJs環(huán)境中NODE_ENV介紹和設(shè)置的相關(guān)資料,NODE_ENV其實(shí)就是環(huán)境變量之一,用于設(shè)置nodejs當(dāng)前的運(yùn)行環(huán)境,需要的朋友可以參考下2024-07-07詳解從買域名到使用pm2部署node.js項(xiàng)目全過程
本篇文章主要介紹了詳解從買域名到使用pm2部署node.js項(xiàng)目全過程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-03-03nodejs+axios爬取html出現(xiàn)中文亂碼并解決示例
這篇文章主要為大家介紹了nodejs+axios爬取html出現(xiàn)中文亂碼示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06node連接kafka2.0實(shí)現(xiàn)方法示例
這篇文章主要介紹了node連接kafka2.0,nodejs連接kafka2.0的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了kafka2.0的功能、原理、以及node.js連接kafka2.0的具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2023-05-05Node.js數(shù)據(jù)流Stream之Readable流和Writable流用法
這篇文章介紹了Node.js數(shù)據(jù)流Stream之Readable流和Writable流的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07