筆記:關(guān)于express和express-art-template 在node中使用

因為在寫一個前后臺留言板的時候,使用了node框架express,并結(jié)合了express的art-template模板引擎,有些地方不懂,看了官方API和各種博客后.... emmm 還是沒懂,要么就是大神寫的看不太懂,要么就是沒有注釋只有代碼,看的太痛苦惹

在弄明白之后,打算自己寫一個,把自己沒弄明白的東西寫出來整理一下做個筆記,或許還有跟我一樣總是犯些沙雕錯誤的沙雕網(wǎng)友能看到呢...


目錄大概是這樣子的:

結(jié)構(gòu)

鋪頁面

用bs寫好首頁和留言頁后,大概長這樣:
當(dāng)然還咩有把數(shù)據(jù)渲染上去


html中的模板引擎寫法
home.html
post.html

首先先在npm里下好了需要的依賴

這里沒有圖惹,是express art-template bootstrap express-art-template body-parser這樣子

創(chuàng)建好服務(wù)器

加載了express和body-parser

const express=require("express");
const bodyParser=require("body-parser");
let app=express();

配置express-art-template模板

app.engine();

  • 第一個參數(shù):表示當(dāng)渲染以html后綴名的文件時,使用art-template模板引擎渲染
  • require("express-art-template") 相當(dāng)于加載了 express-art-template 加載后用它去渲染html格式的文件
  • express-art-template整合了express和art-template
app.engine("html",require("express-art-template"));

配置body-parser

body-parser 是express的post請求中用來獲得請求體(請求參數(shù))的一種第三方包

因為post請求不會再通過url傳遞參數(shù)了,所以就使用body-parser來獲取了,配置之后會給請求中的req添加一個body屬性來獲取請求參數(shù)(獲取頁面提交表單的內(nèi)容)


app.use(bodyParser.urlencoded({ extended: false }));
// parse application/json
app.use(bodyParser.json());

靜態(tài)資源加載

app.use();

  • 第一個參數(shù)的意思是:以node_modules開頭的網(wǎng)絡(luò)請求:


    一個css文件
  • 第二個參數(shù): 這種類型的資源,會在node_modules文件夾下尋找它的文件然后加載


    查看node_modules
  • ./表示當(dāng)前

app.use("/node_modules",express.static("./node_modules"));

寫一個json

用來寫留言的,json放入data 在home.html里渲染

let comments = [
    {
        name: '張三',
        message: '今天天氣不錯唤殴!',
        dateTime: '2015-10-16'
    },
    {
        name: '張三2',
        message: '今天天氣不錯滞谢!',
        dateTime: '2015-10-16'
    },
    {
        name: '張三3',
        message: '今天天氣不錯!',
        dateTime: '2015-10-16'
    },
    {
        name: '張三4',
        message: '今天天氣不錯!',
        dateTime: '2015-10-16'
    },
    {
        name: '張三5',
        message: '今天天氣不錯宇整!',
        dateTime: '2015-10-16'
    }
];

let data={
    list:comments
};

處理請求(get,post兩種方法)

app.get()

express的get方法 就是express里的路由

  • 第一個參數(shù):是你要訪問的路徑
  • 第二個參數(shù):函數(shù),你要訪問這個路徑后做的操作

res.render(); 渲染方法

res對象本身是沒有render方法的,當(dāng)配置了express-art-template才會給其添加此方法

  • 第一個參數(shù):你要渲染的頁面(寫views目錄下的相對路徑) 這里的views可以通過set方法修改


    查看views

記錄下掉的坑,views文件是可以改變路徑的,如果使用官方推薦的結(jié)構(gòu),可以默認(rèn)不寫

app.set("views","設(shè)置的render的默認(rèn)路徑")
  • 第二個參數(shù):你要渲染上去的數(shù)據(jù)(一定要是json格式)

我犯的沙雕錯誤:傳入了一個數(shù)組...看了快半個小時才發(fā)現(xiàn),真的是要哭了,對不起我的頭發(fā)!
//加載主頁
app.get("/",(req,res)=>{
    res.render("home.html",data);
});
//加載留言頁
app.get("/post",(req,res)=>{
    res.render("post.html");
});

現(xiàn)在用數(shù)據(jù)已經(jīng)把home.html和post.html渲染好啦 大概長這樣:

這里可以用端口號訪問了,點擊發(fā)布留言進(jìn)入到post.html,輸入留言了


home.html

輸入留言后,點擊post.html中的submit提交的數(shù)據(jù),這里就得到提交的數(shù)據(jù)做處理,再跳轉(zhuǎn)回首頁顯示

app.post(); express里的post方法
res.redirect();express里封裝好的重定向方法,參數(shù)是重定向的路徑

req.body就獲得到了我在頁面提交數(shù)據(jù)傳遞過來的參數(shù),然后再添加一個鍵值對,把這條新提交的數(shù)據(jù)添加入存留言的那個json

app.post("/mes",(req,res)=>{
    //post方法獲取到了請求參數(shù)
    // console.log(req.body);
    //req.body.dateTime 添加一個鍵值對
    req.body.dateTime="2015-10-16";
    comments.unshift(req.body);
    //重定向 參數(shù)是重定向的路徑
    res.redirect("/");
});

寫個端口號

app.listen();

app.listen(7000);

就寫完了~

大概長這樣了,沒有數(shù)據(jù)庫,沒有專門保存數(shù)據(jù)的文件,只是用來學(xué)習(xí)express和模板引擎的一個練習(xí),雖然很菜,但還是覺得自己棒棒的,嗯 干巴爹

嘿嘿
QQ圖片20181127195841.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末般卑,一起剝皮案震驚了整個濱河市匠抗,隨后出現(xiàn)的幾起案子澳叉,更是在濱河造成了極大的恐慌,老刑警劉巖窄绒,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贝次,死亡現(xiàn)場離奇詭異,居然都是意外死亡颗祝,警方通過查閱死者的電腦和手機(jī)浊闪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來螺戳,“玉大人搁宾,你說我怎么就攤上這事【笥祝” “怎么了盖腿?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我翩腐,道長鸟款,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任茂卦,我火速辦了婚禮何什,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘等龙。我一直安慰自己处渣,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布蛛砰。 她就那樣靜靜地躺著罐栈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪泥畅。 梳的紋絲不亂的頭發(fā)上荠诬,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天,我揣著相機(jī)與錄音位仁,去河邊找鬼柑贞。 笑死,一個胖子當(dāng)著我的面吹牛聂抢,可吹牛的內(nèi)容都是我干的凌外。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼涛浙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了摄欲?” 一聲冷哼從身側(cè)響起轿亮,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎胸墙,沒想到半個月后我注,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡迟隅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片崇裁。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡础拨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吼野,到底是詐尸還是另有隱情校哎,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站闷哆,受9級特大地震影響腰奋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜抱怔,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一劣坊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧屈留,春花似錦局冰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至乍狐,卻和暖如春赠摇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背浅蚪。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工藕帜, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人惜傲。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓洽故,卻偏偏與公主長得像,于是被迫代替她去往敵國和親盗誊。 傳聞我的和親對象是個殘疾皇子时甚,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容