文章來源:《Node.js區塊鏈開發》——朱志文
今天我們來介紹Node.js的安裝、使用方法,以幫你快速瞭解Node.js。
通過本篇的學習,你將對前端開發有一個完整的、全新的認知,還將學習到如何將那些第三方平臺的資源收為已用。
本文所提到的加密貨幣開發語言統計分析項目SatisielAnalysis of Crptocureney Development Languages, SACDL),
在線體驗地址為http//imfgithub.io/sacdl-project/
先看下 項目需求:
SACDL項目需要具備以下幾個功能。
1)能夠方便地讀取第三方網站(這裡是Github)的API,實現項目搜索功能。
2)能夠對讀取的數據進行集中處理,將其方便地轉化為我們所需要的信息。
3)能夠通過柱狀圖、矩陣圖、表格等圖表格式,將數據可視化。
4)方便擴展,為後續添加更多圖表樣式或其他網站API (比如交易市場的)做好準備。
技術選型:
無處不選擇。不僅大方向需要選擇,具體到每個開發包也要去仔細甄別,判斷它們安全嗎?好用嗎?性能高嗎?是否有更好的解決方案? ...
僅從上述需求來說,一個HTML文件再加一個Jascrie文件基本上就可以滿足需求了,一般來說是不需要第三方包的,Node.js更是大材小用。
但事實上,很多項目就算只是前端的項目,化如Bootstrap等,也都是基於Node.js的, 為什麼? 答案很簡單,因為Node.js提供了很多方便又實用的工具。
Node.js的優點具體如下:
組織方便:
JavaScript沒有模塊化組織代碼的能力。
在一個項目中,JavaScript通常會被分割到不同的文件中,如果採用以往的方式,處理起來將會非常頭終,現在利用Node.js的模塊進行管理,可以讓你輕鬆組織代碼。
資源廣泛:
Node.js的出現讓JavaScript第三方包像雨後春筍一樣遍地開花。如果需要什麼,只要一條命令,Node.js 就能幫您辦理了,這一點帶來了極大的便利。
全棧處理:
開發完後還有很多事情要做,比如,要對前端代碼JavaScript或CsS文件進行合併、壓縮、混淆,以及項目部署等。
體驗過Ruby on Rails一鍵部署功能的小夥伴,都會對其印象深刻。Node.js也很容易優能做到這點,而且更加自然、流暢。
總之,有了Node.js,我們就可以像開發後臺程序一樣組織前端代碼和項目了; 有了Node.js,就可以利用它背後強大的技術社區支持。
Node.js簡介:
有讀者說,第一次看到 Node.js,還以為就是一個JavaScript文件呢。
其實這很正常,很多前端的應用,比如大家討論最多的前端開發框架三劍客——Angular.js ,Backone.js 和Ember.js就是一個JavaScript文件。
那麼,Node.js 是什麼呢?
官方解釋是這樣的:
Node.js®is a JavaScrip runtime built on Chrome's V8 JavaScipt engine. Node.js uses anevent-driven, non-blocking I/O model that makes it lightweight and efficient.
翻譯如下:
Node.js®是一個搭建在Chrome V8上的JavaScript即時運行平臺,採用的是事件驅動和非阻塞I/O模型,既輕量又高效。
通俗的解釋就是,Node.js 是一一個可以讓您利用JavaSript語言開發應用的平臺,是構建運行在分佈式設備上的數據密集型實時程序的完美選擇。
請注意,這裡所說的並不只是Web應用,很多人認為Nodejis僅能開發以服務器為中心的Web應用,其實不然,它還可以開發PC端或移動端的應用。
當然,我們看到的大部分析是Web應用,它是PHP+Apache、JSP+Tomcat、 Ruby on Rails + Passenger (或Thin)+ Nginx等傳統Web開發的絕佳替代品。
如果你對此還沒有直觀的感受, 那麼我告訴你一一個信息,Node.js 的作者原本就是想開發一種取代 Apache ,Nginx、Tomeat等產品的傳統服務器軟件的,
結果發展成了今天的Node.js。
你用Node.js寫的每一個應用,既可以看作一個服務器軟件,也可以看作一個Web應用,而且它還如此簡單、高效。
什麼是數據密集型、實時的應用?
聊天室、即時通信等都是數據密集型、實時的應用。
當然,還包括交易市場(比特幣、股票、基金等),電子商務網站的即時交易等,甚至物聯網,比如電器設備的監控和遠程控制等也是此類應用。
筆者剛完成的一一個項目, 一家大型連鎖超市的電器設備綜合監控系統,就是使用Node.js開發的。
開發步驟:
下面所要介紹的開發過程可能會有點煩瑣,讀者需要耐心點,其實實踐步驟很簡單。
1 、搭建環境
對於初學者,建議先去Node.js官方網站瀏覽一遍。
筆者個人的開發環境具體如下,在此列出僅供參考。
操作系統是Ubuntu系統:您可以在現有的系統上,使用虛擬機軟件安裝Ubuntu系統。我們的全部示例和截圖都是在Ubuntu系統上完成的。
IDE工具:Sublime Text或Atom。
強烈建議參考Node.js的官網信息(Node.js 官方網站的地址請參見6.6節)。
可在Ubuntu上通過nvm安裝和管理Node,js。
下面是筆者個人的安裝習慣,摘錄其中的關鍵命令(各條命令都要在Ubuntu的命令行程序下運行)分別如下。
安裝Nvm
$ curl –o- https://raw .githubusercontent .com/creationix/nvm/v0.29.0/install.sh 1bash
用Nvm安裝Node,js
$ nvm install 5.1.0
$ nvm alias default 5.1.0
說明: 5.1.0是Nodejis的版本信息,寫作本章時,Nodejis 的最新穩定版是5.4.0,長期支持版是4.2.4。
安裝使用CNpm
使用淘寶npm鏡像(http://pme. taobao.org ),可以提高國內組件的下載數度:
$ npm install -9 cnpm—registry=https://registry.npm.taobao.org
查看版本信息
$ nvm -v
$node –v
$npm –v
筆者的版本信息如下:
nvm 0.29.0
node v5.1.0
npm v3.3.12
2、新建工程
在電腦上,新建一一個文件夾sacdl-project, 以此作為工程目錄,路徑如下:
/home/yourname/projects/sacd1 -project
我們通常會把前端代碼放在public目錄下,然後分別建立js、css, images等目錄,最後建立文件index .html和js/app.js,分別用於顯示頁面和編寫JavaScript代碼。
SACDL工程目錄結構中,特定的單詞擁有特定的意思,而且有固定的用途和功能。
如bower components 文件夾用於存放前端第三方組件,比如D3.js等,由bower自動生成; node_modules 文件夾用於存放後臺第三方模塊,由npm自動生成。
Dist 文件夾用於存放需要合併處理的目標文件,使用gulp維護。
test 位於測試文件夾下,存放測試代碼。public 文件夾用於存放我們自己編寫的代碼,其中各項文件具體如下。
js/searcher.js: 表示搜索框處理代碼。
js/utils.js: 表示數據處理代碼。
Js/bar.js: 表示文件是D3.js的柱狀圖代碼。
Js/treemap.js: 表示文件是矩陣圖的代碼。
Js/app.js: 表示用戶綜合調用,類似於把制器或路由。
3、前端組件
在命令行中,進人上述工程目錄,安裝自端管理工具bower:
$ cnpm install -g bower #也可以使用npm install★命令,二者一樣,只不過cnpm使用淘寶鏡像,在國內安裝cnpm下載會更快些
說明:
bower是一個npm包,專門用於管理Web前端(包含js、CSS、 images、fonts 等)依賴包的。
我們可以進行簡單類比,bower用於管理前端包,npm用於管理後臺庫(包),二者的用法十分相似。
初始化bower,代碼如下:
$ bower init
結果如下所示:
kuby@kuby-virtual-machine:~/projects/doing/sacdl-projects bower init
>name sacral-project
>description 加密貨幣開發語言統計分析,statistical Analysis of Cryptocurrency Development Languages
>main file index.js
>what types of modules does this package expose?
>keywords Cryptocurrency, bitcoin,d3js,nodejs
>authors imply
>license MIT
>homepage http://github.com/imfly/sacdl-project
>set currently installed components as dependencies? Yes
>set commonly ignored files to ignore list? Yes
>would you like to make this package as private which prevents from being accidentally published to the registry? Yes
{
name: `sacral-project`,
description:` 加密貨幣開發語言統計分析,statistical Analysis of Cryptocurrency Development Languages`,
main : `index.js`,
authors: [
顯示桌面
license: `MIT`,
keywords: [
`Cryptocurrency`
`bitcoin`
`d3js`
`nodejs`
],
homepage: `https://github.com/imfly/sacdl-project`,
moduleType: [],
private: true,
ignore: [
`**/.*`
`bower_components`
`test`
`tests`
]
}
Looks good ? ( Y/ n )
這樣就會生成一個bower.json文件,然後,代碼就可以被當作一個完整的前端組件來管理了。
通過bower安裝D3.js,代碼如下:
$ bower install d3 -- save
命令加上選項--save,將在bower.json文件裡寫入如下信息:
"dependencies":{
…
"d3": “~3.5.12",
…
}
這樣,在另一臺電腦上進行開發時,複製完代碼( git clone),就可以直接運行下面的命令,自動安裝所有要依賴的第三方組件了:
$ bower intall
說明:
D3.js可提供前端顯示的柱狀圖、餅狀圖等,是非常著名的數據可視化前端開發包。
國內的數據可視化軟件有百度的echats,還有一個higharts,這三者經常被拿來做比較。對這三者的簡單區分就是,D3.js像開發包,可以任意編程開發,但據說入門較難;其他兩個更像是模板,拿來就可以直接使用。
筆者選擇的是D3js,這樣選擇純屬個人喜好:一方面,筆者個人喜歡完全控制代碼;另一方面,在開發電子書版權保護和交易系統時會用到它。
前端交流群,私信發送【前端】獲取
閱讀更多 朗小妹兒 的文章