Day 47 (Node.js)

1.use static or Router

express.static =>Web 服务器的静态档案置於 public 资料夹 中介城市
use => 挂中介城市

app.use( express.static( "public" ) );

2.EJS

Model = Data (後端)
View = UI (前端) <% %>
Cont roller = Program(使用者请求) (後端)

<% ejs %>

3.EJS安装

npm install ejs


4.EJS 开始使用

程序码:

   //不可更动 set(代号,变成ejs)
   app.set('view engine','ejs')

   //指令输入 网址 显示内容
   app.get("/test",function(req,res){

   //render 搭配 app.set('view engine','ejs')  
   res.render("lab",{   
   })

环境:

Error: Failed to lookup view "lab,{}" in views directory "C:\XXX\Node.js\lab0810express\views"
创资料夹views 建立 .ejs
资料在views内才抓地到


5.EJS 使用 - 注意事项

   res.render("lab",{  // /member/lab
   userName:  "王晓明", 
   twoLines: "<script>alert('ok');</script>",
   twoLines2: "123<br>123",
   scoreList: [100, 90, 59, 100]} )

<% %> 流程控制标签 for while ...

    <% if (userName == "Guest") { %>
    <a href="#">Login</a>
    <% } else { %>
    <a href="#">Member Center</a>
    <% } %>

<%= %> 输出标签(必要时.转译HTML符号)

    <%= userName %><br />
    <%= Date(); %> <br />

<%- %> 输出标签(不会转译HTML符号) ==> 使用到HTML、js用
注意,怕资安问题,小心使用

    <%- twoLines %>
    <%- twoLines2 %>

<%# %> 注释标签


6.嵌入

页首(标题导览)

    <%- include() %>

内容

    <%=  %>

页尾

    <%- include(footer) %>
    <%- include("../shared/footer.txt") %>

7.query.id

ex:
http://localhost:3000/test?id=3
?id=3为使用者输入

    app.get("/test", function (req, res) {

    // 如果找不到ID输出
    if (typeof req.query.id === "undefined") {  //req.query.id 请求把id处理给我
        res.send("ID找不到");                   //res回应找不到
    }
    else {
        res.send(req.query.id);                 //依照此处案例:3
    }
})

8. 把HTML的body抓成物件express.urlencoded

    app.use(express.urlencoded({extended:true}));  //搭配body.userName; 

    app.post("/testPost",function(req,res){

    var data = req.body.userName; 
    //抓index.html的body 抓不到
    //前面要增加urlencoded物件才抓的到body

    res.send("我抓到了" + data);   
    })

9. postman 安装

https://www.postman.com/downloads/

测试程序用
不用注册会员 > SKIP


req(Request:请求)与res(Response:回应)

app.get("/test", function (req, res)

<<:  [WMX3] 5.Start/Stop Communication

>>:  [WMX3] 6.GetEngineStatus

D4 第二周 (回忆篇)

今天会是比较划水的回忆篇,可以斟酌看看。 这周开始正式学习 javascript,然後那时候疫情还没...

Day 22 Todo list

今天将会介绍简易的todo list 功能 新增事项(push将输入值放入阵列) Enter加入资料...

[Day18]程序菜鸟自学C++资料结构演算法 – 线性搜寻法(Linear Search)与二分搜寻法(Half-Interval Search)

前言:资料结构的部分已经到了尾声,今天就要开始初探演算法的搜寻了!间天介绍的这两个搜寻法都是始於入门...

Day29:复习 Channel、Flow

Coroutine 中如果要执行非同步程序,则需要把耗时任务写在 suspend 函式中,并且在一个...

Swift纯Code之旅 Day14. 「TableView(5) - 点击TableViewCell」

前言 我们现在画面都已经跟Iphone内建的闹钟一样了,但虚有其表是不行的, 马上来实作TableV...