隨著 Node.js 的發(fā)展延赌,現(xiàn)在已經(jīng)被很多人熟知折砸, Node.js 已經(jīng)成為了前端開發(fā)人員必備的技能。本文不會對 Node.js 過多介紹 如果你感興趣可以訪問 Node.js官網(wǎng),維基百科
本文是利用 Node.js + Express開發(fā)一個服務器程序翁逞,Express 是一種保持最低程度規(guī)模的靈活 Node.js Web 應用程序框架蚤假,為 Web 和移動應用程序提供一組強大的功能。詳見:官網(wǎng)
一 準備工作
首先你需要安裝 Node.js 環(huán)境 這里不再做介紹,
1.安裝Express
? npm install express -g
? npm install express-generator -g
2.初始化項目
cd/Users/SPRINT/Desktop 進入桌面? express 項目名稱
項目名稱我們指定為APIServer试伙,從項目名稱可以看出 我們是模擬服務器API
在這里我們將提供一個獲取用戶詳情接口 并輸出JSON數(shù)據(jù)嘁信。
初始化項目
在終端最后位置 看到輸出兩個命令
install dependencies:? $ cd APIServer && npm install//告訴我們進入項目根目錄 執(zhí)行npm install安裝依賴模塊run the app:? $ DEBUG=APIServer:* npm start//告訴我們啟動服務器
執(zhí)行如下命令:
1.cd APIServer//進入項目根目錄2.npm install//安裝依賴
我們回到桌面 你將看到一個APIServer目錄 我在這里使用Sublime Text打開
APIServer
/bin:用來啟動應用(服務器)
/public: 存放靜態(tài)資源目錄
/routes:路由用于確定應用程序如何響應對特定端點的客戶機請求,包含一個 URI(或路徑)和一個特定的 HTTP 請求方法(GET疏叨、POST 等)潘靖。每個路由可以具有一個或多個處理程序函數(shù),這些函數(shù)在路由匹配時執(zhí)行蚤蔓。
/views: 模板文件所在目錄 文件格式為.jade
目錄app.js程序main文件 這個是服務器啟動的入口
二 啟動服務器
首先啟動服務器
npm start//啟動服務器
服務器啟動
啟動完成后終端將輸出 node ./bin/www
在瀏覽器中訪問http://localhost:3000/
瀏覽器輸出
三 基本使用
打開app.js 這里介紹下主要代碼
varexpress =require('express');varpath =require('path');varfavicon =require('serve-favicon');varlogger =require('morgan');varcookieParser =require('cookie-parser');varbodyParser =require('body-parser');varapp = express();///=======路由信息 (接口地址)開始 存放在./routes目錄下===========//varroutes =require('./routes/index');//home page接口varusers =require('./routes/users');//用戶接口app.use('/', routes);//在app中注冊routes該接口 app.use('/users', users);//在app中注冊users接口///=======路由信息 (接口地址 介紹===========/////=======模板 開始===========//// view engine setupapp.set('views', path.join(__dirname,'views'));? app.set('view engine','jade');///=======模板 結束===========//
當我們在瀏覽器中 訪問http://localhost:3000/調用的就是index中的接口
我們打開index.js就可以看到該接口的定義:
varexpress =require('express');varrouter = express.Router();//定義一個get請求 path為根目錄/* GET home page. */router.get('/',function(req, res, next){? ? res.render('index', {title:'Express'});});module.exports = router;
定義一個路由的基本格式為:
app.METHOD(PATH,HANDLER)
其中:
app 是 express 的實例卦溢。
METHOD是HTTP 請求方法。
PATH 是服務器上的路徑。
HANDLER 是在路由匹配時執(zhí)行的函數(shù)单寂。
以上的定義代表
在根路由 (/) 上(應用程序的主頁)對 GET 請求進行響應:
是不是明白了贬芥?
如果我們想要實現(xiàn)一個獲取用戶信息接口該怎么寫呢?
很簡單在 routes目錄下創(chuàng)建一個user.js文件內容如下:
定義一個User模型
functionUser(){this.name;this.city;this.age;}module.exports = User;
User
切換到users.js文件
在文件頂部添加
varURL =require('url');
并繼續(xù)添加如下內容:
router.get('/getUserInfo',function(req, res, next){varuser =newUser();varparams = URL.parse(req.url,true).query;if(params.id =='1') {? ? user.name ="ligh";? ? user.age ="1";? ? user.city ="北京市";}else{? ? ? user.name ="SPTING";? ? user.age ="1";? ? user.city ="杭州市";}varresponse = {status:1,data:user};? res.send(JSON.stringify(response));});
解釋下重點:
獲取url參數(shù) 依賴于url模塊 使用前需要使用require('url')varparams = URL.parse(req.url,true).query;
getUserInfo API
由于users.js路由信息已經(jīng)在app.js注冊
停止服務器 重新start服務器即可直接訪問
調用方式
http://localhost:3000/users/getUserInfo?id=1
或者
http://localhost:3000/users/getUserInfo?id=2
響應數(shù)據(jù)
你是不是注意到我們訪問的方式為users/getUserInfo?id=1 而不是基于根
原因是我們在app.js注冊方式為app.use('/users', users);
我們可以利用這種方式 開發(fā)模塊功能 比如 你有另外一個模塊為msg
我們注冊為:app.use('/msgs', msgs);
調用方式為
http://localhost:3000/msgs/getUserMsgs?id=1
這里我們寫死了返回數(shù)據(jù) 并沒有查詢數(shù)據(jù)庫
當然NodeJS具備訪問mysql的能力 但不是本篇文章的介紹范圍