分类 node.js 下的文章 - 青蓝鱼的博客-没有bug的代码是不完美的
分类 node.js 下的文章 - 青蓝鱼的博客-没有bug的代码是不完美的
终于找到这篇文章了,感谢作者的分享!
https://fishfive.top/index.php/archives/29/
终于找到这篇文章了,感谢作者的分享!
受益匪浅,感谢博主。
该回复疑似异常,已被系统拦截!
1
111
666
# 图片回复
666
学到了
666
hello word
首页
关于
?
归档
留言
统计
导航
更多
github
友链
推荐
百度
搜 索
1
Nginx-Quic重新编译Nginx支持HTTP3
356 阅读
2
Centos7和Centos8网卡配置
269 阅读
3
六种好看的css按钮效果
189 阅读
4
node.js简单的web服务demo
159 阅读
5
JavaScript实现静态图片局部流动效果
156 阅读
默认分类
html
css
JavaScript
React
Vue
Git
centos
node.js
php
nginx
http
登录
搜 索
https://fishfive.top
累计撰写
27
篇文章
累计收到
16
条评论
首页
栏目
默认分类
html
css
JavaScript
React
Vue
Git
centos
node.js
php
nginx
http
页面
关于
归档
留言
统计
导航
github
友链
推荐
百度
用户登录
登录
找到
2
篇与
node.js
相关的结果
2022-11-09
node.js简单的web服务demo
nodejs简单编写 http 服务程序步骤:1加载http模块。2创建http服务.3为http服务对象添加 request 事件处理程序。4开启http服务监听,准备接收客户端请求。注意:浏览器显示可能是乱码,所以可以通过 res.setHeader('Content-Type', 'text/plain; charset=utf-8');设置浏览器显示时所使用的编码。Chrome 浏览器默认无法手动设置编码,需要安装"Set Character Encoding"扩展。演示一下设置Content-Type=text/html 和 Content-Type=text/plain的区别。// 1. 加载http模块 var http = require('http'); // 2. 创建http服务 var server = http.createServer(); // 3. 开始监听'request'事件 // 详细解释一下request对象和response对象 server.on('request', function (req, res) { // body... console.log('有人请求了~~'); }); // 4. 启动服务,开始监听 server.listen(9000, function () { console.log('服务已经启动,请访问: http://localhost:9000'); });编写 http 服务程序 - 通过读取静态 HTML 文件来响应用户请求步骤:1创建index.html、login.html、register.html、list.html、404.html文件。 2演示通过读取最简单的 HTML 文件来响应用户。3演示通过读取"具有引入外部CSS样式表"的HTML文件来响应用户。4演示通过读取"具有img标签"的HTML文件来响应用户。注意:1、注意在发送不同类型的文件时,要设置好对应的Content-Type Content-Type参考: http://tool.oschina.net/commonsContent-Type参考: https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types 2、HTTP状态码参考 w3org参考:https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html w3schools参考: https://www.w3schools.com/tags/ref_httpmessages.asp 3、在html页面中写相对路径'./' 和 绝对路径 '/'的含义 。 网页中的这个路径主要是告诉浏览器向哪个地址发起请求用的'./' 表示本次请求从相对于当前页面的请求路径(即服务器返回当前页面时的请求路径)开始 '/' 表示请求从根目录开始补充知识点: path 模块的 join() 方法// 1. 加载 http 模块 var http = require('http'); // 加载文件操作模块 var fs = require('fs'); // 加载path模块,这个模块主要用来处理各种路径。 var path = require('path'); // 2. 创建http server var server = http.createServer(function (req, res) { // 1. 获取用户请求的URL var url = req.url.toLowerCase(); // 2. 根据用户的不同请求,做出不同响应 if (url === '/' || url === '/index') { // 读取index.html文件,把该文件响应给用户 fs.readFile(path.join(__dirname, 'index.html'), function (err, data) { if (err) { throw err; } res.writeHead(200, 'OK', { 'Content-Type': 'text/html; charset=utf-8' }); // res.setHeader('Content-Type', 'text/html; charset=utf-8'); res.end(data); }); } else if (url === '/login') { // 读取login.html文件,把该文件响应给用户 fs.readFile(path.join(__dirname, 'login.html'), function (err, data) { if (err) { throw err; } res.writeHead(200, 'OK', { 'Content-Type': 'text/html; charset=utf-8' }); // res.setHeader('Content-Type', 'text/html; charset=utf-8'); res.end(data); }); } else if (url === '/register') { // 读取register.html文件,把该文件响应给用户 fs.readFile(path.join(__dirname, 'register.html'), function (err, data) { if (err) { throw err; } res.writeHead(200, 'OK', { 'Content-Type': 'text/html; charset=utf-8' }); // res.setHeader('Content-Type', 'text/html; charset=utf-8'); res.end(data); }); } else if (url === '/404') { // 读取register.html文件,把该文件响应给用户 fs.readFile(path.join(__dirname, '404.html'), function (err, data) { if (err) { throw err; } res.writeHead(200, 'OK', { 'Content-Type': 'text/html; charset=utf-8' }); // res.setHeader('Content-Type', 'text/html; charset=utf-8'); res.end(data); }); } }); // 3. 启动服务 server.listen(9090, function () { // body... console.log('please visit: http://localhost:9090'); });模拟 Apache 实现静态资源服务器步骤:单独创建一个目录来实现,比如:创建一个"07-Apache"的目录。在该目录下新建 public 目录,假设该目录为静态资源目录。根据用户请求的路径在 public 目录下寻找对应路径下的资源。如果找到了,那么将该资源返回给用户,如果没找到则返回404错误。通过 mime 模块设置不同类型资源的Content-Type实现完毕后把素材中的'An Ocean of Sky' 和 'Hacker News'分别拷贝到静态资源目录下, 测试是否成功其他:介绍 NPM介绍 mime 第三方模块npm install mime在代码中直接var mime = require('mime')// 1. 加载对应模块 // 1.1 加载http模块 var http = require('http'); // 1.2 加载path模块,方便路径拼接 var path = require('path'); // 1.3 加载文件读取模块 var fs = require('fs'); // 1.4 加载判断文件MIME类型的模块 var mime = require('mime'); // 2. 创建http server var server = http.createServer(); // 3. 监听用户request事件 server.on('request', function (req, res) { // 1. 获取用户的请求路径, 并转换为小写 var url = req.url.toLowerCase(); // 判断如果请求的路径是 '/' 那么等价于 '/index.html' url = (url === '/') ? '/index.html' : url; // 2. 根据用户请求的url路径, 去public目录下查找对应的静态资源文件。找到后读取该文件,并将结果返回给用户 // 2.1 根据用户请求的url拼接本地资源文件的路径 var filePath = path.join(__dirname, 'public', url); // 2.2 根据请求的文件路径设置Content-Type res.setHeader('Content-Type', mime.lookup(url)); // 2.2 根据路径去读取对应的文件 // 【注意】读取文件前无需判断文件是否已经存在,而是在读取文件的回调函数中根据error的错误信息来判断读取文件是否成功以及发生的错误 fs.readFile(filePath, function (err, data) { // 判断是否有错误 if (err) { if (err.code === 'ENOENT') { // 判断是否是请求的文件是否不存在 res.setHeader('Content-Type', 'text/html; charset=utf8'); res.statusCode = 404; res.statusMessage = 'Not Found'; res.end('<h1>请求的资源不存在!</h1>'); } else if (err.code === 'EACCES') { // 判断文件是否有访问权限 res.setHeader('Content-Type', 'text/html; charset=utf8'); res.statusCode = 403; res.statusMessage = 'Forbidden'; res.end('<h1>Permission denied!</h1>'); } else { throw err; } } else { // 如果没有错误则将读取到的文件返回给用户 res.statusCode = 200; res.statusMessage = 'OK'; res.end(data); } }) }); // 4. 启动服务 server.listen(9000, function () { // body... console.log('server is running, please visit: http://localhost:9000'); });Common System Errors - 常见错误号EACCES (Permission denied)An attempt was made to access a file in a way forbidden by its file access permissions.访问被拒绝EADDRINUSE (Address already in use)An attempt to bind a server (net, http, or https) to a local address failed due to another server on the local system already occupying that address.地址正在被使用(比如:端口号备占用)EEXIST (File exists)An existing file was the target of an operation that required that the target not exist.文件已经存在EISDIR (Is a directory)An operation expected a file, but the given pathname was a directory.给定的路径是目录ENOENT (No such file or directory)Commonly raised by fs operations to indicate that a component of the specified pathname does not exist -- no entity (file or directory) could be found by the given path.文件 或 目录不存在ENOTDIR (Not a directory)A component of the given pathname existed, but was not a directory as expected. Commonly raised by fs.readdir.给定的路径不是目录设置 http 响应报文头实现弹框下载功能设置 Content-Type: application/octet-stream设置 Content-Disposition: attachment; filename=demo.txtvar http = require('http'); var server = http.createServer(function (req, res) { // body... res.writeHead(200, { 'Content-Type': 'application/octet-stream', 'Content-Disposition': 'attachment; filename=demo.txt' }); res.end('hello node.js'); }); server.listen(9000, function () { // body... console.log('server is running...'); });
2022年11月09日
159 阅读
0 评论
0 点赞
2022-10-06
使用nodejs发送邮件
对于登录注册或者一些监控、数据处理的定时任务,可能需要发送邮件的能力。今天分享一下使用node server发送邮件的流程。 发送邮件的过程是,你的客户端给邮件服务器发信息,然后邮件服务器发给目标邮件服务器,目标邮件服务器再通知到客户端,目标用户就收到了 如果我们使用qq客户端可以直接用账号密码登录自己的邮箱。使用node server发邮件,相当于第三方客户端。第三方客户端指的就是除了qq自己的客户端外的其他客户端。发邮件流程变成了 这里有个问题,使用qq客户端可以直接通过账号密码登录邮箱,第三方客户端使用账号密码登录肯定不安全,因此qq邮箱提供了授权码,第三方客户端可以通过授权码以用户身份访问邮箱服务器。由于授权码的权限可以控制,比如可以关闭服务,第三方客户端就无法使用授权码登录了,因此授权码比较安全。 node server发送邮件时候就是一个第三方客户端。使用nodejs发送邮件的操作流程是:从qq邮箱获取授权码安装nodemailer发送邮件Nodemailer模块使用npm下载安装Nodemailer模块:npm install nodemailer发送电子邮件下面的例子,使用QQ邮箱发送邮件,还需另外安装两个辅助模块,用于配置邮箱账号:npm install nodemailer-smtp-transport nodemailer-wellknown --save示例:var nodemailer = require('nodemailer'); var smtpTransport = require('nodemailer-smtp-transport'); var wellknown = require("nodemailer-wellknown"); var config = wellknown("QQ"); config.auth = { user:'你的账号@qq.com', pass:'你的密码' // QQ邮箱此处使用授权码 } var transporter = nodemailer.createTransport(smtpTransport(config)); var mailOptions = { from: '你的账号@qq.com', // 你的QQ邮箱网址,必须与上面配置一致 to: 'myfriend@qq.com', subject: 'Node.js邮件发送测试', text: 'test!' }; transporter.sendMail(mailOptions, function(error, info){ if (error) { console.log(error); } else { console.log('Email sent: ' + info.response); } }); 多个接收人要向多个收件人发送电子邮件,在mailOptions对象的“To”属性中添加邮箱地址,以逗号分隔:var mailOptions = { from: '你的账号@gmail.com', to: 'myfriend@yahoo.com, myotherfriend@yahoo.com', subject: 'Node.js邮件发送测试', text: 'test!' } 发送HTMLvar mailOptions = { from: 'youremail@gmail.com', to: 'myfriend@yahoo.com', subject: 'Sending Email using Node.js', html: '<h1>Welcome</h1><p>That was easy!</p>' }
2022年10月06日
117 阅读
0 评论
0 点赞