Node.js學(xué)習(xí)筆記1-基礎(chǔ)入門

  • 注意: 撰寫本文目的主要是為了給自己做一個備忘錄,如果你學(xué)過Node.js并且希望從本文中找到一些忘記的知識點,那么你可以閱讀本文章。由于文章內(nèi)講解并不是很多,因此此文章并不適合小白入門使用。

1.初識Node

1.1.HelloWorld

//require表示引包,引包就是引用自己的一個特殊功能
var http = require("http");

var server = http.createServer(function(req, res) {
  res.writeHead(200, { "Content-type": "text/html;charset=UTF-8" });
  res.end("哈哈哈哈,這是我的第一個Node頁面");
});

//運行服務(wù)器,監(jiān)聽3000端口(端口號可以任意改動)
server.listen(3000, "127.0.0.1");

1.2.使用http

//HTTP模塊
var http = require("http");

http.createServer(function(req, res) {
    res.writeHead(200, {
      "Content-Type": "text/html;charset=UTF-8"
    });
    res.write("<h1>我是主標題</h1>");
    res.write("<h2>我是2標題</h2>");
    res.write("<h3>我是3標題</h3>");
    res.end("訪問結(jié)束");
  })
  .listen(3000, "127.0.0.1");

1.3.解析URL

//URL模塊
var http = require("http");
var url = require("url");

var server = http.createServer(function (req, res) {
    res.writeHead(200, {
        "Content-Type": "text/html;charset=UTF-8"
    });
    var pathname = url.parse(req.url).pathname;
    var query = url.parse(req.url, true).query;
    var id = query.id;

    console.log(pathname);
    console.log(query);
    console.log("id=" + id);
    res.end("訪問結(jié)束");
});
server.listen(3000, "127.0.0.1");

1.4.根據(jù)請求URL進行判斷執(zhí)行

  • 首先,列出這個例子是為了告訴讀者有這種寫法,這種根據(jù)URL進行判斷執(zhí)行的方法是非常低效的,不僅每個需要對每一個URL進行判斷,還要對每一個選擇的文件請求進行判斷,試想一下,你的項目中需要顯示幾張圖片,那么就需要分別對著幾張圖片進行URL判斷并加載此圖片。
//require表示引包,引包就是引用自己的一個特殊功能
var http = require("http");
var fs = require("fs");

//創(chuàng)建服務(wù)器,參數(shù)是一個回調(diào)函數(shù),表示如果有請求進來,要做什么
var server = http.createServer(function (req, res) {
  if (req.url == "/yuan") {
    fs.readFile("./test.html", function (err, data) {
      //設(shè)置http頭部,狀態(tài)碼是200,文件類型是html
      res.writeHead(200, {
        "Content-Type": "text/html;charset=UTF-8"
      });
      // res.end("哈哈哈哈,這是我的第一個Node頁面");
      res.end(data);
    });
  } else if (req.url == "/bbb.css") { //html文件里涉及到訪問文件
    fs.readFile("./css.css", function (err, data) {
      //設(shè)置http頭部,狀態(tài)碼是200,文件類型是html
      res.writeHead(200, {
        "Content-Type": "text/css;charset=UTF-8"
      });
      // res.end("哈哈哈哈,這是我的第一個Node頁面");
      res.end(data);
    });
  } else {
    res.writeHead(404, {
      "Content-Type": "text/html;charset=UTF-8"
    });
    res.end("找不到頁面");
  }
});

//運行服務(wù)器,監(jiān)聽3000端口(端口號可以任意改動)
server.listen(3000, "127.0.0.1");

其中的test.html與test2.html文件

<!-- test.html文件省略了一些內(nèi)容 -->
<head>
  <style>
    div {
      width: 200px;
      height: 200px;
      background-color: blue;
      border-radius: 50%;
    }
  </style>
  <link rel="stylesheet" type="text/css" href="bbb.css">
</head>
<body>
  <img src="abb.jpg" alt="">
  <div></div>
</body>

<!-- test2.html文件省略了一些內(nèi)容 -->
<head>
  <style>
    div {
      width: 200px;
      height: 200px;
      background-color: yellow;
    }
  </style>
</head>
<body>
  <div></div>
</body>

請求結(jié)果:

/yuan以及圖片請求結(jié)果

2.表單信息提交測試

  • 本小節(jié)主要是測試在網(wǎng)頁中提交一些表單信息,并使用Node.js作為后端程序接收信息。

Node代碼:

//信息提交測試
var http = require("http");
var url = require("url");

var server = http.createServer(function(req, res) {
  res.writeHead(200, {
    "Content-Type": "text/html;charset=UTF-8"
  });
  var queryObj = url.parse(req.url, true).query;
  var name = queryObj.name;
  var age = queryObj.age;
  var sex = queryObj.sex;

  res.write("姓名:" + name + " 年齡:" + age + " 性別:" + sex);

  console.log("姓名:" + name + " 年齡:" + age + " 性別:" + sex);
  res.end();
});
server.listen(3000, "127.0.0.1");

前端body文件:

<body>
  <form action="http://127.0.0.1:3000/" method="GET">
    姓名:<input name="name" type="text"></br>
    年齡:<input name="age" type="text"></br>
    性別:<input name="sex" type="radio" value="男"> 男
    <input name="sex" type="radio" value="女"> 女</br>
    <input type="submit">
  </form>
</body>

3.路由-router

  • 下面給出的示例代碼只能起到幫助你理解路由的概念,使用這樣的路由方式進行生產(chǎn)并不是一個好的選擇,但這并不代表這段代碼毫無意義,請瀏覽并理解這段代碼。

路由-router示例:

var http = require("http");

var server = http.createServer(function (req, res) {
  //得到url
  var userurl = req.url;
  res.writeHead(200, {
    "Content-Type": "text/html;charset=UTF-8"
  });

  //substr函數(shù)來判斷此時的開頭
  if (userurl.substr(0, 9) == "/student/") {
    var studentid = userurl.substr(9);
    if (/^\d{10}$/.test(studentid)) {
      res.end("您需要查詢學(xué)生在信息,id為" + studentid);
    } else {
      res.end("學(xué)生學(xué)號位數(shù)不對")
    }
  } else if (userurl.substr(0, 9) == "/teacher/") {
    var teacherid = userurl.substr(9);
    if (/^\d{6}$/.test(teacherid)) {
      res.end("您需要查詢老師在信息,id為" + teacherid);
    } else {
      res.end("老師學(xué)號位數(shù)不對")
    }
  }
});
server.listen(3000, "127.0.0.1");

查詢結(jié)果:

查詢結(jié)果

文集推薦:

Java基礎(chǔ)方法集1
Python基礎(chǔ)知識完整版
Spring Boot學(xué)習(xí)筆記
Linux指令進階
Java高并發(fā)編程
SpringMVC基礎(chǔ)知識進階
Mysql基礎(chǔ)知識完整版
健康管理系統(tǒng)學(xué)習(xí)花絮(學(xué)習(xí)記錄)
Node.js基礎(chǔ)知識(隨手筆記)
MongoDB基礎(chǔ)知識
Dubbo學(xué)習(xí)筆記
Vue學(xué)習(xí)筆記(隨手筆記)

聲明:發(fā)表此文是出于傳遞更多信息之目的。若有來源標注錯誤或侵犯了您的合法權(quán)益,請作者持權(quán)屬證明與本我們(QQ:981086665;郵箱:981086665@qq.com)聯(lián)系聯(lián)系,我們將及時更正、刪除,謝謝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容