從前端到后端,龍哥講nodejs基礎(一)

當我不在迷惘


五年前盏檐,當我還是一個純粹的前端時歇式,我對于服務器和后端開發(fā)可以說是一竅不通。我只是感覺糯笙,給我的工作完成就行了—不是我該干的我也沒必要去研究贬丛。

但是很快我發(fā)現,當我需要更好的協(xié)作時给涕,又或者我想自己開發(fā)一個小型項目幾乎是不可能完成的豺憔。產品额获,設計,前端恭应,后端抄邀,測試。這不可避免的形成了一個模式昼榛,一個禁錮所有的人的思維定式境肾。

我開始想我最一開始學習編程的目的到底是什么,現在的我能做到嗎胆屿?或者當我離開這個行業(yè)的時候奥喻,我如何告訴我自己曾經的我究竟創(chuàng)造一些什么。

發(fā)現捷徑


如果你看過我其他的教程非迹,你應該能明白环鲤,編程語言中的php和java我都嘗試去學習過。但是我的最終感覺—那些編程語言并不適合前端轉型到后端的同學憎兽,此類笨重的語言甚至不適合去做快速的迭代開發(fā)冷离。

甚至高并發(fā)和異步操作,對于這些語言都是一個難以解決的問題纯命。那么西剥,有沒有這樣的一種開發(fā)語言,不但具備媲美php和java類的后端開發(fā)能力亿汞,又有著能解決高并發(fā)和全起步操作—只要把問題轉移到前端瞭空,那就是我的主場了。

直到我遇到了nodejs留夜。我覺得匙铡,我這一生的開發(fā)旅途是少不了它的陪伴了。

到底什么是nodejs


講node之前我們要先說一下引擎碍粥。
你可能會問鳖眼,這跟node有什么關系?我要告訴你的是嚼摩,引擎是最關鍵的東西钦讳,引擎就好比是,人的基因枕面。你并非是天生獨一無二愿卒,你的行為模式甚至你的長相都跟你的基因有關系。簡單來說潮秘,你的基因是什么琼开,你就像什么。

這也就是為什么nodejs這么受歡迎的原因枕荞,因為nodejs的引擎是chrome—v8柜候。所以nodejs所有語法基本上都跟es6的標準一模一樣搞动。然后其實你只需要理解什么是線程,什么是模塊渣刷,怎么處理http請求就行了鹦肿。這個東西對于前端開發(fā)來說可以說,天生就非常友好辅柴。對于后端人員來說——還是算了吧箩溃。那是一門完全不一樣的語言。

首先我要告訴你的是碌嘀,node可不是只能處理web端的服務涣旨。他在現今世界上大有可為。

今天我們將會從最基本的原理上了解node筏餐。

基于模塊


nodejs是一個包依賴的語法开泽。沒錯你沒有看錯牡拇,跟你之前用的vuecli是一模一樣的魁瞪。
vuecli通過webpack封裝了一套東西——webpack也是基于node的,只不過他的寫法換了換惠呼。

現在我們要使用最原生的node來開發(fā)导俘。

下面是一個啟動http服務的例子,你不用理解他具體怎么應用剔蹋。
咱們就看看他的語法旅薄,他先require了一個模塊,然后調用了一個方法泣崩。
是不是跟es6一模一樣少梁?

如果你熟悉這個寫法,那么node對于你來說幾乎毫無難度矫付。后面我們將會深入講解node原理和各種包應用凯沪。

var http = require('http');
http.createServer(function handler(req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

在nodejs中,幾乎所有操作都是基于模塊的买优,你加載哪個模塊妨马,就可以調用哪個模塊的方法。就這么帶勁杀赢。

非阻塞加載


接下在咱們講一個nodejs最牛逼的地方烘跺。
nodejs跟php,java或者python都不一樣的地方再于脂崔。他是個全異步非阻塞語言滤淳。
如果有人問你,node最優(yōu)秀的地方在哪砌左,你就可以這樣回答他脖咐。

因為它是全異步的伤柄,它天生就具備解決高并發(fā)的基因,而不需要像其他語言一樣需要某種解決方案文搂。要注意的是适刀,nodejs只有一個線程,卻可以像多線程一樣實現各種功能煤蹭,因為nodejs的底層有一個線性池笔喉,線性池的原理我們會在后面講到。

好的硝皂,我們來看一個阻塞和非阻塞的例子常挚。

阻塞寫法

const fs = require('fs');
const data = fs.readFileSync('/file.md'); // 在這里阻塞直到文件被讀取
console.log(data);
moreWork(); // 在console.log之后執(zhí)行

非阻塞寫法

const fs = require('fs');
fs.readFile('/file.md', (err, data) => {
  if (err) throw err;
  console.log(data);
});
moreWork(); // 在console.log之前執(zhí)行

在nodejs中,你可以自由切換到底是阻塞還是非阻塞稽物。非阻塞的好處就是奄毡,如果你一個函數報錯了,但是后面的不受影響贝或,因為他們是并行執(zhí)行的吼过。
如果是阻塞,一旦第一個出問題了咪奖,后面你就不用想執(zhí)行了盗忱,全部都會卡死。

好了羊赵,今天就先講這么多了趟佃,后面我們將會慢慢的解開nodejs的神秘面紗,想提升自己的技術嗎昧捷,來跟龍哥一起努力吧闲昭!

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市靡挥,隨后出現的幾起案子序矩,更是在濱河造成了極大的恐慌,老刑警劉巖芹血,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贮泞,死亡現場離奇詭異,居然都是意外死亡幔烛,警方通過查閱死者的電腦和手機啃擦,發(fā)現死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來饿悬,“玉大人令蛉,你說我怎么就攤上這事。” “怎么了珠叔?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵蝎宇,是天一觀的道長。 經常有香客問我祷安,道長姥芥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任汇鞭,我火速辦了婚禮凉唐,結果婚禮上,老公的妹妹穿的比我還像新娘霍骄。我一直安慰自己台囱,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布读整。 她就那樣靜靜地躺著簿训,像睡著了一般。 火紅的嫁衣襯著肌膚如雪米间。 梳的紋絲不亂的頭發(fā)上强品,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音车伞,去河邊找鬼择懂。 笑死,一個胖子當著我的面吹牛另玖,可吹牛的內容都是我干的。 我是一名探鬼主播表伦,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谦去,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蹦哼?” 一聲冷哼從身側響起鳄哭,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎纲熏,沒想到半個月后妆丘,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡局劲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年勺拣,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鱼填。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡药有,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情愤惰,我是刑警寧澤苇经,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站宦言,受9級特大地震影響扇单,放射性物質發(fā)生泄漏。R本人自食惡果不足惜奠旺,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一令花、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧凉倚,春花似錦兼都、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至杏糙,卻和暖如春慎王,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宏侍。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工赖淤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谅河。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓咱旱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親绷耍。 傳聞我的和親對象是個殘疾皇子吐限,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內容