国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

為什么要讀Nodejs源碼?

開發 前端
前幾天有個同學和我說,他在看nodejs源碼,但是不知道為什么需要看,也不知道從中可以學到什么。所以今天想聊一下關于閱讀nodejs源碼的意義。閱讀其他源碼也類似。

[[381665]]

本文轉載自微信公眾號「編程雜技」,作者theanarkh。轉載本文請聯系編程雜技公眾號。   

前幾天有個同學和我說,他在看nodejs源碼,但是不知道為什么需要看,也不知道從中可以學到什么。所以今天想聊一下關于閱讀nodejs源碼的意義。閱讀其他源碼也類似。

首先,閱讀源碼的目的無非兩個

  • 1 深入了解和理解他或一些底層的原理
  • 2 從中學到一些優秀的設計思想和實踐。

如果你沒有兩個目的,那其實就沒有必要去看源碼了。那接下來聊一下從閱讀nodejs源碼中,可以得到什么。

首先我們要深刻理解到nodejs是什么?大家都知道nodejs是一個js的運行時。那么到底nodejs里面有什么呢?每一部分的意義是什么呢?首先nodejs的組成是libuv、v8、第三方庫。nodejs的定位首先是一個服務器,所以其實有libuv就可以了。那么剩余的組成部分有什么用?第三方庫的作用很明顯,就是復用了業界已有的解決方案去拓展了nodejs的一些功能,并不是nodejs的核心。v8的意義是因為nodejs選用了js這個語言,所以就需要一個js的引擎。否則v8也是不需要的,直接把libuv和第三方庫編譯成二進制就行,類似nginx,redis一樣。這個是高層的視圖。從底層來看,libuv是對操作系統功能的封裝,v8是一個js解釋器。那么看nodejs源碼的意義就很明顯了。nodejs的源碼從垂直分為以下三個部分

  • 1 js層
  • 2 c++層(使用v8橋接js和libuv和一些自定義的c++邏輯)
  • 3 c層

讀js層,你可以了解到nodejs實現的一些上層的邏輯,雖然js層最后還是依賴底層,但是js層也有很多邏輯,看懂了js層,在使用nodejs的時候,也就能更加深刻地了解到你在做什么,nodejs在做什么。但是js層是遠遠不夠的。因為他只是個殼子。

那么接下來,你就要去讀c++層,讀c++層的代碼,更多的是在了解如何去使用v8。假設你以后想在你的其他項目中單獨使用v8,那么nodejs的代碼就是一個參考。那么我們了解v8的使用有什么意義呢?這個問題相當于我們使用一個語言,然后了解他的編譯器/解釋器有什么意義。很多時候,我們都不需要這樣做,這完全取決于你的興趣。如果你以后想使用v8,或者你想了解js實現的底層原理,又或者你想了解一個編譯器/解釋器是如何實現的。那么你就可以去學習v8。v8首先作為一個js引擎,他里面有一個編譯器/解釋器的通用邏輯,詞法解析,語法解析,代碼生成,代碼優化等等。然后還包含了js語言本身的實現細節,比如一個js數組,一個js對象,在v8里是怎么實現的。最后,了解v8為我們暴露了什么接口,我們可以使用v8做什么。

最后就是讀libuv,nodejs的重點是作為服務器,所以相對來說,讀libuv的才是重點,我們都知道v8只是一個js引擎,他沒有網絡,dns、文件等能力。在前端,js的文件,網絡等能力來源于宿主瀏覽器。在nodejs,這些能力就來源于libuv。這是nodejs為什么叫nodejs,而不叫v8。因為他不只是v8。他還實現了自己的一些功能。所以你也可以實現自己的功能,加上v8的能力,創造出一個新的服務器。言歸正傳,那么讀libuv可以學到什么東西呢?libuv是實現服務器的核心。所以我們可以從libuv中學習到實現一個服務器用到的技術。從libuv官網中我們也可以知道,libuv包括了進程、線程、定時器、文件、tcp、udp、unix域、線程池、dns等等能力,使用到操作系統能力包括進程間通信(管道、unix域、eventfd)、線程池、事件驅動(epoll、select、poll、kqueue等)、inotify機制、文件操作等等,使用數據結構和算法有二叉堆、紅黑樹、隊列等。

總的來說,閱讀nodejs源碼最直接的是理解nodejs的工作原理和nodejs的本質。如果你是一個nodejs的開發者,這無疑是一個很好的收獲。其次,如果你有興趣,你還可以了解到編譯器,操作系統的知識。額外地,你也可以學習到nodejs中的一些設計思想,比如定時器的設計,從早期版本到后來的重構背景。又或者如果你來設計一個服務器,你怎么設計。

