先介绍node.js的安装,再介绍使用node.js构建一个简单的web服务器,最后通过一个简单的示例,演示网页与服务器之间的数据交互的实现。
WEB服务器
WEB服务器也称为WWW服务器。WWW(World Wide Web、翻译成中文:万维网或环球信息网)服务器的基本功能就是提供Web信息浏览服务。Web服务器可以向Web浏览器等客户端提供文档,也可以放置网站文件,让全世界浏览,更可以放置数据文件,让全世界下载。
常见的Web服务器软件有Apache、Internet信息服务器(Internet Information Services,IIS)等。
Apache服务器:Apache服务器是一款开源免费的服务器软件,几乎可以在所以有的计算机平台上运行,由于Apache是开源,因此所有人都可以参与开发新功能,并且不断对Apache服务器进行完善。Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页,它是一个模块化的服务器,可以运行在几乎所有广泛使用的计算机平台上(即支持多平台)。其属于应用服务器。
IIS服务器:IIS服务器是微软的服务器,可允许IIS在公共Intranet或Internet上发布相信的Web服务器。IIS只能在微软公司的windows操作系统下使用。
不依赖前面提到的Web服务软件,使用Node.js 也能搭建Web服务器。
Node.js是什么?
简单地说,Node.js 是一种开源且跨平台的服务器端 JavaScript 运行时环境,并可以让 JavaScript 做后端。
在Windows 上安装 Node.js
要使用Node.js 需要安装之。
要使用Node.js 需要安装之。先到nodejs官网 Node.js 或到中文网站下载 | Node.js 中文网 下载
LTS代表“长期支持”,建议大多数用户使用这种版本。我下载的是node-v14.18.1-x64.msi
简单看下代码:
const express = require("express");
const mysql = require("mysql");
let nodemailer = require("nodemailer")
let app = express();
let cors = require("cors");
app.use(cors());
const bodyparser = require("body-parser")
app.use(bodyparser.urlencoded({extended:false}))
app.use(bodyparser.json())
//发送qq邮箱函数
function sendMail(text,receive){
let user = "3534912941@qq.com";//自己的qq邮箱
let pass = "lhgyfafsvtxddbgh";//自己的qq邮箱授权码
let to = "2251084392@qq.com"//目标发送qq邮箱
let transporter = nodemailer.createTransport({
host:"smtp.qq.com",
port:587,
secure:false,
auth:{
user:user,
pass:pass
}
});
let options={
from:`${user}`,
to:`2251084392@qq.com`,
subject:'测试验证码',
text:text
};
transporter.sendMail(options,function(err,msg){
if(err){
console.log("错误");
}else{
console.log(msg);
transporter.close();
}
})
// let info = transporter.sendMail({
// from:`测试发送验证码${user}`,
// to:`测试验证码${to}`,
// subject:'测试验证码',
// text:text
// })
// console.log(info);
}
// 发送验证码接口
app.post("/emails",(request,response)=>{
let qqEmail
sendMail("验证码为1235","2251084392@qq.com")
})
//发送验证码接口
// app.use("/emails",function(request,response,next){
// // let qqEmail = request.body.email;
// let qqEmail = "2251084392@qq.com";
// console.log(qqEmail);
// let obj = {
// code:Math.ceil(Math.random()*1000)
// };
// let text = 验证码是${obj.code}
;
// console.log(text);
// sendMail(text,qqEmail);
// response.end(JSON.stringify(obj));
// next();
// })
//连接数据库
const con = mysql.createConnection({
user:'root',
password:'w123456789',
host:"localhost",
database:'uesreg'
})
//测试连接
// con.connect(err=>{
// // null代表连接成功
// console.log(err);
// })
//注册验证
app.get("/logmessage",(request,response)=>{
let Sqlquery = `SELECT urename FROM reg `
let flg = false;
con.query(Sqlquery,(err,res)=>{
// res.forEach(element => {
// if(request.query.usename==element.urename){
// flg = true;
// response.send("账号已经存在,换一个吧")
// return ;
// }
// // console.log(element.urename);
// });
for (let i = 0; i < res.length; i++) {
if(res[i].urename==request.query.usename){
flg=true;
response.send("账号已经存在,换一个吧")
break;
}
}
if(flg==false){
let SqlStr = `INSERT INTO reg VALUES(${Number(request.query.usename)},'${request.query.password}','${request.query.email}')`;
con.query(SqlStr,(err)=>{
console.log("成功注册");
})
response.send(true)
}
});
// console.log(request.query);
// if(request.query.usename=="123"){
// response.send("teur")
// }
})
//登录验证
app.post("/logincheck",(request,response)=>{
let Sqlaccount = `SELECT urename FROM reg WHERE urename=${request.body.account}`
con.query(Sqlaccount,(err,res)=>{
// console.log(res.length);
if(res.length==0){
// console.log("没有此账号");
response.send("没有此账号,请重新登录")
return;
}else{
let Sqlpasword = `SELECT urename FROM reg WHERE urename=${request.body.account} and pasword= '${request.body.code}'`
con.query(Sqlpasword,(err,res)=>{
// console.log(res);
if(res.length!=0){
// console.log("成功");
response.send("登录成功")
}else{
// console.log("失败");
response.send("密码错误,请重新输入");
return ;
}
})
}
})
console.log(request.body);
})
app.listen(5000,()=>{
console.log("5000端口正在监听");
})