node那点事

关于node的几项问题
nodejs作为运行在服务器,虽然是使用js作为开发语言,但是无法获取Dom,Bom
nodejs的变量作用于当前文件,例如A.js定义的全局变量无法在B.js文件中直接使用,如果需要调B.js的变量方法,需要使用module.exports导出,或者exports.变量名=值
http模块创建服务器
createServer() 创建一个服务器
end(string),end只能发送字符串类型,如果是对象数组可使用JSON.stringify转换为字符串
1 | const http = require("http"); |
上述代码可简写
1 | const http = require("http"); |
使用write写入数据
除了使用end发送数据外,也可以使用write写入
1 | const http = require("http"); |
使用writeHead写入响应头部
writeHead与setHeader效果相同,都是设置响应头部,writeHead(状态码,{….});
1 | const http = require("http"); |
fs文件操作模块
几个常用文件操作的方法
- fs.writeFile(file, data[, options], callback) 当
file
是文件名时,则异步地写入数据到文件(如果文件已存在,则覆盖文件)。data
可以是字符串或 buffer。 - fs.writeFileSync(file, data[, options]) 同上
- fs.rmdir(path[, options], callback) 删除目录recursive
如果为 true,则执行递归的目录删除。 在递归模式中,错误不会被报告(如果 path 不存在),并且操作会被重试(当失败时)。 默认值: false。 - fs.rmdirSync(path[, options]) 同上
- fs.stat(path[, options], callback) 统计文件/目录信息,包括创建时间…
- fs.rename(oldPath, newPath, callback) 异步地把 oldPath 文件重命名为 newPath 提供的路径名。 如果 newPath 已存在,则覆盖它。 除了可能的异常,完成回调没有其他参数。
- fs.renameSync(oldPath, newPath) 同上
- fs.existsSync(path) 如果路径存在,则返回 true,否则返回 false。
- fs.mkdir(path[, options], callback) 异步地创建目录。
- fs.mkdirSync(path[, options]) 同上
- fs.readFile(path[, options], callback) 异步地读取文件的全部内容。
- fs.readFileSync(path[, options]) 同步同上
- fs.appendFileSync(path,data) 追加数据到某个文件,某该文件不存在,则创建
读取某个位置的所有文件/目录
1 | const fs = require('fs'); |
读取某个文件的数据
1 | const fs = require('fs'); |
使用模板引擎 art-template
相关链接: 链接
处理静态资源
将css/js/image/video文件放到public公共文件夹中
请求响应中匹配/public/开头,并读取相关文件返回,参考以下代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17const http = require("http");
const fs = require("fs");
const server = http.createSever((request,response)=>{
let url = request.url;
if(/^\/public\//.test(url)){
const file = fs.readFileSync('.'+url);
response.end(file);
}else if(url === '/'){
const file = fs.readFileSync('./page/1.html');
response.setHeader("Content-Type","text/html;charset=utf-8");
response.end(file);
}
}).listen(3000,err=>{
if(!err){
console.log("服务器启动成功");
}
})1
2
3
4<img src="/public/1.jpg"/>
<link href="/public/css/1.css"/>
<script src="/public/js/1.js"/>
接收GET参数
1 | const http = require("http"); |
接收post参数
1 | const http = require('http'); |
url模块
url.parse(url,[true/false]); //将url格式化,用于获取参数,第二个参数为是否将query转为一个对象
queryString模块
queryString.parse(url,分割符,切割符); 解析字符串为一个对象
1 | queryString.parse('name=shao.yuhong&age=24'); |
需注意
1 | queryString.parse('?name=shao.yuhong&age=24'); |
针对其它切割字符串的情况
1 | queryString.parse('name/shao.yuhong&age/4','&','/'); |
express基于nodejs的开发框架
安装
1 | npm install express --save |
代码
1 | const express = require('express') |
express获取 GET参数
1 | const express = require('express') |
获取POST参数
获取POST参数,需要安装body-parser,body-parser会将post的参数封装到req.body中
1 | npm install body-parser |
使用方法
1 | var bodyParser = require('body-parser') |
将css/image/js设置为公共资源返回
1 | app.use('/public',express.static('路径')) |
常用的几个插件
art-template 模板引擎
cheerIo 将访问的dom文档转化为实例
- 本文标题:node那点事
- 本文作者:邵预鸿
- 创建时间:2021-03-12 21:41:41
- 本文链接:/images/logo.jpg2021/03/12/node那点事/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!