node筆記 --祈粼
命名規(guī)則:文件或函數(shù)或變量命名只能以字母開頭
模塊:
一般都是一個JS文件一個模塊,而多個JS文件之間是可以相互require的(也就是相互引用),他們共同實現(xiàn)了一個大的功能
在Node.js當中,一個JavaScript文件中定義的變量或函數(shù),都只在這個當前的文件內(nèi)有效,也可以理解為,每個JS文件都是一個閉包結(jié)構(gòu),所以當我們需要從此JS文件外部引用這些變量或函數(shù)的時候,必須使用exports對象進行對象的暴露,而調(diào)用者需用通過require()命名來引入這個JavaScript文件
A文件 --require--> B文件 ---require--> C文件
Node.js中exports與module.exports的區(qū)別
每一個node.js執(zhí)行文件
都會自動創(chuàng)建一個module對象
同時module對象都會創(chuàng)建一個名為exports的屬性
它的初始值都是{}
exports就是module.exports
一般require返回的是module.exports,在module.exports上可以導出函數(shù)、對象實例、基本類型的變量等,因此,一般就是用module.exports作為模塊的導出
如果想用exports作為模塊的返回,那么就為它設置一個屬性,并且不要在module.exports上同時導出同名的屬性或者函數(shù)實例等(會替代exports)
關(guān)于 require 導入路徑問題
一般用require導入的文件路徑都需要加./
如果不加則會去node_mudules文件里面查找 同級如果沒有node_mudules文件會向上依次查找
//npm install silly-datetime
const sd = require("silly-datetime");//時間對象
/*
format:兩個參數(shù)
第一個:時間對象,就是你需要格式化的字符對象
第二個:傳入你需要指定的時間格式
year:年
month:月
day:天
hour:小時
Minute:分鐘
Y:年 M:月 D:日 H:小時 m:分鐘(注意大小寫)
*/
let now= sd.format(new Date(),"YYYYMMDDHHmm");
console.log("北京時間:"+ now);
nodeJS 表單提交 POST請求
HTML :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>表單提交</title>
<link rel="stylesheet" href="css/master.css"/>
</head>
<body>
<div class="wrapper">
<div class="title">注冊中心</div>
<form class="form" action="http://localhost:3000/dopost" method="post">
<ul>
<li><input type="text" name="name" placeholder="請輸入您的名字" class="txt"/></li>
<li><input type="password" name="password" placeholder="請輸入您的密碼" class="txt"/></li>
<li><input type="submit" placeholder="" class="btn"/></li>
</ul>
<div class="cl"></div>
</form>
</div>
</body>
</html>
JS:
const http = require("http");
const queryString = require("querystring"); // 模塊提供用于解析和格式化 URL 查詢字符串的實用工具
const server = http.createServer((req, res) => {
console.log(req.method);//req.method:獲取提交的方式:get/post
if (req.url == "/dopost" && req.method.toLowerCase() == "post") {
/*
下面這個公式是post的請求接收公式
這里只接收了一小段,防止一個過大的請求處理阻塞了這個進程
*/
//傳輸中
let allData = "";
/*
我們在本地電腦可能只會看到一次分段處理,但是在服務器端可能會有N個
*/
req.addListener("data", chunk => {
allData += chunk;
});
//傳輸完畢
req.addListener("end", () => {
let dataString = allData.toString();
console.log("allData loading....");
console.log(allData);
//將dataString轉(zhuǎn)換為一個對象
let dataObj = queryString.parse(dataString);
console.log("dataObj loading.....");
console.log(typeof dataObj);
console.log("名字:" + dataObj.name);
console.log("密碼:" + dataObj.password);
res.end("success");
});
}
});
server.listen(3000, "127.0.0.1");