- 注意: 撰寫本文目的主要是為了給自己做一個備忘錄,如果你學(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)系,我們將及時更正、刪除,謝謝。