NodeJS學(xué)習(xí)——開篇

前言:自從下決心轉(zhuǎn)學(xué)前端以來氧猬,我的專業(yè)課java基本荒廢了,所以對(duì)于后臺(tái)開發(fā)的邏輯也已基本忘干凈了坏瘩。但是作為一名準(zhǔn)前端程序猿,我認(rèn)為還是有必要了解后端開發(fā)的漠魏,雖不必深入學(xué)習(xí)倔矾,但是能夠了解項(xiàng)目從前端到后端的整個(gè)流程,實(shí)現(xiàn)簡(jiǎn)單的業(yè)務(wù)邏輯(增刪改查)應(yīng)該對(duì)我們大有裨益柱锹。NodeJS應(yīng)該說是前端開發(fā)人員涉及后端開發(fā)的最佳選擇哪自,因?yàn)槭褂玫氖乔岸撕苁煜さ腏avascript語言。

一禁熏、什么是Node.js

Node.js是一個(gè)基于V8引擎的服務(wù)器端Javascript運(yùn)行環(huán)境壤巷。Javascript(簡(jiǎn)稱JS,下同)從此有了開發(fā)后段應(yīng)用程序的能力瞧毙。

因?yàn)槭褂玫氖荍S語言胧华,所以一發(fā)布以來就受到了廣大前端開發(fā)人員的喜愛。很多前端開發(fā)人員開始涉足后端開發(fā)宙彪,使用Node.js重構(gòu)前端工具矩动。

Node.js通過非阻塞I/O流、事件驅(qū)動(dòng)機(jī)制展現(xiàn)了它超強(qiáng)的高并發(fā)能力释漆。此外悲没,Node使用的是高性能的V8引擎,提供了很多不同用途的API,采用全新的編譯技術(shù)男图,實(shí)現(xiàn)了一個(gè)高性能的服務(wù)器示姿。

二甜橱、Node.js環(huán)境安裝

Node.js的環(huán)境安裝十分簡(jiǎn)單,去官網(wǎng) http://nodejs.org/en/ 下載穩(wěn)定版本安裝包栈戳,點(diǎn)擊下一步下一步安裝即可岂傲。

完成以后可以打開CMD輸入node -v查看是否安裝成功:

C:\Users\dawei>node -v
v6.11.1

出現(xiàn)node的版本號(hào)則表示安裝成功。

現(xiàn)在我們就開始學(xué)習(xí)Nodejs荧琼。Node.js中譬胎,將很多功能劃分為一個(gè)個(gè)module(模塊)。Node.js中的很多功能都是通過模塊來實(shí)現(xiàn)的命锄。

三堰乔、http模塊

HTTP模塊用于創(chuàng)建服務(wù)器,接收和響應(yīng)客戶端的請(qǐng)求脐恩。

//1镐侯、引入http模塊
var http = require('http');

//創(chuàng)建服務(wù)器
var server = http.createServer(function (req , res) {
    //發(fā)送HTTP頭部
    //HTTP狀態(tài)碼:200:OK
    //設(shè)置HTTP頭部,狀態(tài)碼是200驶冒,文件類型是html苟翻,字符集是utf-8
    res.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"});
    
    //發(fā)送相應(yīng)數(shù)據(jù)
    res.write("Hello Node.js");
    
    //結(jié)束處理程序,返回?cái)?shù)據(jù)
    res.end();
});

server.listen(8080);      //監(jiān)聽端口

//在終端打印如下信息骗污,提示服務(wù)器已啟動(dòng)
console.log("Server running at http://127.0.0.1:8080/");  

這樣我們就完整的創(chuàng)建了一個(gè)web服務(wù)器崇猫,可以在瀏覽器通過http://127.0.0.1:8080訪問該服務(wù)器。

回調(diào)函數(shù)中的req對(duì)象包含了客戶端請(qǐng)求的信息需忿,可以使用req.url屬性拿到用戶請(qǐng)求的URL地址诅炉,在后期我們就是要通過不同的URL來設(shè)計(jì)不同的路由。那么識(shí)別這個(gè)URL屋厘,就用到了URL模塊涕烧。

四、URL模塊

URL模塊提供了幾個(gè)方法用于操作url汗洒。

  • url.parse(req.url):解析url议纯,將url地址轉(zhuǎn)為url對(duì)象
  • url.format():將url對(duì)象轉(zhuǎn)為url字符串,是parse方法的逆向操作
  • url.resolve(from,to) :添加或者替換路由

1溢谤、url.parse()

假設(shè)在上面的代碼段中引入了url模塊

url.parse(req.url)

