node笔记 --祈粼
命名规则:文件或函数或变量命名只能以字母开头
模块:
一般都是一个JS文件一个模块,而多个JS文件之间是可以相互require的(也就是相互引用),他们共同实现了一个大的功能
在Node.js当中,一个JavaScript文件中定义的变量或函数,都只在这个当前的文件内有效,也可以理解为,每个JS文件都是一个闭包结构,所以当我们需要从此JS文件外部引用这些变量或函数的时候,必须使用exports对象进行对象的暴露,而调用者需用通过require()命名来引入这个JavaScript文件
A文件 --require--> B文件 ---require--> C文件
Node.js中exports与module.exports的区别
每一个node.js执行文件
都会自动创建一个module对象
同时module对象都会创建一个名为exports的属性
它的初始值都是{}
exports就是module.exports
一般require返回的是module.exports,在module.exports上可以导出函数、对象实例、基本类型的变量等,因此,一般就是用module.exports作为模块的导出
如果想用exports作为模块的返回,那么就为它设置一个属性,并且不要在module.exports上同时导出同名的属性或者函数实例等(会替代exports)
关于 require 导入路径问题
一般用require导入的文件路径都需要加./
如果不加则会去node_mudules文件里面查找 同级如果没有node_mudules文件会向上依次查找
//npm install silly-datetime
const sd = require("silly-datetime");//时间对象
/*
format:两个参数
第一个:时间对象,就是你需要格式化的字符对象
第二个:传入你需要指定的时间格式
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转换为一个对象
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");
网友评论