Nodejs 入門祕籍,搭一個最簡單的web伺服器。(菜鳥的你也能秒懂)
一、簡單介紹nodejs
初學nodejs ,直接上簡單例項。先簡單說明一下:nodejs ,nodejs相當於伺服器端的 可以輕易搭建一個伺服器端。
nodejs是用C++開發的一種運行於伺服器端的語言,可以寫網站後臺程式,可以做服務端應用開發,語法和JAVASCRIPT一樣,會JS,就是會NodeJS,區別於,普通JS是指令碼執行客戶端,而NODEJS中的JS是運行於伺服器端,NODEJS的作用相當PHP,ASP等語言。
Nodejs最大的特性之一:非阻塞(事件驅動IO),這也讓nodejs的效能有不小的提升。
傳統的web server多為基於執行緒模型。你啟動Apache或者什麼server,它開始等待接受連線。當收到一個連線,server保持連線連通直到頁面或者什麼事務請求完成。如果他需要花幾微妙時間去讀取磁碟或者訪問資料庫,web server就阻塞了IO操作(這也被稱之為阻塞式IO).想提高這樣的web server的效能就只有啟動更多的server例項。
相反的,Node.Js使用事件驅動模型,當web server接收到請求,就把它關閉然後進行處理,然後去服務下一個web請求。當這個請求完成,它被放回處理佇列,當到達佇列開頭,這個結果被返回給使用者。這個模型非常高效可擴充套件性非常強,因為webserver一直接受請求而不等待任何讀寫操作。(這也被稱之為非阻塞式IO或者事件驅動IO)\
考慮下面這個過程:1,你用瀏覽器訪問nodejs伺服器上的"/about.html"
2,nodejs伺服器接收到你的請求,呼叫一個函式從磁碟上讀取這個檔案。
3,這段時間,nodejs webserver在服務後續的web請求。
4,當檔案讀取完畢,有一個回撥函式被插入到nodejs的服務佇列中。
5,nodejs webserver執行這個函式,實際上就是渲染(render)了about.html頁面返回給你的瀏覽器。
好像就節省了幾微秒時間,但是這很重要!特別是對於需要相應大量使用者的web server。
下面我們來構建一個簡單例項:
準備工作:在linux上安裝好nodejs(自帶npm包管理器)。npm是nodejs的包管理器,後續需要用到的比如express,socket.io等模組都是通過npm 下載。
npm init 生成一個包管理檔案:package.json.
npm install express --save 安裝express --save 可以自動更新package.json 檔案,將express 作為專案以來新增到package.json裡面。同時npm會自動新建node_modules資料夾,存放各種包。
Express 是一個簡潔而靈活的 node.js Web應用框架, 提供一系列強大特性幫助你建立各種Web應用。Express框架建立在node.js內建的http模組上。
新建app.js ,用於搭建簡單的web伺服器。
$vim app.js
var express = require('express') //載入express模組
var app = express()
var port = process.env.PORT || 3000 //監聽的埠
app.use(express.static(__dirname + '/static'))
app.use(function (req , res){
res.sendfile('./static/index.html')
})
app.listen(port,function(){console.log('TechNode is on port' + port + '!' )
})
將靜態檔案放在static目錄下;在static目錄下還會放index.html檔案,它將會作為整個應用的啟動頁面。除了靜態檔案的請求以外,其他所有的HTTP請求,我們都會輸出index.html檔案,服務端不關心路由,所有的路由邏輯可以都交給在瀏覽器端的Angular.js(另一神器,正在學習)去處理。
如果想檢視伺服器端的請求日誌,加上下面這兩句即可,但是加之前別忘了 npm install morgan --save哦:
var logger = require('morgan')
app.use(logger('dev'));
接下來,我們隨便在static目錄下建個index.html,裡面加點內容,我們就可以在敲入 $node app.js
便可以在瀏覽器端 瀏覽 :http://伺服器Ip:3000/ 。
讓我們回顧下,整個目錄下就只由這幾部分組成:
[email protected]:~/test27$ ls
app.js node_modules package.json static
很簡單對不對。nodejs的學習之路這就開始了!學好nodejs主要要學習他的核心框架,模組載入機制,路由處理,非同步程式設計機制,http框架==。
相關推薦
Nodejs 入門祕籍,搭一個最簡單的web伺服器。(菜鳥的你也能秒懂)
心血來潮,總結了一個Nodejs入門祕籍。看了你就想學NodeJs了。一、簡單介紹nodejs初學nodejs ,直接上簡單例項。先簡單說明一下:nodejs ,nodejs相當於伺服器端的 可以輕易搭建一個伺服器端。 nodejs是用C++開發的一種運行於伺服器端的語言
全網最簡單!步驟超詳細!小白也能看懂的深度學習安裝教程(caffe版)!
想入門深度學習?可是環境就是裝不上?還在對著滿屏的errors抓耳撓腮? 不存在的!!! 小白福利——從零開始手把手教會你安裝一個屬於自己的深度學習環境! 重灌linux os 20多遍、硬著頭皮剛掉了數不盡的error、成功配置了諸多專案苛刻環境的深度學習工作者吐血整理!
在樹莓派上建立一個最簡單手寫體識別系統(二)
首先得先把opencv安裝上。 在PC上我使用的是anaconda,直接輸入: conda install --channel https://conda.anaconda.org/menpo opencv3 測試程式碼: import cv2
自己開發簡單web伺服器一(C++開源庫websocketpp實現)
簡要 Web伺服器主要處理的是HTTP請求(這裡忽略HTTPS),HTTP協議建立在TCP上。如果自己實現,無非就是網路程式設計(socket接受、傳送),資料解析(HTTP欄位解析),返回HTTP協議字串給客戶端等。說起來簡單,要做到跨平臺和高效,不得不介紹幾個有名的開源
自己開發簡單web伺服器二(Node.js實現)
Node.js 剛接觸Node.js沒多久,試用了一下,輕輕鬆鬆幾行程式碼就可以實現一個簡單的HTTP伺服器,開發起來的確比其他語言快多了。 Node.js是一個開源的JavaScript庫,可以跨平臺執行在Windows、Linux、Mac上。JS解析庫用的是大名鼎鼎的G
Centos上搭建jenkins,並自動部署Spring Boot專案。(附遇到的問題及解決方案)
最近嘗試自己搭建jenkins自動部署環境,將整個過程及遇到的問題記下來,希望能夠幫助到一些朋友! 本文使用的環境是:Cent os7.2,maven3.5.3,JDK8,jenkins2.136 首先需要在你的伺服器上配好相關的JDK與maven,還要在系統上安裝好gi
【koa】koa入門,一個最簡單的koa demo
const Koa = require('koa'); // 建立一個Koa物件表示web app本身: const app = new Koa(); // 對於任何請求,app將呼叫該非同步函式處理請求: app.use(async (ctx, next)
01vue的helloworld,vue入門,如何使用vue寫一個最簡單的效果
說明:1、本示例是作為程式設計師接觸任何一門技術時的基本使用“hello world”。看程式碼:<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">
一個最簡單的Activity入門流程程式碼
1.建立maven工程並匯入pom檔案<dependencies> <dependency> <groupId>org.springframework</groupId>
Dubbo:Dubbo入門---搭建一個最簡單的Demo框架
https://blog.csdn.net/noaman_wgs/article/details/70214612 Dubbo是什麼 Dubbo是: 一款分散式服務框架 高效能和透明化的RPC遠端服務呼叫方案 SOA服務治理方案 每天為2千多個服務提供大於30億次訪問量支援,
Spring Boot 入門 (一)——建一個最簡單的springboot專案
建立一個最簡單的springboot專案 廢話不多說直接開整!! 開啟eclipse新建一個maven專案,目錄格式如下: 開啟pom.xml檔案,引入父依賴,web依賴,並設定JDK版本 <project xmlns="http://maven.apache.or
QThread一個最簡單的掛起,恢復的例子
class MyWorker: public QThread { private: QMutex sync; QWaitCondition pauseCond; bool is
Dubbo入門---搭建一個最簡單的Demo框架
Dubbo背景和簡介 Dubbo開始於電商系統,因此在這裡先從電商系統的演變講起。 單一應用框架(ORM) 當網站流量很小時,只需一個應用,將所有功能如下單支付等都部署在一起,以減少部署節點和成本。 缺點:單一的系統架構,使得在開發過程中,佔用的資源越來越多,而且隨著流量的增加越來越難以維護 垂
Dubbo入門-分散式原理詳解--搭建一個最簡單的Demo框架
Dubbo背景和簡介 Dubbo開始於電商系統,因此在這裡先從電商系統的演變講起。 1,單一應用框架(ORM) 當網站流量很小時,只需一個應用,將所有功能如下單支付等都部署在一起,以減少部署節點和成本。 缺點:單一的系統架構,使得在開發過程中,佔用的資源越來越多,而且隨著流量的增加越來越難以維護 2.
用spring boot搭建一個最簡單的使用者登入介面,其艱難歷程!
目前的Java專案中,最基本的包括:controller層、service層、dao層,當然還用entity實體層。 controller層,顧名思義,就是控制器,控制各個層面的動作。 service層,其中寫了具體的方法,具體怎樣的實現,就在其中寫著。 dao層
寫一個最簡單的gulp 實例
今天 blog png ruby 官網 base 1.0 pat fault 今天寫了一個簡單的gulp 實例 分享給大家! 比較適合gulp 初學者 首選: 看看gulp官網了解一些基本的定義 官網地址 : http://www.gulpjs.com.cn/ 搭建n
javaWeb之寫一個最簡單的servlet
tran oid w3c write 分享 瀏覽器 servle code mapping 1. 創建一個類servletTest2 繼承HttpServlet類。 public class servletTest2 extends HttpServlet {
Go語言建立一個最簡單的服務端點
一個 nds Coding port struct pac quest com handler handlers/handlers.go package handlers import ( "encoding/json" "net/http" )
一個最簡單的cell按鈕點擊回調
eight property sin font 簡單的 cell 舉例 定義 ont 在cell.h定義 @property(nonatomic,strong)void(^pushType)(NSInteger); 在cell.m按鈕點擊時 _pushType(1);(舉
搭建一個最簡單的node服務器
node string str console 參數 地址 param color json 搭建一個最簡單的node服務器 1、創建一個Http服務並監聽8888端口 2、使用url模塊 獲取請求的路由和請求參數 var http = require(‘