首先修改index.html代码

post的js代码:

const url=require(‘url’);

const querystring=require(‘querystring’)

// 引入读文件的模块

const readfile=require(‘readfile’);

let server=http.createServer((req,res)=>{

if(req.url==‘/favicon.ico’) return;

if(req.url.startsWith(‘/form’)){

readfile(__dirname,req,res);

}else if(req.url.startsWith(‘/submit’)){

// post请求发送数据的时候,是一段段发送

// data事件,监听接收的数据

// 一般测试不出来。

var allData=‘’;

req.on(‘data’,(chunk)=>{

allData+=chunk;

})

// end事件 数据接收完的时候执行

req.on(‘end’,()=>{

// allData得到的是k=v&k=v形式的数据 使用querystring转化 querystring.parse()可以把类似k=v&k=v的字符串转化为对象

console.log(querystring.parse(allData));

res.end(用户名是${allData.user}密码是${allData.pass});

})

}else{

res.end(‘404’);

}

})

server.listen(‘8989’)

按步骤运行即可

两个js文件整合起来:

const readfile=require(‘readfile’);

const http=require(‘http’);

const url=require(‘url’);

const querystring=require(‘querystring’)

// 创建服务器

let server=http.createServer((req,res)=>{

if(req.url==‘/favicon.ico’) return;

// 处理get或者post请求

// 如果是post请求的时候,query参数为空

if(req.url.startsWith(‘/form’)){

readfile(__dirname,req,res);

return;

}

if(url.parse(req.url,true).query=={}){

var allData=‘’;

req.on(‘data’,(chunk)=>{

allData+=chunk;

})

// end事件 数据接收完的时候执行

req.on(‘end’,()=>{

// allData得到的是k=v&k=v形式的数据 使用querystring转化 querystring.parse()可以把类似k=v&k=v的字符串转化为对象

console.log(querystring.parse(allData));

res.writeHead(200,{‘Content-type’:‘text/plain;charset=utf-8’});

res.end(用户名是${allData.user}密码是${allData.pass});

})

}else{

let params=url.parse(req.url,true).query;

res.writeHead(200,{‘Content-type’:‘text/plain;charset=utf-8’})

// 发送的数据只能是字符串

res.end(用户名是${params.user}密码是${params.pass});

}

})

// 监听端口号

server.listen(‘8989’);

2、Express 简介

===============================================================================

Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。

使用 Express 可以快速地搭建一个完整功能的网站。

Express 框架核心特性:

可以设置中间件来响应 HTTP 请求。

定义了路由表用于执行不同的 HTTP 请求动作。

可以通过向模板传递参数来动态渲染 HTML 页面。

安装 Express 并将其保存到依赖列表中:

cmd命令:

npm install express --S

以上命令会将 Express 框架安装在当前目录的 node_modules 目录中。

实例:静态资源读取

// 第一步:引入框架

const express=require(‘express’);

// 创建服务器

const app=express();

// 读取静态资源 自动去form目录下寻找index.html,呈递给前台。如果没有index.html

//会提示错误

// 路径:除了ip地址和端口号剩下的就是路径

// http://localhost:8989/zsh/dsfsdfsd

// app.use(‘获取的url路径’,express.static(‘读取静态资源路径’))

// 前端要和路径完全匹配,才会执行代码

app.use(‘/’,express.static(‘./www/form/index.html’));

// 如果不是处理静态资源,路径的意思就是以该路径开始即可匹配,不是完全匹配

app.use(‘/zsh’,(req,res)=>{

// 封装完以后,结束响应使用send,执行完以后不会再往下执行,结束响应

res.send(‘404’);

})

console.log(11111);

// 添加监听端口号

app.listen(‘8989’)

读取静态资源–app.get()

JS代码:

const express=require(‘express’);

const app=express();

// 静态资源读取

// /默认 寻找的路径需要是index.html

app.use(‘/’,express.static(‘./www/form’));

// app.get()可以处理get请求

app.get(‘/submit’,(req,res)=>{

// get请求的参数在url内部 req.query获取get请求参数

console.log(req.query);

res.send(您输入的用户名是${req.query.user});

})

