nodejs 圖解express+supervisor+ejs的用法(推薦)
通過node js自帶的http模塊搭建了一個(gè)簡(jiǎn)易的服務(wù)器,實(shí)際在開發(fā)中,一般用的是express框架,本文我們就來講講項(xiàng)目開發(fā)中必備不可少的幾樣?xùn)|西:
•服務(wù)器( express )
•路由( express.Router )
•模板引擎( ejs )
•當(dāng)然再加上數(shù)據(jù)庫,就可以完成一個(gè)mvc的web應(yīng)用了,數(shù)據(jù)庫的用法,后期我會(huì)寫一個(gè)項(xiàng)目
一、首先,新建一個(gè)項(xiàng)目文件夾( ghostwu ),在命令行下切換到該目錄,用npm init --yes 初始化package.json文件

安裝express: npm install express --save
二、新建index.js文件,輸入以下代碼
var express = require('express');
var app = express();
app.get('/', function(req, res) {
res.send( 'welcome to study express -by ghostwu' );
}).listen( 8080 );
第一行,加載express模塊
第二行,開啟web服務(wù)器
第三行,web服務(wù)器監(jiān)聽8080端口, 當(dāng)通過瀏覽器輸入( http://localhost:8080 ) 就會(huì)看到這段信息:welcome to study express -by ghostwu
三、如果你寫過node服務(wù)器,你就會(huì)發(fā)現(xiàn)一個(gè)問題,每次修改之后,都要重啟服務(wù)器,一般來說,我們修改文件之后,保存,刷新網(wǎng)頁就能看到修改,需要達(dá)到這樣的效果,我們就要安裝supervisor,這個(gè)相當(dāng)于webpack的熱加載,我們采用全局安裝: npm install -g supervisor,安裝完成之后,我們以后就這樣運(yùn)行服務(wù)器文件了: supervisor --harmony index

之后修改index.js文件,只要保存,刷新網(wǎng)頁就能馬上看到修改之后的結(jié)果了
四、增加路由處理,修改index.js文件,把代碼修改成如下:
var express = require('express');
var app = express();
app.get('/', function(req, res) {
res.send('hello, express');
});
app.get('/user/:name', function(req, res) {
res.send('hello, ' + req.params.name);
});
app.get('/user/:name/age/:age', function(req, res) {
res.send('info: user:' + req.params.name + ', age:' + req.params.age );
});
app.listen( 8080 );
http://localhost:8080/ ----> 顯示hello, express
http://localhost:8080/user/ghostwu ----->顯示hello, ghostwu
http://localhost:8080/user/ghostwu/age/22 ---->顯示info: user:ghostwu, age:22
:name占位符: 用來接收user后面的值 :age占位符用來接收age后面的值, req.params后面獲取的鍵名就是這個(gè)占位符
如果你學(xué)過php,那么就相當(dāng)于下面這種get接收參數(shù)方式
xxx.php?user=ghostwu&age=22 -----> $_REQUEST['user'] $_REQUEST['age']
五、一般在項(xiàng)目中,路由是需要單獨(dú)分離出來的,便于維護(hù)和擴(kuò)展
新建routers,然后在下面創(chuàng)建index.js和info.js文件
index.js代碼:
var express = require('express');
var router = express.Router();
router.get('/', function(req, res) {
res.send('hello, express');
});
module.exports = router;
info.js代碼:
var express = require('express');
var router = express.Router();
router.get('/:name', function(req, res) {
res.send('hello, ' + req.params.name);
});
router.get('/:name/age/:age2', function(req, res) {
res.send('info: user:' + req.params.name + ', age:' + req.params.age2 );
});
module.exports = router;
ghostwu這個(gè)目錄下面的index.js文件代碼為:
var express = require('express');
var app = express();
var indexRouter = require('./routers/index');
var infoRouter = require('./routers/info');
app.use('/', indexRouter);
app.use('/user', infoRouter);
app.listen(8080);

通過以上的代碼,就完成了路由的分離,把 / 和 /user分別放在index.js,info.js文件,然后導(dǎo)出router對(duì)象,通過app.use找到對(duì)應(yīng)的路由
六、ejs模板的應(yīng)用
安裝: npm install ejs --save
index.js文件:
var path = require('path');
var express = require('express');
var app = express();
var indexRouter = require('./routers/index');
var infoRouter = require('./routers/info');
//設(shè)置模板目錄: views
app.set('views', path.join(__dirname, 'views'));
//設(shè)置模板引擎: ejs
app.set('view engine', 'ejs');
app.use('/', indexRouter);
app.use('/user', infoRouter);
app.listen(8080);
info.js文件
var express = require('express');
var router = express.Router();
router.get('/:name', function(req, res) {
res.render( 'info', {
name : 'ghostwu',
age : 22,
sex : 'man'
});
});
module.exports = router;
第5行res.render渲染模板文件 info.ejs, 第二個(gè)參數(shù)就是數(shù)據(jù)
info.ejs文件
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> 用戶信息: <hr> <ul> <li>用戶名: <%=name%></li> <li>年齡: <%=age%></li> <li>性別: <%=sex%></li> </ul> </body> </html>
<%=變量名%>讀出數(shù)據(jù)
<% code %>:運(yùn)行 JavaScript 代碼,不輸出
<%= code %>: 轉(zhuǎn)義html標(biāo)簽
<%- code %>:不轉(zhuǎn)義html標(biāo)簽
其他ejs用法,結(jié)合手冊(cè)查下


以上這篇nodejs 圖解express+supervisor+ejs的用法(推薦)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- nodejs中Express與Koa2對(duì)比分析
- 使用nodejs+express實(shí)現(xiàn)簡(jiǎn)單的文件上傳功能
- nodejs使用express獲取get和post傳值及session驗(yàn)證的方法
- Nodejs+express+ejs簡(jiǎn)單使用實(shí)例代碼
- 詳解nodejs中express搭建權(quán)限管理系統(tǒng)
- nodejs對(duì)express中next函數(shù)的一些理解
- 基于nodejs+express4.X實(shí)現(xiàn)文件下載的實(shí)例代碼
- 詳解nodejs的express如何自動(dòng)生成項(xiàng)目框架
- nodeJS(express4.x)+vue(vue-cli)構(gòu)建前后端分離實(shí)例(帶跨域)
- Express+Nodejs 下的登錄攔截實(shí)現(xiàn)代碼
- nodejs+express搭建多人聊天室步驟
相關(guān)文章
解決淘寶cnpm 安裝后cnpm不是內(nèi)部或外部命令的問題
今天小編就為大家分享一篇解決淘寶cnpm 安裝后cnpm不是內(nèi)部或外部命令的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05
Node.js實(shí)現(xiàn)的簡(jiǎn)易網(wǎng)頁抓取功能示例
這篇文章主要介紹了Node.js實(shí)現(xiàn)的簡(jiǎn)易網(wǎng)頁抓取功能示例,本文使用了PhantomJS、node-phantomjs等庫實(shí)現(xiàn),需要的朋友可以參考下2014-12-12
如何自定義node版本,實(shí)現(xiàn)node多版本控制方式
這篇文章主要介紹了如何自定義node版本,實(shí)現(xiàn)node多版本控制方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
Node.js折騰記一:讀指定文件夾,輸出該文件夾的文件樹詳解
這篇文章主要介紹了Node.js讀指定文件夾輸出該文件夾文件樹,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
Ubuntu22.04系統(tǒng)下升級(jí)nodejs到v18版本
ubuntu默認(rèn)安裝的nodejs版本比較老,要安裝到最新的,下面這篇文章主要給大家介紹了關(guān)于Ubuntu22.04系統(tǒng)下升級(jí)nodejs到v18版本的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-06-06

