NodeJS的简单笔记

it2026-04-07  1

Node.js

学习网站:

(https://www.bilibili.com/video/av16249662/?p=15)

http模块

使用是使用

var http=require("http"); http.createServer(function(req,res){ console.log("人来了"); }).listen(8080)

req.url表示请求的地址

文件操作fs

fs读文件

fs.read('文件名'function(err,data){ if(err){ console.log("wrong"); } else( res.write(data); console.log(data.toString()); ) })

通过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);

Get方式获取数据

数据在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数据

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);

模块化

require ------引入其他模块exports -------单个输出module -------批量输出.js是可选的npm:NodeJsPackage(NodeJs管理器)

npm

统一下载途径自动下载依赖

如何下载模块:

npm install xxx(模块名) 在cmd中运行即可下载模块。


Express

方法

get(’/’,functioa(req.rres){});post(’/+url’,function(req,res){});ues(’/+url’,function(req,res){});

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);

中间件express-static读文件:

var express=require("express"); var http=require("http"); var fs=require("fs"); var expressStatic=require("express-static");//引入中间件 var server=express(); server.use(expressStatic("x"));//x代表文件夹名;不能直接给文件名;在url中给出文件名,就可以访问该文件。 server.listen(8080);

body-parser处理数据:

需要先用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); })

urlencoded({})中的参数:

extended: 值位ture时就是扩展模式,为false时就是非扩展模式。

limit: 默认是100k,以k为单位。

链式操作

server.use('/',function(req,res,next){ console.log("b"); next(); })//该语句构成链式操作

cookie

在浏览器保存一些数据,每次向服务器请求时都会带上。不安全。大小有限(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"); })

session

保存在服务端,大小无限(与服务器有关)。比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 div

ejs ---------非破坏式

var ejs=require("ejs"); ejs.renderFile('1.ejs',{name:'blue'},function(err,data){ if(err){ console.log("失败"); } else{ console.log(data); } })

ejs样式:

我的名字:<%= name %>

route路径

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.html

数据库

sql命令尽量使用大写

增 ——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); } });
最新回复(0)