亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Express + Ejs實(shí)現(xiàn)一個(gè)簡(jiǎn)單的WebServer

Tonny / 2882人閱讀

摘要:最近在看,讀完官方的起步教程后想著該自己折騰點(diǎn)東西,就先用實(shí)現(xiàn)一個(gè)超簡(jiǎn)單的,主要記錄下思路。先推薦一個(gè)入門(mén)級(jí)的簡(jiǎn)單實(shí)戰(zhàn)項(xiàng)目地址。不過(guò)鑒于初學(xué),自身的思路肯定不會(huì)是最佳實(shí)踐,慢慢積累。

最近在看node.js,讀完官方的起步教程后想著該自己折騰點(diǎn)東西,就先用express + ejs實(shí)現(xiàn)一個(gè)超簡(jiǎn)單的webserver,主要記錄下思路。先推薦一個(gè)nodejs入門(mén)級(jí)的簡(jiǎn)單實(shí)戰(zhàn)項(xiàng)目地址。很適合入門(mén)級(jí)上手:https://github.com/nswbmw/N-b...

思路

因?yàn)楸旧頉](méi)有后端相關(guān)語(yǔ)言開(kāi)發(fā)實(shí)戰(zhàn)經(jīng)驗(yàn),所以學(xué)習(xí)nodejs過(guò)程中,更多是思路和理念的學(xué)習(xí)和理解,語(yǔ)言只是工具。不過(guò)鑒于初學(xué),自身的思路肯定不會(huì)是最佳實(shí)踐,慢慢積累。

實(shí)現(xiàn)一個(gè)簡(jiǎn)單的webserer肯定需要以下幾個(gè)東西:

路由:router 對(duì)于不同請(qǐng)求路徑分發(fā)對(duì)應(yīng)的事件處理程序

事件處理程序 routerHandler 分別處理對(duì)應(yīng)的事件

返回模板 views 處理后返回的模板,這里選用的是服務(wù)端渲染

思路有了,先安裝express和ejs,切換到對(duì)應(yīng)目錄下:npm i express ejs
建立文件目錄:

MyServer
    |__index.js
    |__routers
    |   |__index.js
    |   |__users.js
    |__views
    |   |__users.ejs
    |__node_modules
    |__package.json

index.js:作為入口文件,也作為路由(因?yàn)槭且粋€(gè)簡(jiǎn)單server,可以先這么處理)

routers:存放不同路徑對(duì)應(yīng)的事件處理程序

views:存放模板

關(guān)于express和ejs的使用網(wǎng)上文檔已經(jīng)夠多了,所以只記錄用到的。

1.index.js
const path = require("path");

const express = require("express");
const app = express();

const indexRouter = require("./routers/index");
const usersRouter = require("./routers/users");

app .set("views", path.join(__dirname, "views"))
    .set("view engine", "ejs")
    .use("/",indexRouter)
    .use("/users", usersRouter)
    .listen(666, "127.0.0.1");

path: path是nodejs核心模塊之一,主要處理與文件路徑和目錄相關(guān)的數(shù)據(jù),下面的path.join方法是講參數(shù)中的path片段拼接處理成規(guī)范的文件路徑,其中的__dirname是指當(dāng)前文件所在的完整的絕對(duì)路徑;

express: express基于 Node.js 平臺(tái),快速、開(kāi)放、極簡(jiǎn)的 web 開(kāi)發(fā)框架。這里用到的就是express最典型的的應(yīng)用方式,express返回一個(gè)function(req,res,next);next先不講,app.use簡(jiǎn)單理解就是針對(duì)第一個(gè)參數(shù)對(duì)應(yīng)路徑(如果第一個(gè)參數(shù)是路徑),就執(zhí)行對(duì)應(yīng)的function;下文中的app.set方法是設(shè)置一些屬性,http://www.expressjs.com.cn/4...;這里設(shè)置了response引用的view(模板)和對(duì)應(yīng)的view engine(模板引擎);

indexRouter/usersRouter: 分別引入不同請(qǐng)求對(duì)應(yīng)的處理函數(shù)以方便調(diào)用;

2.routers/

index.js

const express = require("express");
const router = express.Router();

router.get("/", function(req, res){
    res.send("express is started! this is index!");
})

module.exports = router;

users.js

const express = require("express");
const router = express.Router();

router.get("/:name", function(req, res){
    res.render("users",{
        name: req.params.name,
        id: req.query.id
    });
})

module.exports = router;