app.listen(‘8989’)

cmd运行js;

打开html页面:

读取静态资源–app.post()

JS代码:

const express=require(‘express’);

const app=express();

// post请求需要依赖专门的模块

// 第一步:npm install body-parser -S;

// 第二步:在页面中引入

// 第三步:在post请求的第二个参数加上刚刚解析body-parser得到的参数。

var bodyParser = require(‘body-parser’)

var urlencodedParser = bodyParser.urlencoded({ extended: false })

// 静态资源读取

// /默认 寻找的路径需要是index.html

app.use(‘/’,express.static(‘./www/form’));

// app.post()可以处理post请求

// post请求参数处理比较麻烦,需要依赖一个模块 body-parser

// 具体用法可以参照手册

// post请求的第二个参数需要通过解析body-parser模块得到

app.post(‘/submit’,urlencodedParser,(req,res)=>{

// 获取post请求的参数 req.body

res.send(req.body);

})

app.listen(‘8989’);

按步骤进行即可

两者整合:

const express=require(‘express’);

const app=express();

var bodyParser = require(‘body-parser’)

var urlencodedParser = bodyParser.urlencoded({ extended: false })

app.use(‘/’,express.static(‘./www/form’));

app.post(‘/submit’,urlencodedParser,(req,res)=>{

res.send(req.body);

})

app.get(‘/submit’,(req,res)=>{

console.log(req.query);

res.send(您输入的用户名是${req.query.user});

})

app.listen(‘8989’);

静态资源读取—ajax

先在目录下再创建一个public文件夹

public一般放置的是css 、js文件;

js代码:

const express=require(‘express’);

const app=express();

// 引入处理post参数的模块

var bodyParser = require(‘body-parser’)

var urlencodedParser = bodyParser.urlencoded({ extended: false })

app.use(‘/’,express.static(‘./www/form’));

//把静态资源呈递

app.use(‘/public’,express.static(‘./public’));

app.post(‘/submit’,urlencodedParser,(req,res)=>{

// 获取post请求的参数 req.body

res.send(req.body);

})

app.get(‘/submit’,(req,res)=>{

// get请求的参数在url内部 req.query获取get请求参数

console.log(req.query);

res.send(${req.query.user});

})

app.listen(‘8989’);

index.html:

Document

这是登录页面

按钮

已有账号请注册

ajax:不需要跳转

打开其他页面:

提交get请求,跳转:

post请求:

3、Mongodb数据库

===============================================================================

自己写的相关介绍链接:https://blog.csdn.net/weixin_53037175/article/details/111829602

连接数据库,和后台联系起来:

const express=require(‘express’);

const app=express();

// 引入数据库

var MongoClient = require(‘mongodb’).MongoClient;

// 数据库地址

var url = “mongodb://localhost:27017”;

app.use(‘/zsh’,(req,res)=>{

// 插入数据库

// 连接数据库 把数据库和后台联系起来

MongoClient.connect(url, function(err, db) {

if (err) throw err;

var dbo = db.db(“student”);

dbo.collection(“stu1”). find({}).toArray(function(err, result) { // 返回集合中所有数据

if (err) throw err;

console.log(result);

db.close();

res.send(result);

});

});

})

app.use(‘/’,(req,res)=>{

MongoClient.connect(url, function(err,db) {

if (err) throw err;

// 选择数据库

var dbo = db.db(“student”);

var myobj = { name: “菜鸟教程”, url: “www.runoob” };

// 插入数据操作

dbo.collection(“stu1”).insertOne(myobj, function(err, res1) {

if (err) throw err;

db.close();

res.send(‘数据插入成功了’);

});

});

})

app.listen(‘8989’);

4、数据库增删改查操作

==============================================================================

首先是静态资源HTML

index.html

Document

请注册

//addata,提交数据到指定的路径地址,这个根据js的要求修改

封装好的js文件,一般是放在自己创建文件夹里(比如model):

dao.js

//数据库操作

// 先下载好数据库包再引入,这个也可以在php中操作数据库

