Node學習——開篇
前言:自從下決心轉學前端以來,我的專業課java基本荒廢了,所以對於後臺開發的邏輯也已基本忘幹凈了。但是作為一名準前端程序猿,我認為還是有必要了解後端開發的,雖不必深入學習,但是能夠了解項目從前端到後端的整個流程,實現簡單的業務邏輯(增刪改查)應該對我們大有裨益。NodeJS應該說是前端開發人員涉及後端開發的最佳選擇,因為使用的是前端很熟悉的Javascript語言。
一、什麽是Node.js
Node.js是一個基於V8引擎的服務器端Javascript運行環境。Javascript(簡稱JS,下同)從此有了開發後段應用程序的能力。
因為使用的是JS語言,所以一發布以來就受到了廣大前端開發人員的喜愛。很多前端開發人員開始涉足後端開發,使用Node.js重構前端工具。
Node.js通過非阻塞I/O流、事件驅動機制展現了它超強的高並發能力。此外,Node使用的是高性能的V8引擎,提供了很多不同用途的API,采用全新的編譯技術,實現了一個高性能的服務器。
二、Node.js環境安裝
Node.js的環境安裝十分簡單,去官網 http://nodejs.org/en/ 下載穩定版本安裝包,點擊下一步下一步安裝即可。
完成以後可以打開CMD輸入node -v
查看是否安裝成功:
C:\Users\dawei>node -v
v6.11.1
出現node的版本號則表示安裝成功。
現在我們就開始學習Nodejs。Node.js中,將很多功能劃分為一個個module
(模塊)。Node.js中的很多功能都是通過模塊來實現的。
三、http模塊
HTTP
模塊用於創建服務器,接收和響應客戶端的請求。
//1、引入http模塊 var http = require(‘http‘); //創建服務器 var server = http.createServer(function (req , res) { //發送HTTP頭部 //HTTP狀態碼:200:OK //設置HTTP頭部,狀態碼是200,文件類型是html,字符集是utf-8 res.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"}); //發送相應數據 res.write("Hello Node.js"); //結束處理程序,返回數據 res.end(); }); server.listen(8080); //監聽端口 //在終端打印如下信息,提示服務器已啟動 console.log("Server running at http://127.0.0.1:8080/");
這樣我們就完整的創建了一個web服務器,可以在瀏覽器通過http://127.0.0.1:8080
訪問該服務器。
回調函數中的req
對象包含了客戶端請求的信息,可以使用req.url
屬性拿到用戶請求的URL地址,在後期我們就是要通過不同的URL來設計不同的路由。那麽識別這個URL,就用到了URL
模塊。
四、URL模塊
URL模塊提供了幾個方法用於操作url。
- url.parse(req.url):解析url,將url地址轉為url對象
- url.format():將url對象轉為url字符串,是
parse
方法的逆向操作 - url.resolve(from,to) :添加或者替換路由
1、url.parse()
假設在上面的代碼段中引入了url模塊
url.parse(req.url)
那麽將會打印如下內容
{
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: null,
query: null,
pathname: ‘/‘,
path: ‘/‘,
href: ‘/‘ }
由於我們只是訪問了根路徑,所以內容基本為空,很多情況下我們需要訪問詳細的頁面並且傳遞參數
http://127.0.0.1:8080/login.html?uaername=dawei&pass=123
{
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: ‘?uaername=dawei&pass=123‘,
query: ‘username=dawei&pass=123‘,
pathname: ‘/login.html‘,
path: ‘/login.html?uaername=dawei&pass=123‘,
href: ‘/login.html?uaername=dawei&pass=123‘ }
可以看到,這個對象的query
屬性保存了我們的參數,也叫做查詢字符串。pathname
屬性中保存了我們的訪問路徑。這兩個屬性很常用。
我們往往需要獲取參數信息,在服務器端做進一步處理。在JS中我們可以使用字符串截取來獲取參數,不過再這裏我們可以直接給parse
方法傳遞一個參數true
來將查詢字符串轉為對象格式,從而很方便的獲取。
url.parse(req.url,true)
{
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: ‘?username=dawei&pass=123‘,
query: { username: ‘dawei‘, pass: ‘123‘ },
pathname: ‘/login.html‘,
path: ‘/login.html?username=dawei&pass=123‘,
href: ‘/login.html?username=dawei&pass=123‘ }
這樣我們就可以很方便的獲取參數的值。
2、url.resolve()
a、增加路由
var a = url.resolve(‘http://example.com/‘, ‘/one‘);
console.log(a); // http://example.com/one
b、替換路由
var b = url.resolve(‘http://example.com/one‘, ‘/two‘);
console.log(b); // http://example.com/two
Node學習——開篇