肯定写的比较乱,以后慢慢整理吧
Node.js是一个基于 Chrome V8引擎的JavaScript 运行环境
单线程, 事件驱动非阻塞式I/O的模型,使其轻量又高效
标题
Node.js中的模块
1.http模块
可以借助http模块,快速搭建一个迷你webserver
代码:
var http = require("http");
http.createServer(function(req,res){
res.end("这是一个服务")
}).listen(3000,"127.0.0.1")
需要知道以下几点:
- require是node.js中的引入功能
- createServer创建服务
- 创建服务中函数的参数**(req,res)** req代表请求 (收),res代表响应,(发)
- .listen监听服务,括号中(3000,“127.0.0.1”),3000代表端口,后边是服务器地址
- res.end会在页面输出括号中的内容,必须有这条res.end哪怕括号是空的,不然网页会一直转圈,无法结束
2.URL模块
引入
var url = require("url");
url常用API
url.parse() 将一个url字符串解析并返回一个 URL对象 {json格式}
var http = require("http");
var url = require("url");
var server = http.createServer(function(req,res){
// console.log(req)
console.log(req.url);
var urlObj = url.parse(req.url) //url.parse 将url转化为json格式
console.log(urlObj)
res.end()
})
server.listen(3000,"127.0.0.1")
url.format() 对一个URL对象进行格式化操作,返回一个URL字符串
var http = require("http");
var url = require("url");
var server = http.createServer(function(req,res){
var urlObj = {
protocol:"http",
host:"127.0.0.1:3000",
query:{
name:"zhouchuxiong",
age:27
},
pathname:"sport",
};
console.log(url.format(urlObj));
res.end()
})
server.listen(3000,"127.0.0.1")
这两个互相对应使用,需要什么格式就用什么方法
3.fs模块
fs模块是Node.js的一个核心模块,专门用来操作系统中的文件,常用的操作方式是对文件的读取和写入
var fs=require('fs')
载入fs模块,模块中所有方法都有同步和异步两种形式。异步方法中回调函数的第一个参数总是留给异常参数(exception),如果方法成功完成,该参数为null或undefined。异步写法demo:有一个回调函数。
fs.readFile(文件路径,options,回调函数)
功能:异步读取指定路径的文件,回调函数在读取文件完成后触发
fs.readFile("./student.txt","utf-8",function(err,data){
console.log(data);
res.end(data)
})
注意: function中第二个参数为文件内容,通过调用第二个参数来读取文件
fs.readFile("./img/kfc.jpg",function(err,data){
console.log(data);
res.end(data)
})
同样可读取图片,或者css文件等
fs.writeFile(文件路径,写入的数据,options,回调函数)
异步的向指定路径的文件写入指定数据。回调函数在写完指定数据后触发异步写入文件.,如果文件不存在,则自动创建。可以在文件里面写入任何的数据类型,所有数据都会被隐式转换成字符串。
fs.writeFile("./index.html","<h1>开始减肥</h1>",function(err){
res.end();
})
fs.readdir(文件路径,回调函数)
读取指定文件夹下的所有文件
var path = "./kfc/";
// 可以通过顺着文件夹来找到任意的文件
fs.readdir(path,"utf-8",function(err,files){
console.log(files);
fs.readFile(path+files[0],function(errar,data){
console.log(data);
res.end(data)
})
})
fs.mkdir(文件路径,回调函数)
创建指定路径的空文件夹
var http = require("http");
var url = require("url");
var fs = require("fs");
http.createServer(function(req,res){
if(req.url == "./favicon.ico"){
return;
}
res.writeHead(200, {
"Content-type":"text/html;charset=UTF-8"
})
// mkdir 用来创建文件夹
fs.mkdir("./helloWorld" ,function(err){
s.writeFile("./helloWorld/kfc.txt","麦当劳,function (error){
fs.readFile("./helloWorld/kfc.txt",function(err,data){
res.end(data)
})
})
})
}).listen(3000,"127.0.0.1")
fs.rename(oldPath, newPath,function(err){
})
修改文件名称,可更改文件的存放路径。
oldPath替换成newPath
4.queryString
querystring 模块提供用于解析和格式化 URL 查询字符串的实用工具。
简单点说比如我有以下一串字符串
let str="name=wz&age=18&sex=男"
这就是url路径后边携带的参数,queryString提供方法转换他的格式
let str="name=wz&age=18&sex=男"
console.log(qs.parse(str)) //字符串转换成object格式
let obj = { name: 'wz', age: '18', sex: '男' }
let escape=qs.stringify(obj)//object格式转换成字符串
querystring.escape() 方法以对 URL 查询字符串的特定要求进行了优化的方式对给定的 str 执行 URL 百分比编码。
console.log(qs.escape(escape)) //name%3Dwz%26age%3D18%26sex%3D%25E7%2594%25B7
console.log(qs.unescape("name%3Dwz%26age%3D18%26sex%3D%25E7%2594%25B7")) //"name=wz&age=18&sex=男"
响应头
// 设置响应头
// 参数1:状态码
// text/plain 表示的是纯文本
// text/html 表示以页面的方式输出
res.writeHead(200,{
"Content-type":"text/plain;charset=UTF-8","Access-Control-Allow-Origin":"*"})
后边的这个 **“Access-Control-Allow-Origin”:"*"**用来解决ajax跨域问题