最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

nodejs:express框架,ejs模塊,動(dòng)態(tài)渲染,中間件,路由,界面跳轉(zhuǎn),終端【詩書畫唱】

2021-04-24 19:44 作者:詩書畫唱  | 我要投稿

前言:Visual Studio Code簡稱為vscode,是一款由微軟研發(fā)的免費(fèi)、開源的跨平臺(tái)文本代碼編輯器,也是目前前端開發(fā)幾乎完美的軟件開發(fā)工具?,F(xiàn)在使用Vscode的人越來越多,憑借著免費(fèi)、開源、跨平臺(tái)的特點(diǎn)收獲了一大批粉絲。界面好看,插件也非常多。

這篇專欄寫了一天半的時(shí)間!求看官們給個(gè)三連!

動(dòng)態(tài)渲染的個(gè)人理解:就是模板(比如表格,無序列表等等的模板)不變,內(nèi)容可變的代碼。


這樣通過node proServlet.js(node 文件名)的cmd命令輸入到終端也可以執(zhí)行文件


內(nèi)容查看:


創(chuàng)建Visual Studio code項(xiàng)目時(shí)的注意事項(xiàng)


告訴你什么是終端


自定義模塊:在js文件中調(diào)用另外一個(gè)js文件中的函數(shù)的代碼例子


創(chuàng)建express項(xiàng)目的代碼例子(更好的自定義要跳轉(zhuǎn)界面的app.get的方法,就是配置路由)


配置路由就是配置訪問地址跳轉(zhuǎn)到對應(yīng)的內(nèi)容,界面等等


require出來的基本都是function函數(shù)類型


doget和dopost的區(qū)別


使用express框架訪問默認(rèn)的index.html的代碼例子(有局限性的跳轉(zhuǎn)的app.use的方法,我展示的例子中可能只能跳轉(zhuǎn)默認(rèn)的index.html界面)


下載ejs模塊實(shí)現(xiàn)動(dòng)態(tài)渲染,中間件,界面跳轉(zhuǎn)




本期必看

1、搭建express框架

2、學(xué)會(huì)設(shè)置路由

3、學(xué)會(huì)使用中間件

4、學(xué)會(huì)使用動(dòng)態(tài)渲染:

創(chuàng)建一個(gè)數(shù)組,包含有商品(id,名稱價(jià)格和單位)的信息,創(chuàng)建一個(gè)名為pro.html的模板,根據(jù)這個(gè)模板可以顯示所有的商品為一個(gè)表格。

let pros = [{id:1,name:'德芙巧克力',price:7.5,unit:'塊'}];

將數(shù)組中的數(shù)據(jù)傳到pro.html模板上去,將它渲染成一個(gè)表格。


個(gè)人注釋:我暫時(shí)把“動(dòng)態(tài)渲染”理解成“由js和html代碼的拼接實(shí)現(xiàn)的可方便改變內(nèi)容的模板代碼”。

多去寫個(gè)人注釋會(huì)對自己更加的方便。


部分學(xué)習(xí)目標(biāo):

1、自定義模塊:在js文件中調(diào)用另外一個(gè)js文件中的函數(shù)

2、express框架


單詞:

音譯:為就我
音譯:死丟丟哦


個(gè)人總結(jié)的注意事項(xiàng):

記得app.use和app.get設(shè)置的訪問地址不要一樣,不然會(huì)訪問不了


教程視頻學(xué)習(xí)記錄

配置路由就是配置訪問地址跳轉(zhuǎn)到對應(yīng)的內(nèi)容,界面等等

中間件要寫在路由配置前面。

get的添加方式
?


set方法類似于setattribute方法,setattribute方法在JavaWeb中傳參等等時(shí)會(huì)常常用到。而set方法在express框架的傳參中可能常常用到。


這個(gè)表示8888端口已經(jīng)被占用,同時(shí)啟動(dòng)了多個(gè)服務(wù)器(不可以這樣)。

1.0變1.1說明是進(jìn)行了小的更新,變2.0說明進(jìn)行了大的更新



創(chuàng)建Visual Studio code項(xiàng)目時(shí)的注意事項(xiàng)

不可以打開包含很多項(xiàng)目的總文件夾,因?yàn)檫@樣可能會(huì)導(dǎo)致項(xiàng)目之間產(chǎn)生互相的影響。


npm?install?express?-g
下載express模塊


【-g就是全局的意思,可以達(dá)到一勞永逸,以后創(chuàng)建express的項(xiàng)目后就不用再下express了,不加-g以后就要再下載】

告訴你什么是終端


其實(shí)終端可以當(dāng)作cmd來用cmd命令來下載ejs等的模塊,


在VScode中的終端可以理解為cmd命令窗口


自定義模塊:在js文件中調(diào)用另外一個(gè)js文件中的函數(shù)的代碼例子

平時(shí)打開項(xiàng)目時(shí),不要這樣打開。直接打開的目錄應(yīng)當(dāng)是項(xiàng)目

//demo.js

