您好,登錄后才能下訂單哦!
這篇文章給大家介紹 Node.js如何快速上手并部署網站,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
網站的錯誤不經常發生,但當我們遇到的時候非常令人懊惱,比如當我們想要在線掛號的時候,遇到了這個:
為什么會出現這種情況,背后的服務器發生了什么?我們將使用Node.js
做一個簡單的web
服務器并利用好雨應用管理平臺將我們本地的服務放到互聯網上面。
Node.js
是一個開源的跨平臺運行環境,允許我們構建一個服務器端和網絡應用的運行環境。使用JavaScript
語言開發可以通過Node.js
運行時環境跑在任何平臺。當然,開始使用前我們需要先進行安裝,通過這個下載地址找到適合我們系統的安裝包進行安裝。
首先我們需要寫一個JavaScript
文件,我們叫它server.js
,這個就是我們運行web
服務器的程序。
var http = require("http"); http.createServer(function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("It's work!"); response.end(); }).listen(5000);
相信我,這是你看到的最簡單的服務器程序了,是不是很簡單,接著我們在命令行下運行這個文件。
node server.js
這樣我們的web
服務器就已經運行了,打開瀏覽器讓我們確認一下它正常工作了。
Node.js
可以用很少的資源,應付大流量訪問,因為node
采用了event loop
機制來解決單線程的問題,這種運行方式稱為"異步模式"(asynchronous I/O
)或"非堵塞模式"(non-blocking mode
)。
讓我們通過這幅圖解釋的更詳細一些:
這幅圖很好的展示了在Node.js服務內部是如何工作的。一個用來處理外部事件并且把它們轉換成對回調的調用的實體。
這些工作都是在服務內服實現的,我們在寫代碼的過程中不會接觸到這些問題。所以我們只需要了解Node運行如此快的原因正是基于這種"異步I/O模式"就可以了。
我的服務器已經正常運行了,可是它只是跑在我的本地,如果想要讓更多的人訪問我的網站,我需要將它放到互聯網上我們需要選擇一個云平臺來部署我們的網站。對于云平臺我們有很多選擇,比如亞馬遜
、Heroku
等等,但因為眾所周知的原因,國外的云服務我們使用起來并不方便,甚至無法訪問。所以我選擇了億速云
來部署網站,億速云
是一個云端的應用管理平臺,也就是我們通常所說的PaaS
(platform as a service),它允許你自動部署web應用,支持幾種構建方式,比如我使用就是源碼構建,這節省了我很多時間,可以讓我專心寫代碼,不用為服務器、網絡以及代碼運行環境的配置操心。
好,在部署之前,我們需要進行一些開發的工作,讓我們寫個簡單網站,新建項目目錄名為myblog
,并創建server.js
(上面說過的,還記得嗎?)首先聲明一些變量:
var http = require("http"); var fs = require("fs"); var path = require("path"); var mime = require("mime");
這里包含了一個第三方的依賴mime
,他不是node
的一部分,我們需要先安裝這些第三方依賴才能讓程序工作。為了解決依賴問題我們需要寫一個package.json
文件將我們項目需要的依賴放進去。
就像這樣:
{ "name" : "myblog", "version" : "0.0.1", "description" : "a simple blog", "dependencies" : { "mime" : "~1.2.7" }, "scripts": { "start": "node server.js" }, "engines": { "node": "4.7.2" } }
語法很簡單,但要注意一些語法細節,不然經常會發生因為少了逗號或者引號造成構建失敗這種低級的錯誤。這里我們聲明依賴的mime
的版本、啟動命令以及node
的版本。
如果我們代碼的根目錄下存在package.json
文件那么億速云就會判斷這是Node.js
程序并安裝相應的依賴以及調用我們聲明的命令來啟動程序。
接著我們需要為web
服務器增加一些功能來處理不同的請求,send404
是當請求到不存在的文件時,我們要如何處理:
function send404(response) { response.writeHead(404, {"Content-type" : "text/plain"}); response.write("Error 404: resource not found"); response.end(); }
sendFile
文件數據服務:
function sendFile(response, filePath, fileContents) { response.writeHead(200, {"Content-type" : mime.lookup(path.basename(filePath))}); response.end(fileContents); }
定義服務器如何執行請求:
function serverWorking(response, absPath) { fs.exists(absPath, function(exists) { if (exists) { fs.readFile(absPath, function(err, data) { if (err) { send404(response) } else { sendFile(response, absPath, data); } }); } else { send404(response); } }); }
創建http
服務器:
var server = http.createServer(function(request, response) { var filePath = false; if (request.url == '/') { filePath = "public/index.html"; } else { filePath = "public" + request.url; } var absPath = "./" + filePath; serverWorking(response, absPath); });
配置服務的監控端口:
var port_number = server.listen(process.env.PORT || 5000);
為啥是5000
呢?因為好雨云
默認分配5000
的監控端口。所以我們將這里配置好,就可以直接被訪問到。
然后我們開始寫內容,在項目目錄(myblog
)下新建幾個目錄:public
、stylesheets
和images
。我們將index.html
放到public
下,將我們樣式文件 style.css
放到stylesheets
下,靜態資源圖片放到images下。
博客的首頁index.html
代碼如下:
<!DOCTYPE html> <html> <head> <title>我的博客</title> <link rel="stylesheet" type="text/css" href="http://oe5ahutux.bkt.clouddn.com/style.css"> </head> <body> <div id="header"> <span>一個簡單的博客</span> </div> <div id="content"> <h3><a href="http://www.amazon.cn/gp/product/B007VISQ1Y/ref=as_li_ss_tl?ie=UTF8&camp=536&creative=3132&creativeASIN=B007VISQ1Y&linkCode=as2&tag=jysperm07-23">JavaScript 權威指南</a></h3> <p>這本書事無巨細地介紹了 JasvaScript 語言核心、標準庫以及瀏覽器提供的 DOM 和 BOM. 本書并沒有由淺入深的結構,而是通篇平鋪直敘地介紹,因此適合有一定 JavaScript 基礎的人從頭至尾閱讀來掌握一些相對細節的 JavaScript 知識,或遇到具體問題時查閱相關章節。</p> <h3><a href="something.html">JavaScript 異步編程</a></h3> <p>這本書介紹了 JavaScript 中事件模型、Promise、async.js 等異步抽象的設計和實現,同時也介紹了 Web Woerk 等在瀏覽器中優化性能的技巧。這本書適合所有 JavaScript 程序員增加對 Promise 等異步模型的理解,并在實踐中挑選合適的異步模型。</p> </div> </body> </html>
瀏覽器中訪問的樣子:
首頁代碼中,我故意寫了一個可以訪問的正確鏈接和一個不可訪問的錯誤鏈接,這樣我可以試一下404
返回內容。
###部署到億速云
OK,到這里我們的網站寫好了,需要將代碼提交到億速云
來部署,點新建應用
后,好雨平臺會給我們一個git代碼倉庫的地址,我們只需要將代碼提交到這個地址就可以了。
在我們本地的myblog
項目目錄中執行
# 初始化本地git倉庫 git init # 添加遠程倉庫地址 git remote add goodrain http://code.goodrain.com/app/simtime_gr8904c4.git # 執行提交 git add . git commit -m "first commit" git push -u goodrain master
提交后,平臺自動識別了我們的語言
在自動構建和部署之后,我們就可以訪問到我們的網站了。
我們寫了不到60行代碼,將我們的web
服務器構建了起來,并寫了一個演示用的博客頁面,也許你會說這太簡單了,沒錯,確實是這樣,但通過這些你可以快速的了解到web服務器是如何工作。你還可以將Node.js
與更多技術結合,比如HTML5
、CSS3
以及JavaScript
,當然還包括種類豐富的庫和框架支持。
PaaS
云平臺的選擇也是一個重點,可以幫助我們快速學習、試驗我們的代碼,將我們從復雜的配置和運維工作中解脫了出來。
關于 Node.js如何快速上手并部署網站就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。