那么將會(huì)打印如下內(nèi)容
{
  protocol: null,
  slashes: null,
  auth: null,
  host: null,
  port: null,
  hostname: null,
  hash: null,
  search: null,
  query: null,
  pathname: '/',
  path: '/',
  href: '/' }
  

由于我們只是訪問了根路徑瞻凤,所以內(nèi)容基本為空,很多情況下我們需要訪問詳細(xì)的頁面并且傳遞參數(shù)
http://127.0.0.1:8080/login.html?uaername=dawei&pass=123

{
  protocol: null,
  slashes: null,
  auth: null,
  host: null,
  port: null,
  hostname: null,
  hash: null,
  search: '?uaername=dawei&pass=123',
  query: 'username=dawei&pass=123',
  pathname: '/login.html',
  path: '/login.html?uaername=dawei&pass=123',
  href: '/login.html?uaername=dawei&pass=123' }

可以看到溯香,這個(gè)對(duì)象的query屬性保存了我們的參數(shù)鲫构,也叫做查詢字符串。pathname屬性中保存了我們的訪問路徑玫坛。這兩個(gè)屬性很常用结笨。

我們往往需要獲取參數(shù)信息,在服務(wù)器端做進(jìn)一步處理。在JS中我們可以使用字符串截取來獲取參數(shù)炕吸,不過再這里我們可以直接給parse方法傳遞一個(gè)參數(shù)true來將查詢字符串轉(zhuǎn)為對(duì)象格式伐憾,從而很方便的獲取。

url.parse(req.url,true)

{
  protocol: null,
  slashes: null,
  auth: null,
  host: null,
  port: null,
  hostname: null,
  hash: null,
  search: '?username=dawei&pass=123',
  query: { username: 'dawei', pass: '123' },
  pathname: '/login.html',
  path: '/login.html?username=dawei&pass=123',
  href: '/login.html?username=dawei&pass=123' }

這樣我們就可以很方便的獲取參數(shù)的值赫模。

2树肃、url.resolve()

a、增加路由

var a = url.resolve('http://example.com/', '/one');
console.log(a);     //  http://example.com/one

b瀑罗、替換路由

var b = url.resolve('http://example.com/one', '/two');
console.log(b);        //   http://example.com/two
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末胸嘴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子斩祭,更是在濱河造成了極大的恐慌劣像,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件摧玫,死亡現(xiàn)場(chǎng)離奇詭異耳奕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)诬像,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門屋群,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人坏挠,你說我怎么就攤上這事芍躏。” “怎么了降狠?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵纸肉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我喊熟,道長(zhǎng),這世上最難降的妖魔是什么姐刁? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任芥牌,我火速辦了婚禮,結(jié)果婚禮上聂使,老公的妹妹穿的比我還像新娘壁拉。我一直安慰自己,他們只是感情好柏靶,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布弃理。 她就那樣靜靜地躺著,像睡著了一般屎蜓。 火紅的嫁衣襯著肌膚如雪痘昌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音辆苔,去河邊找鬼算灸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛驻啤,可吹牛的內(nèi)容都是我干的菲驴。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼骑冗,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼赊瞬!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起贼涩,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤巧涧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后磁携,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體褒侧,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年谊迄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了闷供。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡统诺,死狀恐怖歪脏,靈堂內(nèi)的尸體忽然破棺而出粮呢,到底是詐尸還是另有隱情婿失,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布啄寡,位于F島的核電站豪硅,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏挺物。R本人自食惡果不足惜懒浮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望识藤。 院中可真熱鬧砚著,春花似錦、人聲如沸痴昧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赶撰。三九已至舌镶,卻和暖如春柱彻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背乎折。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工绒疗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人骂澄。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓吓蘑,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親坟冲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子磨镶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)健提,斷路器琳猫,智...
    卡卡羅2017閱讀 134,601評(píng)論 18 139
  • Node.js是目前非常火熱的技術(shù)私痹,但是它的誕生經(jīng)歷卻很奇特脐嫂。 眾所周知,在Netscape設(shè)計(jì)出JavaScri...
    w_zhuan閱讀 3,609評(píng)論 2 41
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,528評(píng)論 25 707
  • 個(gè)人入門學(xué)習(xí)用筆記紊遵、不過多作為參考依據(jù)账千。如有錯(cuò)誤歡迎斧正 目錄 簡(jiǎn)書好像不支持錨點(diǎn)、復(fù)制搜索(反正也是寫給我自己看...
    kirito_song閱讀 2,451評(píng)論 1 37
  • 上一節(jié)說到,require(‘vue’) 最終返回的是require('vue/src/main.js')里面的m...
    Obeing閱讀 556評(píng)論 0 1