网站收录是怎么回事公司建立网站的必要性
web/
2025/9/27 15:58:47/
文章来源:
网站收录是怎么回事,公司建立网站的必要性,广州冼村为什么有钱,中国建设银行网站首页签约前言#xff1a;node.js服务器动态资源处理见 http://t.csdnimg.cn/9D8WN
一、什么是node.js服务器静态资源#xff1f;
静态资源服务器指的是不会被服务器的动态运行所改变或者生成的文件. 它最初在服务器运行之前是什么样子, 到服务器结束运行时, 它还是那个样子. 比如平…前言node.js服务器动态资源处理见 http://t.csdnimg.cn/9D8WN
一、什么是node.js服务器静态资源
静态资源服务器指的是不会被服务器的动态运行所改变或者生成的文件. 它最初在服务器运行之前是什么样子, 到服务器结束运行时, 它还是那个样子. 比如平时写的 js, css, html文件, 都可以算是静态资源。
我的静态服务器需要使用json文件作为数据存储。并进行json数据的读取与写入。
下面我将以在服务器中实现注册、登录为例并将我已注册的用户数据写到我的user.json中。 二、服务器处理静态资源执行思路
1将所有静态资源统一放入一个文件夹中做统一处理
2在服务器端来处理pathname从而判断url是否是我们请求的路径
如何解析和格式化url查询字符串 Node.js 的 querystring 模块
1. 将字符串参数解析成对象
querystring.parse(url)
2. 将对象参数解析成字符串 querystring.stringify(urlObject) 三、静态资源处理的判断方法
startWith以什么开头、indexOf、search、includes
四、执行要求
静态资源要求完成注册、登录功能
动态资源要求完成注册、登录、已注册的用户列表展示功能 五、执行代码
执行结果见视频 20240415_142226 node.js服务器静态资源处理
1我们将首页、登录、注册三个html静态页面和用户列表users.html写在views这个大文件夹下。css样式和images图片放入public这个大文件夹下。创建一个data大文件夹data下面建一个user.json文件来专门存储用户数据 简单写一下首页、注册、登录页面的html静态页面的样式。
1》index.html 首页
!DOCTYPE html
html langen
headmeta charsetUTF-8title首页/titlelink relstylesheet href../public/css/main.css
/head
bodyh1首页/h1img src../public/images/01.png altbra href/login登录/a|a href/regist注册/a|a href/list用户列表/a
/body
/html
2》regist.html 注册
!DOCTYPE html
html langen
headmeta charsetUTF-8title注册/titlelink relstylesheet href../public/css/main.css
/head
bodyh1注册/h1img src../public/images/01.png altbrform methodget action/doRegistinput typetext nameusername placeholder用户名brinput typepassword namepassword placeholder密码brinput typesubmit value注册br/form
/body
/html3》login.html 登录
!DOCTYPE html
html langen
headmeta charsetUTF-8title登录/titlelink relstylesheet href../public/css/main.css
/head
bodyh1登录/h1img src../public/images/01.png altbrform methodget action/doLogininput typetext nameusername placeholder用户名brinput typepassword namepassword placeholder密码brinput typesubmit value登录br/form
/body
/html
index.html 首页显示如下 2测试代码
创建一个服务器使服务器做出响应的请求与响应重点对解析后的url的pathname来做出不同的if判断处理
const http require(http);
const fs require(fs);
const path require(path);
const url require(url);
// 声明一个专门存放所有用户的变量
var users;
// 导入查询参数的模块
const querystring require(querystring)
//创建服务器
const server http.createServer();
//读取文件。读取user.json存放用户数据的文件
fs.readFile(path.join(__dirname, data/users.json), (err, data) {if (err) {users {};} else {users JSON.parse(data.toString()); //如果读取正确就将读到的内容转换为一个对象存到users里}
})
//服务器做出请求响应
// 设置服务器的监听器来响应request事件。当有人向服务器发送请求时这个事件就会被触发
server.on(request, (req, res) {let objurl url.parse(req.url); //将包含了客户端请求的完整URL(req.url)转为一个对象才能获取到它的pathnamelet pathname objurl.pathname; //从解析后的URL对象objurl中提取出路径名// 对pathname做处理if (pathname.startsWith(/public)) {// 找到当前项目文件夹再将相对路径转为绝对路径let p path.join(__dirname, pathname);fs.readFile(p, (err, data) {if (err) {res.writeHead(404, { Content-Type: text/html;charsetutf-8 });res.end(404 Not Found);} else {res.end(data);}})} else if (pathname / || pathname /home) {let p path.join(__dirname, views/index.html);fs.readFile(p, (err, data) {if (err) {res.writeHead(404, { Content-Type: text/html;charsetutf-8 });res.end(404 Not Found);} else {res.end(data);}})} else if (pathname /regist) {let p path.join(__dirname, views/regist.html);fs.readFile(p, (err, data) {if (err) {res.writeHead(404, { Content-Type: text/html;charsetutf-8 });res.end(404 Not Found);} else {res.end(data);}})} else if (pathname /login) {let p path.join(__dirname, views/login.html);fs.readFile(p, (err, data) {if (err) {res.writeHead(404, { Content-Type: text/html;charsetutf-8 });res.end(404 Not Found);} else {res.end(data);}})
//已注册或已登录的情况} else if (pathname /doRegist) {let query querystring.parse(objurl.query); //将字符串参数解析成对象let username query.username;let password query.password;if (users[username]) {res.writeHead(500, { Content-Type: text/html;charsetutf-8 });res.end(用户名已存在不能注册);} else {//因为users里面是一个对象。所以只能属性名值的形式。故用户名 / 密码 为属性名 用户名的值 / 密码的值 为属性值users[username] password;//利用JSON.stringify(users)将users对象转为字符串重新写到文件里去fs.writeFile(path.join(__dirname, data/users.json), JSON.stringify(users), (err) {if (err) {res.writeHead(502, { Content-Type: text/html;charsetutf-8 });res.end(注册失败);} else {res.writeHead(200, { Content-Type: text/html;charsetutf-8 });res.end(注册成功)}})}} else if (pathname /doLogin) {let query querystring.parse(objurl.query);let username query.username;let password query.password;// 判断users的用户名和密码有无if (users[username] users[username] password) { //用户名 密码res.writeHead(200, { Content-Type: text/html;charsetutf-8 });res.end(登录成功);} else {res.writeHead(502, { Content-Type: text/html;charsetutf-8 });res.end(用户名或密码错误登录失败);}} else if (pathname /list) {
//显示list用户列表是动态资源处理的内容。见我的下一篇博客 }
});
//启动服务器
server.listen(3000, 127.0.0.1, () {console.log(Server is running at http://127.0.0.1:3000);
})
3结果显示 此时我的用户数据就显示在了我的data文件夹下的user.json上了
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/81027.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!