這里的思路也很簡(jiǎn)單,引入express,調(diào)用router中間件,
/:name: 這個(gè)其實(shí)是個(gè)占位符,代表的是/前面的字段的值,可以通過(guò)requset.params取到,比如如果訪問(wèn)的是127.0.0.1:666/users/laoli,這里通過(guò)requset.params.name取到的值就是laoli;
req.query: 其實(shí)就是取?后面的參數(shù),比如訪問(wèn)127.0.0.1:666/users/laoli?age=18,這時(shí)通過(guò)req.query.age取到的值就是18;
res.render: 就是取模板,將后一個(gè)ocject中參數(shù)值傳入模板渲染后返回

3.users.ejs



    
    idnex
    


    

<%= name.toUpperCase() %>

hello, <%= name %>, your ID is <%= id %>

ejs模板文件,ejs很簡(jiǎn)單好用,文檔也很多。http://ejs.co/

以上,完成后在命令行中運(yùn)行node index.js,然后頁(yè)面訪問(wèn)127.0.0.1:666/users/laoli?id=18就會(huì)得到如下頁(yè)面:

其中的請(qǐng)求和響應(yīng)如下:

一個(gè)簡(jiǎn)單的webserver算式跑起來(lái)了,當(dāng)然,在此基礎(chǔ)上可以新增一些簡(jiǎn)單的功能,比如表單提交的處理,ajax異步提交并響應(yīng)。這個(gè)接下來(lái)去做嘗試。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/82719.html

相關(guān)文章

  • Express 實(shí)戰(zhàn)(七):視圖與模板:Pug 和 EJS

    摘要:而框架中最常用的兩個(gè)視圖引擎是和。實(shí)際上這些上下文對(duì)象就是會(huì)在視圖中使用到的變量。其實(shí)視圖緩存并不是緩存視圖實(shí)際上它緩存的視圖路徑。根據(jù)默認(rèn)視圖引擎將缺少拓展名的視圖文件補(bǔ)充完整。實(shí)際上存在由不同組織維護(hù)的兩個(gè)不同版本的。 showImg(https://segmentfault.com/img/remote/1460000010821004);前面的內(nèi)容大都是關(guān)于 Express 框...

    wmui 評(píng)論0 收藏0
  • Express 實(shí)戰(zhàn)(三):Express 基礎(chǔ)

    摘要:同樣的的框架中也有被稱為中間件概念。所以,整個(gè)工作流有兩種可能情形另外,這些中間件函數(shù)中部分函數(shù)需要對(duì)響應(yīng)做出響應(yīng)。擴(kuò)展和在原來(lái)基礎(chǔ)上對(duì)和對(duì)象進(jìn)行了功能擴(kuò)展。除了對(duì)響應(yīng)對(duì)象進(jìn)行了拓展之 Express 框架的初衷是為了拓展 Node 內(nèi)置模塊的功能提高開(kāi)發(fā)效率。當(dāng)你深入研究后就會(huì)發(fā)現(xiàn),Express 其實(shí)是在 Node 內(nèi)置的 HTTP 模塊上構(gòu)建了一層抽象。理論上所有 Express...

    KoreyLee 評(píng)論0 收藏0
  • 多屏互動(dòng)——H5 中級(jí)進(jìn)階

    摘要:手機(jī)屏幕朝上,水平靜止放置,軸重力加速度為,為。當(dāng)手機(jī)水平放置,撥動(dòng)手機(jī),使其慢慢旋轉(zhuǎn),重力加速度的數(shù)據(jù)并沒(méi)有變化。四元數(shù)的基本數(shù)學(xué)方程為其中表示旋轉(zhuǎn)角度,表示旋轉(zhuǎn)軸。四元數(shù)表示一個(gè)完整的旋轉(zhuǎn)。 前言 隨著智能硬件的普及,手機(jī),平板,PC甚至路邊的電子廣告牌,現(xiàn)代瀏覽器已經(jīng)無(wú)處不在。在瀏覽器里編織出我們自己的一片天地已經(jīng)輕車(chē)熟路,但是這還不夠,H5賦予了瀏覽器太多的新特性,等待我們?nèi)ナ?..

    wdzgege 評(píng)論0 收藏0
  • 60分鐘學(xué)會(huì)使用Node.js+Express+Ejs+mongoDB

    摘要:安裝完畢后,打開(kāi)終端,在終端分別輸入如下命令,檢測(cè)是否安裝成功。號(hào)會(huì)告訴安裝最新版本。它會(huì)為每一條記錄創(chuàng)建一個(gè)唯一的值。注意我們不需要提前創(chuàng)建這個(gè),它會(huì)在第一次使用的時(shí)候自動(dòng)創(chuàng)建。我們可以使用,這是我最常用的方式。 60分鐘學(xué)會(huì)使用Node.js+Express+Ejs+mongoDB 本文出自從零到壹全棧部落 (Node+Vue+微信公眾號(hào)開(kāi)發(fā))企業(yè)級(jí)產(chǎn)品全棧開(kāi)發(fā)速成周末班首期班(1...

    BicycleWarrior 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<