const MongoClient=require(‘mongodb’).MongoClient;

// 数据库地址,27017是默认是数据库端口号

const url=“mongodb://localhost:27017”;

// 把数据库连接的操作,封装起来。

function _connect(callback){

// 连接上数据库

//连接数据库是异步操作,不知道什么时候连接成功了。用到回调函数的概念

MongoClient.connect(url, function(err, db) {

// 连接数据库成功

if (err) throw err;

// 说明连接数据库成功了 db代表连接成功以后返回的数据

callback(db);

});

}

//插入数据操作:

// module.exports导出数据

module.exports insert=function(databse,type,myobj,callback){

_connect(function(db){

// db连接成功的数据

// db.db(‘操作的数据库’)

var db=db.db(database);

//判断myobj类型,转换为数组作为语句集合插入数据库

if(myobj instanceof Array){

myobj=myobj

}else{

myobj=[myobj]

}

// 一条数据是对象 insertOne 多条数据是数组 用insertmMany

db.collerction(type).insertMany(myobj,function(err,r){

if err throw err;

bd.close();

// r得到的是成功插入数据的信息

callback®;

})

})

}

//查看操作:

// 查询封装的时候,考虑是否需要分页是否需要排序

// 需要书写函数参数的默认值,因为用户有可能不会书写

module.exports.find=function(databse,type,callback,myobj={},mysort={},myskip=0,mylimit=0){

_connect(function(db){

// 查询数据

var dbo = db.db(database);

// sort排序

// skip跳过多少条数据

// limit()限制取数据的数量

dbo.collection(type).find(myobj).sort(mysort).skip(myskip).limit(mylimit).toArray(function(err, result) { // 返回集合中所有数据

if (err) throw err;

console.log(result);

db.close();

callback(result);

})

})

}

//更新操作:

module.exports.update=function(databse,type,myobj,updateObj,callback){

_connect(function(db){

var dbo = db.db(dbname);

var updateStr = {$set: {updateObj}};

// updateOne(查询条件(可以是id也可以是语句),更改后数据)

dbo.collection(col).updateOne(myobj, updateStr, function(err, res) {

if (err) throw err;

console.log(“文档更新成功”);

db.close();

callback(res)

});

})

}

//删除操作:

module.exports.delete=function(database,type,myobj,callback){

_connect(function(db){

var dbo = db.db(dbname);

// updateOne(查询条件,更改的数据)

dbo.collection(col).deleteOne(myobj, function(err,obj) {

if (err) throw err;

db.close();

callback(obj);

});

})

}

编写好封装的js包文件后,写对应的js文件

01.js

const express=require(‘express’);

const app=express();

// md5加密 一般进行多层加密 一般是2-3层

const md5=require(‘md5’);

//引用写好的封装文件,./–表示同级目录

const dao=require(‘./model/dao.js’);

app.use(‘/’,express.static(‘./www/’));

//引用静态资源文件如js,css

app.use(‘/public’,express.static(‘./public/’));

//对应的插入数据代码

app.get(‘/addata’,(req,res)=>{

//前台html发送过来的数据–input的user以及pass

var obj={

proname:req.query.user,

propass:req.query.pass

}

dao.insert(‘product’,‘phone’,obj,function®{

res.send®;

})

})

//删除 自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

前端校招精编面试解析大全点击这里免费获取完整版pdf查看

s’);

app.use(‘/’,express.static(‘./www/’));

//引用静态资源文件如js,css

app.use(‘/public’,express.static(‘./public/’));

//对应的插入数据代码

app.get(‘/addata’,(req,res)=>{

//前台html发送过来的数据–input的user以及pass

var obj={

proname:req.query.user,

propass:req.query.pass

}

dao.insert(‘product’,‘phone’,obj,function®{

res.send®;

})

})

//删除 自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-K2x8oPRq-1712314811269)]

[外链图片转存中…(img-m9hESxHD-1712314811270)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

[外链图片转存中…(img-PR5JAr6x-1712314811270)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

前端校招精编面试解析大全点击这里免费获取完整版pdf查看

相关阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。