一、commonjs引入模块
默认会添加.js后缀会自动解析.json和.node的文件
1.json 2.node
json是主流的数据传输格式,有特殊规则的字符串
json文件不能用 //注释

二、querystring查询参固定格式的参数
querystring: ?键名=键值&键名=键值&键名=键值;
如:

三、nodejs里如何获取querystring?
通过 req.url获取路径地址;
const http=require("http");// 内置模块
const url=require("url");// node中的内置模块 获取路径地址
const server=http.createServer((req,res)=>{
// console.log(req.url); //会在访问服务器的时候显示地址 【会是乱码】
var obj= url.parse(req.url,true); // 是url里的固定方法 ,格式化url的;转成对象
console.log(obj);
console.log(obj.query);
res.write("hello");
res.end();})
server.listen(8989);

前端获取参数的目的是:
window.location.href 获取地址

window.location.search 地址栏 ?后面的内容

window.location.hash 地址栏 #后面的内容


四、querystring跨页面传参
querystring参数(字符串)转对象
a.html
<button>点击按钮跳转到b.html且传参</button>
<script>
// 1.点击按钮跳转 2.带数据到b页面
let btn=document.querySelector("button");
btn.onclick=function() {
let obj= {username:"zhangsan",age:20}
// 通过querystring 来带参数; 【变量用模板字符串更方便】
// 跳转到b页面并带参数在地址栏中
window.location.href=`./b.html?username=${obj.username}&age=${obj.age}`;
}
</script>
b.html
// 获取携带过来的参数
// 接收querystring参数;
// 查询地址
let str=window.location.search;
// console.log(str);
str=str.substr(1);//删除地址中的?
console.log(str);
console.log(s2o(str)); //{username:"zhangsan", age:20 }
// 把querystring参数转成 对应格式的对象
function s2o(str){
let arr=str.split("&");// 把字符串通过&来切割并返回数组
// console.log(arr); //[username="zhangsan", age=20]
let obj= {}; //创建空数组
arr.forEach(item=>{
let linearr=item.split("=");// 把每一个 username=zhangsan ,age=20 通过=号切割开
// console.log(linearr);
// 把 username age 作为对象的键名 把 zhangsan 、20 作为对象的键值;
obj[linearr[0]] =linearr[1];
// console.log(obj);
// 返还组装好的对象;
return obj;
}

五、地址栏的构成
`http://www.baidu.com` ——> `http://www.baidu.com:80/index?name=123`
协议:http 和 https://域名(localhost,127.0.0.1,外网ip地址):端口 80或是443/地址?参数
http://www.baidu.com/index 和http://www.baidu.com/index?name=123 地址是一样,参数有区别
六、对象转querystring参数
Object.prototype.myname="hello"; // 原型链上添加myname属性
let obj= {
name:"张三",
age:20,
height:"178cm"
}
// obj ------> name=张三&age=20&height=178cm
o2s(obj);
function o2s(obj) {
// let resStr = "";
let arr= []; //通过空数组获得数据,再通过数组方法连接成字符串
for(let key in obj) { // 会循环原型链上的内容 ; for …… in循环对象 也可以循环数组
// 判断属性是否是对象的自身属性;因为for in循环会循环原型链上的内容
// 对象.hasOwnProperty(键名); 判断某个键名是否是自身属性;
if(obj.hasOwnProperty(key)) {
// console.log(key,obj[key]); 得到的是 键名 键值
let str=`${key}=${obj[key]}`;
// console.log(str);
// resStr += str + "&";
arr.push(str);//尾部添加
} }
let resStr=arr.join("&");
console.log(resStr);
}