從理論上聊了一下閱讀nodejs源碼的一些看法,下面順便聊一下我自己的看法和體會。我閱讀nodejs源碼的原因是非常直接的,因為我希望我成為一個優秀的nodejs工程師。我對v8和libuv本身并沒有太大興趣。雖然我一直是一個前端工程師,但是我也不會去讀js引擎的源碼。至于libuv,相關的異步io庫非常多,而且說到服務器的設計,nginx、redis無疑是更值得讀的。但是成為一個優秀的nodejs工程師,深入了解和深刻理解nodejs本身是非常必要的。相對來說,nodejs是非常原生的。很多時候我們覺得讀nodejs源碼沒有意義是因為沒有深度或廣度地去使用nodejs,可能只是停留到框架層面,復制著業務的最佳實踐,成功地避開了一些坑。當你遇到一些難題,卻又難以解決,甚至業界也沒有解決方案的時候,你就會深刻理解到閱讀源碼的意義。當然,這種時候可能不會很多(比如https://cnodejs.org/topic/600b9de15d04ac76cf2181a7和https://cnodejs.org/topic/6018f1b103d797fb8e66e71c#6019f31903d7976d1066e9d2等)。

從開始讀nodejs源碼到現在,我覺得這是一段非常艱難、快樂、深刻的經歷。他讓我不僅更了解和理解nodejs,也在更高層面地提高了我。雖然我一直在推廣閱讀nodejs源碼、寫了很多文章、也和其他同學進行了很多交流。但是并不說明非讀源碼不可,個人覺得,讀源碼是一種好的習慣,也是讓你變得優秀的方式,但是因為讀哪些源碼,這個完全取決于個人的興趣和選擇。不要盲目地去讀,要帶有目的。對個人而言,我是非常感謝nodejs,也非常敬佩nodejs作者和貢獻者,但是我覺得我在閱讀nodejs源碼中,更多的是了解了nodejs的原理,并沒有學到太多我想學的東西,v8算一方面,而libuv的內容,我覺得看nginx和操作系統內核可能是更好的選擇,但是libuv相比來說可能更輕量,更快了解一個異步框架的設計。

這里順便提一下nodejs源碼分享的事情,有些同學希望我講得通俗一點,或者結合應用來講。這里說一下我做分享的一些想法。首先,我是一個在nodejs源碼中學習的人,而不是站在nodejs之上的人,這意味著我也在慢慢學習,并且因為時間關系,我沒有辦法像圖解系列,碼農翻身一樣講得那么好那么易懂。因為我的初衷其實是做個筆記,然后分享給有興趣的人,然后大家一起來做這個事情。我不是大家的老師,這也不是我的初衷和目的。我幾乎都是免費分享內容、免費答疑。但是卻很少碰到真正的志同道合者,大家還希望我講得通俗易懂這對我來說就未免太難了。我承認如何講好技術,做一個好的分享是一個值得學習的事情,但是我覺得這不是我現階段的目的。而且我覺得一個有上進心的程序員,自己多動一下手和大腦,這個要求并不過分。一人之力有限,希望大家明白。

最后,提前祝大家新年快樂!對nodejs感興趣的同學也可以找我一起交流學習!

責任編輯:武曉燕 來源: 編程雜技
相關推薦

2017-04-05 16:40:45

2015-08-06 10:14:15

造輪子facebook

2022-08-15 08:27:02

基站網絡

2013-03-12 14:30:09

Ubuntu操作系統

2019-11-27 10:25:15

SaaS云端IT架構

2017-09-08 08:35:16

Android代碼API設計

2014-08-25 10:00:18

開源

2019-01-14 07:28:56

大數據云計算互聯網

2019-03-19 08:59:13

物聯網IOT技術

2015-05-12 11:04:42

Java EE學習Java EE

2024-10-17 16:41:57

KafkaZooKeeper

2016-08-19 16:27:52

數據庫Mongo DB開發

2021-03-16 08:35:14

Kubernetes Docker容器

2009-12-17 15:18:47

2022-03-30 08:21:57

合并HTTP

2024-08-28 10:49:47

2022-11-28 09:58:58

C++開發

2018-05-23 00:20:29

2017-04-05 18:10:05

R語言開發Ross

2019-12-26 14:52:31

微軟CortanaAndroid
點贊
收藏

51CTO技術棧公眾號

亚洲美女在线看| 中文字幕第88页| 成人在线视频免费| 欧洲一区二区av| 日韩黄色视屏| 欧美美女直播网站| 九色视频网站在线观看| 香蕉精品视频在线观看| 日韩免费在线观看视频| 亚洲成人1区| 久久精品视频网| 国产成人精品一区二区三区福利| 亚洲精品看片| 国产精品夫妻激情| 91p九色成人| 国产精品视频自在线| 自拍视频在线免费观看| 欧美激情视频播放| а√中文在线天堂精品| 国产精品裸体一区二区三区| 成人性生活视频| 国产成人小视频在线观看| 天天躁日日躁狠狠躁欧美| 99久久精品免费看国产一区二区三区| 老牛嫩草一区二区三区日本| 久久精品国产精品青草色艺 | 亚洲羞羞网站| 亚洲成人黄色在线| 在线观看黄色小视频| 欧美激情18p| 国产一区日韩欧美| 色中色综合影院手机版在线观看| 成人vr资源| 97人人做人人人难人人做| 99伊人成综合| 免费黄视频网站| 国内精品第一页| 手机福利在线| 久久精品久久久久久| 日韩激情精品| 欧美一a一片一级一片| 日本三级视频在线观看| 精品久久久久久久久久久院品网| 欧美女同一区| 久久精品国产综合| 国产不卡一区| 久久国产精品一区二区三区四区| 精品一区二区三区的国产在线播放 | 国产不卡视频在线播放| 成人一区二区免费视频| 亚洲色图一区二区| 免费国产在线观看| 亚洲国产欧美日韩精品| 亚洲网一区二区三区| 国产日产亚洲精品| 丝袜亚洲另类欧美| 91视频最新入口| 亚洲aaa精品| 一区二区三欧美| 久久97久久97精品免视看秋霞| 91色琪琪电影亚洲精品久久| 免费在线观看成人| 999精品视频在线| 欧美色另类天堂2015| xx欧美xxx| 国产精品入口日韩视频大尺度| 国产精品视频| 久久国产乱子伦免费精品| 日韩欧美在线一区| 亚州精品国产| 国产成人精品日本亚洲11| 成人av在线播放网站| 日本在线视频1区| 在线播放日韩av| 中国精品18videos性欧美| 免费看国产曰批40分钟| 色中色一区二区| 欧美电影在线观看一区| 看欧美日韩国产| 夜夜嗨av一区二区三区四季av | 亚洲国产精品一区二区www| 日本h片在线观看| 欧美在线视频免费播放| 美女mm1313爽爽久久久蜜臀| 交视频在线观看国产| 精品亚洲一区二区三区在线播放| 成人激情视频| www国产精品内射老熟女| 欧美三级在线视频| 九热爱视频精品视频| www.国产在线播放| 欧美精品视频www在线观看| 日韩免费电影在线观看| av动漫在线播放| 69久久夜色精品国产69蝌蚪网| 女同久久另类99精品国产| 男人的天堂视频在线| 欧美三级日本三级少妇99| 欧美91在线| 欧美精品自拍视频| 欧美精品一区二区三| 在线成人激情| 加勒比日本影视| 色777狠狠综合秋免鲁丝| 蜜桃视频在线入口www| 国产一区二区三区免费视频| 亚洲综合另类| 深夜福利在线视频| 欧美影院在线播放| 久久亚洲影视婷婷| 亚洲一区二区三区四区| 欧美日韩一区二区三区在线视频 | 欧美精品momsxxx| aa视频在线播放| 欧美精品一区二区三| 欧美粗暴jizz性欧美20| 一级黄色av| 欧美精品久久一区二区| 91视频免费播放| 欧美片第1页| 欧美少妇在线观看| 亚洲福利小视频| 久久成人18免费观看| free性欧美| 伊人久久大香线蕉综合75| 精品国产欧美一区二区| 欧美a一区二区| 成人国产电影在线观看| 亚洲一区二区三区午夜| 日韩三级免费观看| 日本欧洲一区二区| 八戒八戒神马在线电影| 免费在线观看一区二区| 精品久久久久久最新网址| 天堂精品中文字幕在线| 国产探花视频在线观看| 亚洲欧美精品在线观看| 国产偷亚洲偷欧美偷精品| 国产一级精品在线| 国产激情欧美| 亚洲狼人综合干| 91高清视频免费观看| 亚洲特级片在线| 国产欧美日韩在线观看视频| 欧美12一14sex性hd| 99免费在线观看视频| 欧美一区二区在线观看| 久久这里有精品15一区二区三区| 美女尤物在线视频| 欧美乱做爰xxxⅹ久久久| 欧美人在线视频| 亚洲男帅同性gay1069| 午夜国产精品视频| 日本资源在线| 香港经典三级在线| 日韩高清免费在线| 国产成人一级电影| 精品国产第一国产综合精品| 羞羞网站在线观看入口免费| 66m—66摸成人免费视频| 亚洲一区二区三区影院| 五月精品视频| 成a人片在线观看| 国产黄色激情视频| 2018日韩中文字幕| 色哟哟一区二区在线观看 | 中文字幕一区电影| 国产精品拍天天在线| 国产精品日韩精品中文字幕| 国产女主播在线写真| 综合一区中文字幕| 久久久久五月天| 欧美日韩国产中文精品字幕自在自线| 99国产精品久久久久久久| 伊人色综合一区二区三区影院视频| 波多野结衣与黑人| 欧美激情综合亚洲一二区| 婷婷开心久久网| 秋霞国产午夜精品免费视频| 精品午夜av| av在线日韩国产精品| 日韩精品一区在线视频| 国产日韩专区在线| 亚洲色图欧美制服丝袜另类第一页| 国产精品乱码一区二区三区软件 | 美女久久久久久久| 香港成人在线视频| 国产麻豆一精品一av一免费 | 国模精品视频一区二区三区| 在线欧美日韩精品| 91在线视频网址| 精久久久久久| 精品一区二区三区免费看| 国家队第一季免费高清在线观看 | 日本三级亚洲精品| 亚洲+小说+欧美+激情+另类| av网站在线看| 性一爱一乱一交一视频| 一区不卡字幕| 国产这里只有精品|