//引入當(dāng)前文件夾下的module.js中的代碼

//./表示demo.js文件所在的當(dāng)前文件夾

//使用require導(dǎo)入js文件時(shí),可以將.js后綴省略掉

let?m?=?require('./module');

let?num?=?m.add(3,4);

console.log(num);

console.log(m.msg);

//module.js

//exports是一個(gè)內(nèi)置對象,不用定義就可以使用

//表示需要導(dǎo)出的函數(shù)和屬性的對象

//導(dǎo)出一個(gè)函數(shù)

exports.add?=?function(a,b){

????return?a?+?b;

}

//導(dǎo)出一個(gè)屬性

exports.msg?=?'給詩書畫唱三連!Hello?world!\n'

+'看到這句話說明demo.js成功調(diào)用module.js中的內(nèi)容!';




創(chuàng)建express項(xiàng)目的代碼例子(更好的自定義要跳轉(zhuǎn)界面的app.get的方法,就是配置路由)

doget和dopost的區(qū)別


1

npm?install?express?-g
下載express模塊

記得按回車鍵


2

{

????"name":"helloapp",

????"description":"我的第一個(gè)express項(xiàng)目",

????"version":"1.0",

????"private":true,

????"dependencies":{

????????"express":"4.x"

????}

}


let?express=require("express");


let?app=express();


//app.use(express.static(__dirname+"/public"));


app.get("/",function(requst,response){


response.send("歡迎訪問本網(wǎng)站!")


});


app.listen(8888);


console.log("服務(wù)器啟動(dòng)完畢!訪問地址:http://127.0.0.1:8888")

訪問路徑:http://127.0.0.1:8888
不寫就是默認(rèn)訪問地址http://127.0.0.1:8888/
音譯:路尺
let routes = require('./routes/index')(app);其實(shí)是在執(zhí)行函數(shù)


require出來的基本都是function函數(shù)類型


使用express框架訪問默認(rèn)的index.html的代碼例子(有局限性的跳轉(zhuǎn)的app.use的方法,我展示的例子中可能只能跳轉(zhuǎn)默認(rèn)的index.html界面)



<!DOCTYPE?html>

<html?lang="en">

????<head>

????????<meta?charset="UTF-8">

????????<meta?http-equiv="X-UA-Compatible"?content="IE=edge">

????????<meta?name="viewport"?content="width=device-width,?initial-scale=1.0">

????????<title>express框架演示</title>

????</head>

????<body>

????????<h1>Hello?world</h1>

????</body>

</html>


let?express=require("express");


let?app=express();


app.use(express.static(__dirname+"/public"));


//?app.get("/",function(requst,response){


//?response.send("歡迎訪問本網(wǎng)站!")


//?});


app.listen(8888);


console.log("服務(wù)器啟動(dòng)完畢!訪問地址:http://127.0.0.1:8888")

訪問地址:http://127.0.0.1:8888?

下載ejs模塊實(shí)現(xiàn)動(dòng)態(tài)渲染,中間件,界面跳轉(zhuǎn)



npm?install?ejs?-g

記得按回車

//routes/index.js

//專門用來配置路由的文件

module.exports?=?function(app){

????//http://127.0.0.1:8888/

????app.get('/',function(req,res){

????????//在頁面上顯示歡迎訪問本網(wǎng)站

????????//res.send('<h1>歡迎訪問本網(wǎng)站</h1>');

????????//設(shè)置顯示在模板上的數(shù)據(jù)

????????const?a?=?[

????????????{title:'百度',url:'http://www.baidu.com',time:'2021-5-1'},

????????????{title:'淘寶',url:'http://www.taobao.com',time:'2021-11-11'}

????????];

????????//根據(jù)data.html的模板內(nèi)容來顯示頁面

????????res.render('data',{webData:?a,tt:?'動(dòng)態(tài)傳遞的標(biāo)題'});

????});

????//http://127.0.0.1:8888/tologin

????app.get('/tologin',function(req,res){

????????res.send('<h1>登錄頁面</h1>');

????});

????//http://127.0.0.1:8888/reg

????app.get('/reg',function(req,res){

????????res.send('<h1>注冊頁面</h1>');

????});

}

<html>

????<head></head>

????<body>

????????<h1><%=tt?%></h1>

????????<ul>

????????????<%for(let?i?=?0;i?<?webData.length;i?++){?%>

????????????????<li>

????????????????????<a?href='<%=webData[i].url?%>'>

????????????????????????<%=webData[i].title?%>

????????????????????</a>

????????????????????<%=webData[i].time?%>

????????????????</li>

????????????<%}?%>

????????</ul>

????</body>

</html>

//index.js

//導(dǎo)入express模塊

let?express?=?require('express');

//導(dǎo)入ejs模塊

let?ejs?=?require('ejs');

//獲取框架執(zhí)行對象

let?app?=?express();

//渲染根目錄下的html文件

//如果不執(zhí)行下面的這句代碼,就會(huì)默認(rèn)渲染views目錄下的html文件

//app.set('views',__dirname);

