iT邦幫忙

2022 iThome 鐵人賽

DAY 1
1
自我挑戰組

30 天線上自學前端系列 第 12

[Day 12] [Express] 用 Express 和 Node 做一個 BMI 計算機

  • 分享至 

  • xImage
  •  

OK~ 我們在昨天 [Day 11] [Express] 用 Express 和 Node 做一個簡單的 web application 做好了一個只有加法的計算機,今天終於要來到這個章節的最後一關挑戰~

這個章節的挑戰是做一個 BMI 計算機。

以下是比較重要需要照著做的規定:

  • Create a new file called bmiCalculator.html inside the Calculator folder from the last challenge
  • Add an HTML form, this form will make a post request to our server at the route /bmicalculator. The form will have 2 inputs, weight and height with placeholder text that tell the user what they should type into which text box.
  • Add a button which says “Caculate BMI”

之前上 Javascript 已經有練習過 BMI Challenge,所以我直接複製貼上:

/* If my weight is 65Kg and my height is 1.8m, I should be able to call your function like this:

var bmi = bmiCalculator(65, 1.8); 

bmi should equal 20 when it's rounded to the nearest whole number.

*/

function bmiCalculator(weight,height) {

    var number = weight / (height * height);
    console.log(number)

    return number
    
}


var bmi = bmiCalculator(65, 1.8); 
console.log("ANSWER: >>>>>>>> " + Math.round(bmi))

好的~ 再來就是把前端弄好,要有兩個輸入匡,分別是身高、體重,而且要有 placeholder 來提示說要輸入什麼。還有,按鈕要叫「Caculate BMI」。

https://ithelp.ithome.com.tw/upload/images/20220911/20151588vlEQn0ITzy.png

再來是計算結果,題目要的格式是「Your BMI is n」,所以整個計算邏輯會長這樣:

app.post('/bmiCalculator', function(request, response){
    var height = Number(request.body.height);
    var weight = Number(request.body.weight);
    var result = weight / (height * height);

    response.send('Your BMI is ' + result)
})

喔喔差點忘了,app.get 還沒打好,趕快來補一下:

app.get('/bmiCalculator', function(request, response){
    response.sendFile(__dirname + '/bmiCalculator.html')
}) 

OK,現在來看看直接複製貼上的結果如何 XD

Your BMI is 20.20493048039853485403

小數點後面的位數太多,所以加上 Math.floor():

Your BMI is 20

太好了~ Express.js with Node.js 章節終於結束!

目前進度:

鐵人賽目標是 9/30 上到課程的第 371 小節,目前在 238 小節結束。


上一篇
[Day 11] [Express] 用 Express 和 Node 做一個簡單的 web application
下一篇
[Day 13] [APIs] API 的基本介紹
系列文
30 天線上自學前端72
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言