「Node」Node.js+express 4.x基本使用

  • 一、新建node項目并實現訪問
  • 二、在express4.x下,讓ejs模板文件,使用擴展名為html的文件
  • 三、實現路由功能
  • 四、session使用
  • 五、頁面訪問控制及提示
  • 六、代碼下載地址
一、新建node項目并實現訪問

1.選擇一個工程目錄,通過命令行進入工程目錄

2.全局安裝express 命令:npm install -g express

3.使用express命令創建工程并支持ejs 命令:express -e myproject

該命令執行完后,根據提示安裝依賴包,然后使用命令:SET DEBUG = myproject:* &npm start 啟動程序

在瀏覽器輸入localhost:3000訪問新建的項目

二、在express4.x下,讓ejs模板文件,使用擴展名為html的文件

1.加載依賴

var ejs = require('ejs'); 

2.修改配置

/*
 * 定義EJS模板引擎和模板文件位置,也可以使用jade或其他模型引擎
 */
//app.set('views', path.join(__dirname, 'views'));
// app.set('view engine', 'ejs');
/**
 * 把上面兩行 改成下面三行 頁面使用.html文件
 */
app.set('views', path.join(__dirname, 'views/'));
app.engine('.html',ejs.renderFile);
app.set('view engine', 'html');// app.set('view engine', 'ejs'); </pre>
三、實現路由功能

1.加載路由控制

app.js

/**
 *  加載路由控制
 */
var routes = require('./routes/index');</pre>

2.配置路由

app.js

/**
 * 匹配路徑和路由
 */ app.use('/', routes);  //home page
app.use('/login', routes);  //login page
app.use('/doLogin', routes);  //doLogin
app.use('/logout', routes);  //logout
app.use('/welcome', routes);  //welcome page</pre>

3.實現路由邏輯

routes/index.js

var express = require('express');
var router = express.Router();
/* home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});
/* login page. */
router.get('/login', function(req, res, next) {
  res.render('login', { title: 'login' });
});
/* doLogin */
router.post('/doLogin', function(req, res, next) {
    var user={
        username:'admin',
        password:'admin'
 }
    if(req.body.username===user.username && req.body.password===user.password){ res.redirect('welcome');
    }else{ return res.redirect('/login');
    }
});
/* logout */
router.get('/logout', function(req, res, next) { res.redirect('/login');
});
/* welcome page. */
router.get('/welcome', function(req, res, next) { res.render('welcome', { title: 'welcome' });
}); 
四、session使用

1.加載依賴

app.js

var cookieSession = require('cookie-session');

2.配置session

app.js

app.use(cookieSession({
  name: 'session',     //  he name of the cookie to set
 keys: ['key1', 'key2']
}));

3.登錄驗證

成功后,把user存入session;登錄不成功時,把error提示信息存入session

index.js(修改doLogin)

/* doLogin */
router.post('/doLogin', function(req, res, next) {
    var user={
        username:'admin',
        password:'admin'
 }
    if(req.body.username===user.username && req.body.password===user.password){
        req.session.user = user;
        res.redirect('welcome');
    }else{
        req.session.error='username or password error!';
        return res.redirect('/login');
    }
});

4.app.js中增加以下代碼 (這個和中間件有順序問題,應放在中間件之前)

app.use(function(req, res, next){
  res.locals.session = req.session;
  res.locals.user = req.session.user;
  var err = req.session.error;
  delete req.session.error;
  res.locals.message = '';
  if (err) res.locals.message =  err ;
  next();
}); 

5.在html頁面讀取session里面的值

在login.html中加入:

<%- message %> 

當用戶名和密碼輸入不正確的時候,將在代碼處顯示:username or password error!
在welcome.html中加入:

<%- session.user.username %>

該處會顯示:admin

注意:此處也可以寫成<%- user.username %> 或<%= session.user.username %>

五、頁面訪問控制及提示

1.在/welcome上攔截請求,調用authentication()進行認證,不通過則跳轉到login.html并提示:please login

index.js

/* welcome page. */
router.get('/welcome', function(req, res, next) {
    authentication(req, res);
    console.log('wecome___'+ req.session.user);
    res.render('welcome', { title: 'welcome' });
});
function authentication(req, res) {
    console.log('Not login');
    if (!req.session.user) {
        req.session.error='please login';
        return res.redirect('/login');
    }
}
六、代碼下載地址

https://github.com/LiaoXueqing/NodeJs.git

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,786評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,656評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,697評論 0 379
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,098評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,855評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,254評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,322評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,473評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,014評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,833評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,016評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,568評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,273評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,680評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,946評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,730評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,006評論 2 374

推薦閱讀更多精彩內容