//以html語法規(guī)則來解析指定的html頁面

app.set('view?engine','html');

app.engine('.html',ejs.__express);

//__dirname表示根目錄

//public表示根目錄下的public文件夾

//設(shè)置public/index.html為默認(rèn)首頁

//app.use(express.static(__dirname?+?'/public'));

//添加中間件處理程序

app.use(function(req,res,next){

????console.log('中文亂碼處理');

????//繼續(xù)執(zhí)行后面的中間件

????next();

});

app.use(function(req,res,next){

????console.log('日志處理');

????next();

});

//http://127.0.0.1:8888/login

//當(dāng)輸入的訪問地址中匹配有/login時(shí)才執(zhí)行這個(gè)中間件的代碼

app.use('/login',function(req,res,next){

????console.log('會(huì)話處理');

})

//導(dǎo)入路由配置方法1:

//let?routes?=?require('./routes/index');

//routes(app);

//導(dǎo)入路由配置方法2(更簡單的寫法):

let?routes?=?require('./routes/index')(app);

//設(shè)置服務(wù)器的端口號

app.listen(8888);


console.log('服務(wù)器啟動(dòng)完畢,訪問地址http://127.0.0.1:8888/');

訪問http://127.0.0.1:8888/login時(shí)的結(jié)果
http://127.0.0.1:8888/tologin
http://127.0.0.1:8888/reg
http://127.0.0.1:8888/



本期必看

1、搭建express框架

2、學(xué)會(huì)設(shè)置路由

3、學(xué)會(huì)使用中間件

4、學(xué)會(huì)使用動(dòng)態(tài)渲染:

創(chuàng)建一個(gè)數(shù)組,包含有商品(id,名稱價(jià)格和單位)的信息,創(chuàng)建一個(gè)名為pro.html的模板,根據(jù)這個(gè)模板可以顯示所有的商品為一個(gè)表格。

let pros = [{id:1,name:'德芙巧克力',price:7.5,unit:'塊'}];

將數(shù)組中的數(shù)據(jù)傳到pro.html模板上去,將它渲染成一個(gè)表格。

module.exports?=?function(app){


????app.get('/pro',function(req,res){


let?pros?=?[{id:1,name:'德芙巧克力',price:7.5,unit:'塊'},

{id:2,name:'德芙巧克力2',price:7.6,unit:'塊'},

{id:3,name:'德芙巧克力3',price:7.7,unit:'塊'}];


????????res.render('proViews',{webData:?pros});

????????//——>這里的proViews指的是views文件夾下的proViews.html,就是要跳轉(zhuǎn)的界面

????});

??

}

<html>

????<head></head>

????<body>

???<!--{id:2,name:'德芙巧克力2',price:7.6,unit:'塊'}???-->

????????<table?border="1px">

?????????<tr>?<th>商品編號</th>?<th>商品名稱</th>

?????????????<th>商品價(jià)格</th>?<th>商品單位</th></tr>??

????????????<%for(let?i?=?0;i?<?webData.length;i?++){?%>

????????????????<tr>

????????????????????<td>

????????????????????????<%=webData[i].id?%>

????????????????????</td>

????????????????????<td>

????????????????????????<%=webData[i].name%>

????????????????????</td>

????????????????????<td>

????????????????????????<%=webData[i].price%>

????????????????????</td>

????????????????????<td>

????????????????????????<%=webData[i].unit%>

????????????????????</td>

????????????????</tr>

????????????<%}?%>

????????</table>

????</body>

</html>


let?express?=?require('express');

let?ejs?=?require('ejs');

let?app?=?express();

app.set('view?engine','html');

app.engine('.html',ejs.__express);


//個(gè)人注釋:“./routes/pro”指的是routes文件夾下的pro.js文件:

let?routes?=?require('./routes/pro')(app);

//——>這段代碼不可以少,其余部分基本是固定的


app.listen(8888);


console.log('服務(wù)器啟動(dòng)完畢,訪問地址http://127.0.0.1:8888/pro');

//——>這個(gè)訪問路徑和routes文件夾下的pro.js文件中用get設(shè)置的訪問路徑有關(guān)


http://127.0.0.1:8888/pro


nodejs:express框架,ejs模塊,動(dòng)態(tài)渲染,中間件,路由,界面跳轉(zhuǎn),終端【詩書畫唱】的評論 (共 條)

分享到微博請遵守國家法律
曲沃县| 临沧市| 郯城县| 古丈县| 内江市| 开阳县| 边坝县| 日土县| 比如县| 福安市| 曲沃县| 肇庆市| 竹溪县| 界首市| 巫溪县| 临湘市| 文登市| 虎林市| 广水市| 萝北县| 桂阳县| 宝清县| 蓝山县| 渭南市| 江永县| 巩留县| 丰都县| 三都| 武胜县| 莱州市| 江西省| 宜城市| 满洲里市| 万宁市| 杭锦后旗| 祁门县| 横峰县| 常熟市| 顺义区| 理塘县| 安泽县|