1. 程式人生 > >Nodejs 入門祕籍,搭一個最簡單的web伺服器。(菜鳥的你也能秒懂)

Nodejs 入門祕籍,搭一個最簡單的web伺服器。(菜鳥的你也能秒懂)

心血來潮,總結了一個Nodejs入門祕籍。看了你就想學NodeJs了。
一、簡單介紹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的helloworldvue入門如何使用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(‘