package.json 不需要自己手动输入。
{ "name": "node", "version": "1.0.0", "description": "", "main": "1.js", "scripts": {// "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" }包管理:
yarnbower-----偏向于前端包管理 npm i bower -g bower i xxx系统包
assert—断言:出现意外的时候,直接断掉 const assert=require("assert"); assert(3<6, 'bbb'); //deepEqual:深度比较:不仅比较值还比较内部的成员 //assert.deepEqual(变量,预取值,msg) msg是变量和预期值不相等得到的 //deepStrictEqual:不仅仅比较成员,还比较类型 //assert.deepStrictEqual(变量,预期值,msg) path—路径 const path=require("path"); //dirname:路径 let str='root/a/b/1.txt'; console.log(path.dirname(str)); //root/a/b 文件名/目录 console.log(path.extname(str)); //.txt 文件的扩展名 console.log(path.basename(str))//1.txt 文件名 //path.resolve //解析绝对路径 url—网址 const url=require("url"); let str="http://www.baidu.com:8080/a/b/1.html?a=1&a=2&a=3"; //parse:解析 console.log(url.parse(str,true)); /*Url { protocol: 'http:', slashes: true, auth: null, host: 'www.baidu.com:8080', port: '8080', hostname: 'www.baidu.com', hash: null, search: '?a=1&a=2&a=3', query: [Object: null prototype] { a: [ '1', '2', '3' ] }, pathname: '/a/b/1.html', path: '/a/b/1.html?a=1&a=2&a=3', href: 'http://www.baidu.com:8080/a/b/1.html?a=1&a=2&a=3' }*/ querystring----请求数据 const querystring=require("querystring"); // parse:解析 console.log(querystring.parse("a=1&c=3"));//[Object: null prototype] { a: '1', c: '3' } //stringify:解析成字符串 console.log(querystring.stringify({a:1,b:3}));//a=1&b=3 net—网络通信(传输层) 处理post文件 POST文件 <分隔符>\r\n字段信息\r\n\r\n内容\r\n<分隔符>\r\n字段头\r\n\r\n内容\r\n<分隔符>\r\n字段头\r\n\r\n内容\r\n<分隔符>– <分隔符>\r\n字段信息\r\n\r\n内容\r\n<分隔符>\r\n字段头\r\n\r\n内容\r\n<分隔符>\r\n字段头\r\n\r\n内容\r\n<分隔符>–1.用<分隔符>切分 [ null, “\r\n字段信息\r\n\r\n内容\r\n”, “\r\n字段信息\r\n\r\n内容\r\n”, “\r\n字段信息\r\n\r\n内容\r\n”, ‘–’ ]
2.第0个和最后1个,扔掉 [ “\r\n字段信息\r\n\r\n内容\r\n”, “\r\n字段信息\r\n\r\n内容\r\n”, “\r\n字段信息\r\n\r\n内容\r\n”, ]
3.每一项 “\r\n字段信息\r\n\r\n内容\r\n”
“字段信息\r\n\r\n内容” “字段信息”, “内容”
ajax跨域
<script> window.onload=function (){ let oBtn=document.getElementById('btn1'); oBtn.onclick=function (){ let ajax=new XMLHttpRequest(); ajax.open('GET', 'http://localhost:8080/a', true); ajax.send(); ajax.onreadystatechange=function (){//onreadystatechange:事件可指定一个事件处理函数来处理XMLHttpRequest对象的执行结果 //(ajax.readyState(状态值): //0 - (未初始化)还没有调用send()方法 //1 - (载入)已调用send()方法,正在发送请求 //2 - (载入完成)send()方法执行完成, //3 - (交互)正在解析响应内容 //4 - (完成)响应内容解析完成,可以在客户端调用了 if(ajax.readyState==4){ if(ajax.status>=200 && ajax.status<300 || ajax.status==304){//status:状态码 alert('成功'); let json=JSON.parse(ajax.responseText);//ajax.responseText:向ajax后台的程序发送xmlhttp请求的时候, 后台程序接到请求会进行处理,处理结束后,可以返回一串数据给前台 console.log(json); }else{ alert('失败'); } } }; }; }; </script> </head> <body> <input type="button" value="请求" id="btn1"> </body> const http=require('http'); let allowOrigin={ 'http://localhost': true, 'http://aaa.com': true, 'https://aaa.com': true, } http.createServer((req, res)=>{ let {origin}=req.headers; if(allowOrigin[origin]){ res.setHeader('access-control-allow-origin', '*'); } res.write('{"a": 12, "b": "Blue"}'); res.end(); }).listen(8080);