学习网站:
(https://www.bilibili.com/video/av16249662/?p=15)
使用是使用
var http=require("http"); http.createServer(function(req,res){ console.log("人来了"); }).listen(8080)req.url表示请求的地址
代码如下:
var fs=require("fs"); http.createServer(function (req, res) { var file=req.url.split('/'); fs.readFile(file[1],function(err,data){ if(err){ res.end("wrong 404"); console.log(req.url); console.log(file[1]) } else{ res.write(data); } }) }).listen(8080);数据在url中,通过url获取数据。
querystring模块可以对数据部分进行解析,但不够方便。(因为需要先解析出数据部分)。
js代码如下所示:
const http = require('http'); const urllib=require('url'); http.createServer(function (req, res) { var obj=urllib.parse(req.url,true); var url=obj.pathname; var GET=obj.query; console.log(url); console.log("shdasdas"); console.log(req.url) console.log(GET,url.pathname); res.write('522543245'); res.end(); }).listen(8080);引入url模块,它能解析url请求,其中的query和pathname就是我们需要的内容
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>Document</title> </head> <body> <form action="http://localhost:8080" method="GET"> <input type="text" name="user"> <input type="password" name="pass"> <input type="submit" value="提交"> </form> </body> </html>对于Get请求,一般使用url模块进行解析。
post数据比get数据大得多,所以可能会分多次发送。
data —一段数据到达
end — 全部到达
代码如下
var http=require("http"); http.createServer(function(req,res){ var str='sfds';//接受数据 req.on('data',function(data){ str=str+data; });//触发事件 req.on('end',function(){ console.log(str); }) res.end("Yes"); }).listen(8080);npm
统一下载途径自动下载依赖如何下载模块:
npm install xxx(模块名) 在cmd中运行即可下载模块。
ues方法可以代替get和post方法
url.query可以解析Get数据。
url.body解析的是Post数据,需要先用server.use(bodyparser.urlencoded({}))处理。
代码示例:
var express=require("express"); var server=expres(); server.use('/1.html',function(req,res){ res.send("hello 1.html"); res.end(); }) server.use('2.html',function(req,res){ res.send("hello 2.html"); res.end(); }) server.listen(8080);在express框架中,读写文件操作没有改变。也可以使用中间件express-static读文件。
fs读文件:
var express=require("express"); var http=require("http"); var fs=require("fs"); var server=express(); server.use('/1.html',function(req,res){ fs.readFile("1.html",function(err,data){ if(err){ res.send("wrong"); } else{ res.send(data); } res.end(); }) }) server.listen(8080);需要先用server.use(bodyparser.urlencoded({}))处理
var express=require("express"); var expressStatic=require("express-static"); var bodyParser=require('body-parser'); var server=express(); server.listen(8080); server.use(bodyParser.urlencoded({})); server.use('/',function(req,res){ console.log(req.body); })extended: 值位ture时就是扩展模式,为false时就是非扩展模式。
limit: 默认是100k,以k为单位。
在浏览器保存一些数据,每次向服务器请求时都会带上。不安全。大小有限(4k)。
读取 需要cookie-parser
var express=require("express"); var cookieparser=require("cookie-parser");//引入cookie-parser模块 var server=express(); server.use(cookieparser());//先处理,再使用。 server.use('/aaa',function(req,res){ console.log(req.cookies); res.send("OK"); }) server.listen(8080);写cookie:
var express=require("express"); var server=express(); server.use('/',function(req,res){ res.cookie('user','blue',{path:'/aaa',maxAge:30*24*3600*1000}); res.send("OK"); }) server.listen(8080);res.cookie(‘名称’,‘值’,{path:‘路径’,maxAge:保存时间(以毫秒为单位)});
给cookie签名:作用是防止cookie被改。
req.secret='字符串'; res.cookie("值":"属性",{singed:true});删除cookie:
server.use(cookieparser());//先处理,再使用。 server.use('/aaa',function(req,res){ res.clearCookie('名称'); res.send("OK"); })保存在服务端,大小无限(与服务器有关)。比cookie安全。
读取 需要cookie-session需要先解析cookiekeys数组越长越安全delete 删除session示例代码:
var express=require("express"); var cookieparser=require("cookie-parser"); var cookiesession=require("cookie-session");//引入中间件 var server=express(); server.use(cookieparser()); server.use(cookiesession({ name:'blue', keys:["aaa","bbb","ccc"],//必须设置keys数组,否则报错。 maxAge:2*3600*1000 })); server.use('/',function(req,res){ if(req.session['count']==null){ req.session['count']=1; }else{ req.session['count']++; } console.log(req.session['count']); res.send("OK"); }) server.listen(8080);jade -------破坏式 侵入式
根据缩进确定层级关系
var jade=require("jade"); var str=jade.render('html');//渲染成html格式 console.log(str);渲染jade文件:
var jade=require("jade"); var str=jade.renderFile('1.jade',{pretty:true});//需要加{prett:ture}形成html格式 console.log(str);jade文件样式:
html header style script body div ul li li li divejs ---------非破坏式
var ejs=require("ejs"); ejs.renderFile('1.ejs',{name:'blue'},function(err,data){ if(err){ console.log("失败"); } else{ console.log(data); } })ejs样式:
我的名字:<%= name %>router.use()
router.get()
router.post()
据此可以实现对不同路径下文件的访问,拆解服务(子服务)。
var router=express.Router(); servcer.ues('/',router);//向‘/’路径下添加router代码示例:
var express=require("express") var server=express(); server.listen(8080); var router=express.Router(); router.get('/1.html',function(req,res){ res.send("hello"); }) router.get('/2.html',function(req,res){ res.send('kkkkk'); }) server.use('/',router);//在‘/’路径下访问1.html或2.htmlsql命令尽量使用大写
增 ——INSERT
删 ——DELETE
改 ——UPDATAE
查 —— SELECT
查的代码示例:
var mysql=require('mysql'); var db=mysql.createConnection({host:'localhost', user:'root',password:'123456',database:'20190930'}); db.query("select * from usertable;",(err,data)=>{ if(err){ console.log("失败",err); } else{ console.log("成功了\n",data); } });