前言

從2016年5月份開始,接觸Node.js到現(xiàn)在已經(jīng)有一年半的時間了。從最初的懵懵懂懂,到一篇一篇地啃大部頭、看教程,再到自己開始寫筆記、寫教程,以及上手做了一些小功能,最終到部署自己的網(wǎng)站到云服務(wù)器上。
中間踩過坑(MongoDB基礎(chǔ)X——踩過的坑以及解決方案),也走過彎路;為此付出過代價,也絞盡腦汁去解決。但總的來說,還算一路順利。而當(dāng)飽含自己心血的作品真正部署在了云服務(wù)并正常運行的時候,那份激動真的沒法用語言來描述。
當(dāng)知識積累到一定程度后,我希望能分享給新人們,讓他們少走一些彎路,讓他們能更快地上手、做出更多酷炫的作品來;于是我在簡書創(chuàng)建了一個專題,把我的經(jīng)驗、我收集的資料以及其他人的經(jīng)驗都呈現(xiàn)給大家。>>>> 移步【Node.js專題】
最后,向大家推薦我的網(wǎng)站:
- OneLib智庫。這是我的博客,也是我發(fā)布最新資料的地方,歡迎大家留言和討論。
- 愛吐納。這是我為林明老師做的網(wǎng)站,主要服務(wù)于高中學(xué)生和教師。
- 工具集。這是我的工具集,提供了IP查詢、火車票查詢、圖片解析、顏色等工具。
- 湯圓直播。這是我做的一個簡易直播網(wǎng)站,使用的是RTMP協(xié)議進(jìn)行推流;不過不幸的是,.live域名無法備案,已經(jīng)被阿里云和諧了。
我的github是 https://github.com/KKDestiny , 歡迎fork和star。
我的個人網(wǎng)站是 https://www.linxiaozhou.com:666
1.服務(wù)器部署
1.1 部署網(wǎng)站服務(wù)器
《在騰訊云/阿里云Ubuntu系統(tǒng)安裝Node.js及運行環(huán)境》
很多人在開始學(xué)習(xí)伊始,碰到了部署服務(wù)器的麻煩,導(dǎo)致最終放棄了學(xué)習(xí);事實上,在linux服務(wù)器上部署一個node.js服務(wù)是一件很簡單的事。這篇文章介紹了如何在linux環(huán)境和Windows環(huán)境中部署一個node.js、npm及網(wǎng)站運行環(huán)境,并介紹了一些問題及如何解決。
1.2 部署Git服務(wù)器
《干貨 | 簡單幾步搭建一個遠(yuǎn)程git服務(wù)器》
github是一個很厲害的東西,不過講道理,有些代碼是不能隨便公開的;而你又希望使用git管理代碼,且希望不論在家還是在公司,都能隨時拉取和推送代碼。這時候,你需要一個服務(wù)器,以及搭建一個簡單的git服務(wù)器。這篇文章介紹了如何部署一個私人的git服務(wù)器,并使用私鑰來驗證身份。
1.3 域名和證書
《未來已來!免費數(shù)字證書使你的node.js服務(wù)器支持https》
SSL數(shù)字簽名實現(xiàn)網(wǎng)站的HTTPS化,可以使網(wǎng)站可信,防劫持、防篡改、防竊聽,是未來網(wǎng)站安全的發(fā)展趨勢。這篇文章將告訴你如何以個人的名義申請SSL數(shù)字證書,并部署在node.js服務(wù)器上。
2.數(shù)據(jù)庫部署
2.1 MongoDB的部署和使用
這里給出了一個學(xué)習(xí)系列資料,從安裝到使用,到備份和還原,入門必看!
- MongoDB基礎(chǔ)0——MongoDB的安裝與可視化管理工具
- MongoDB基礎(chǔ)1——數(shù)據(jù)庫基本操作
- MongoDB基礎(chǔ)2——Mongoose的操作指南
- MongoDB基礎(chǔ)3——Mongoose的數(shù)據(jù)交互問題
- MongoDB基礎(chǔ)4——安全與身份認(rèn)證
- MongoDB基礎(chǔ)X——踩過的坑以及解決方案(持續(xù)更新中)
- MongoDB基礎(chǔ)5——備份與恢復(fù)
2.2 Redis的部署
《Node.js的Redis簡單例子》
這篇文章主要介紹了如何在Windows和linux環(huán)境中安裝Redis,并給出了一個nodejs的使用例子。
2.3 Mysql操作
3.運維與管理
3.1 代理
《http-proxy反向代理以調(diào)度服務(wù)器各app》
當(dāng)我們的網(wǎng)站由PHP、Node.js和JavaWeb等應(yīng)用組合起來時,就會面臨80端口究竟給誰用的問題,誰都不愿意訪問自己的網(wǎng)站的時候還要加個端口號。這時候,就需要用一個反向代理來進(jìn)行調(diào)度;Nginx是一個很好的選擇,不過,用node.js似乎更容易上手。這篇文章就是使用node.js的一個應(yīng)用來代理各個服務(wù)的。
3.2 管理服務(wù)
《詳細(xì)版 | 用Supervisor守護你的Node.js進(jìn)程》
在我們初學(xué)node時,啟動命令一般是node myapp,每次修改好代碼后,還得先停止應(yīng)用,然后重啟。Supervisor是一個管理node服務(wù)的小工具,它能監(jiān)控代碼的變化,一旦代碼有變化,它就能自動重啟;它比較適合在開發(fā)過程中。在實際部署時,推薦使用pm2。
《用pm2管理node.js應(yīng)用》
在部署了多個node.js應(yīng)用后,我們還會面臨多個應(yīng)用管理不方便、需要來回切換命令行的窘境。為了解決這個問題,我決定使用pm2來管理所有node.js應(yīng)用。
3.3 資源同步
《用sftp管理你的linux服務(wù)器》
因為服務(wù)器一般是用linux,我們開發(fā)則一般用Windows或mac,因此如何把代碼同步到服務(wù)器是一個大問題;直接在服務(wù)器安裝一個git來同步當(dāng)然可以,但有時候我們想把代碼或資源從服務(wù)拉回本地,就比較麻煩了。這篇文章介紹了如何通過sftp來更便捷地進(jìn)行這些操作,只要你的服務(wù)器支持ssh,就可以進(jìn)行這樣的操作。通過sftp,你甚至不需要什么samba、ftp;畢竟這些服務(wù)既不方便安裝,又是不安全因素。
4. 代碼風(fēng)格
《使用Async,讓你的Node.js代碼更優(yōu)雅》
node.js在書寫時最大的毛病就是異步函數(shù),如果寫得不好,就會嵌套一堆代碼;使用Async可以有效避免這種情況。
5.學(xué)習(xí)資料與框架
5.1 基礎(chǔ)知識
關(guān)于node.js的基礎(chǔ)知識,我建議各位從最簡單的教程開始看,這里推薦 菜鳥教程。
一些權(quán)威網(wǎng)站的網(wǎng)址:
- Node.js官網(wǎng)
- Express官網(wǎng):系統(tǒng)地學(xué)習(xí)Express框架
- Node.js API文檔:Node.js的接口文檔
以下為我寫的一些資料,如果有不明白的可以先看看:
我收集的一些資料:
5.2 一些小功能、小應(yīng)用
- 《Node.js通過微信網(wǎng)頁授權(quán)機制獲取用戶信息》
- 《Node.js接入微信公眾平臺后臺》
- 《Node.js使用NodeMailer發(fā)送郵件》
- 《Node.js斷點下載和多線程下載原理》
- 《Node.js(Express4.x)搭建聊天室》
- 《用Node.js做一個火車票查詢小工具》
- 《RSA簽名與驗證》
- 《使用lazyload延遲加載圖片來緩解服務(wù)器壓力》
- 《jsPDF將HTML轉(zhuǎn)為PDF文件》
- 《截屏粘貼到編輯器并自動上傳》
附2:組件介紹
《干貨 | Node.js有用的功能組件》
本文介紹了我在開發(fā)過程中所使用到的一些node.js中間件,如數(shù)據(jù)庫中間件mongoose、redis,發(fā)送郵件的Nodemailer,視頻處理的ffmpeg,文件(夾)壓縮的archiver,簽名和校驗的crypto,等等。
結(jié)語
在一個月前,我開始接觸Electron。這是一個跨平臺的客戶端開發(fā)工具,使用的是Node.js技術(shù)。我們只需要使用一種語言(javascript),就可以編譯出Windows、linux和macos版的客戶端,沒錯,客戶端!
Electron 是一個使用 JavaScript, HTML 和 CSS 構(gòu)建跨平臺的桌面應(yīng)用。你只要會node.js及相關(guān)技術(shù),你就能做出以前只有會MFC、VS甚至Mac開發(fā)的程序員才能做的產(chǎn)品。其中代表作品包括Github客戶端、優(yōu)秀的編輯器Atom、Flow等。

Electron為我們做node.js開發(fā)的程序員打開了一扇全新世界的大門。從此,我們不再是跑在云上的虛幻的程序員,我們也能實實在在地開發(fā)出各種小工具出來!我將在簡書的專題中同步
當(dāng)然,千里之行,始于足下;在此之前,必須先把node.js甚至更基礎(chǔ)的javascript學(xué)好,否則一切都是沙土中建高樓,根基不穩(wěn)。
最后,祝愿每一個程序員都能找到自己的人生。
文 / 林曉州