node.js基础

在node.js环境中,有两个全局变量  __dirname ,__filename,他们保存的是字符串

__dirname是当前js文件所在的目录:绝对路径

__filename是当前js文件的目录:绝对路径

1、http模块

写一个简单的http服务器

var http=require("http")  //引入node自带的模块,http这个模块可以调用函数来创建后端服务器
var app=http.createServer((req,res)=>{  //创建一个服务器对象,回调函数不会直接运行,会在用户每次访问当前计算机的ip端口运行
console.log(req.url)
if(req.url=="/999"){
res.end("hello world")  //给前端最后一次发送数据包
}else{
res.end("not found")
}}
app.listen("8090")  //监听计算机端口

用户在浏览器地址栏输入:http://服务器电脑的ip:端口号/999(网址)

2、fs模块 

用于读取文件

fs.readFile(path,(err,data)=>{})

path 填路径 可以绝对可以相对

err代表读取失败

data代表读取成功,它是一个buffer类型的数据(二进制数据流) 可以通过toString()转化为字符串

var http=require("http")
var fs=require("fs")
var app=http.createServer((req,res)=>{
if(req.url=="/home"){
fs.readFile("./src/22.jpg",(err,data)=>{  //读取图片发送给前端
if(!err){
res.end(data)
}
})
}else{
res.end("not found")
})
app.listen(8090)

fs模块的一些操作:

//写入文件(创建文件)==>当文件不存在就会创建
fs.writeFile(__dirname+"/src/a.txt","hello world",function(err){
console.lopg(err)
}

//删除文件:如果遇到删除权限问题会删除失败
fs.unlink(__dirname+"/src/a.txt",(err)=>{
console.log(err)
}

//拼接内容到文件
fs.appendFile(__dirname+"/src/a.txt","hello world",(err)=>{
console.log(err)
}

//创建目录
fs.mkdir(__dirname+"/b",(err)=>{
console.log(err)
}

//移动/重命名文件或目录:整个功能相当于重命名一个文件/文件夹路径
//移动文件有一个bug:新路径和旧路径必须是同一个根盘
var oldpath=__dirname+"/src/a/b"
var newpath=__dirname+"/src/c/b"
fs.rename(oldpath,newpath,(err)=>{
console.log(err)
}

//拷贝文件(拷贝文件以后两个文件都会存在磁盘中)
var oldpath=__dirname+"/src/a/b"
var newpath=__dirname+"/src/c/b"
fs.copyFile(oldpath,newpath,(err)=>{
console.log(err)
}

//读取目录
fs.readdir(__dirname+"/src",(err,arr)=>{
console.log(err,arr)
}

3、url模块

可以把url网址解析为一个对象

var http=require("http")
var fs=require("fs")
var url=require("url")
var app=http.createServer((req,res)=>{
console.log(req.url)
var path=url.parse(req.url).pathname
fs.readFile(__dirname+path,(err,data)=>{
res.end(data)
})
})
app.listen(8090)

4、querystring模块

可以把querystring参数解析为一个对象

var url=require("url")
var querystring=require("querystring")
var http=quire("http")
var fs=require("fs")
var app=http.createServer((req,res)=>{
let urlobj=url.parse(req.url)
let pathname=urlobj.pathname
let path=__dirname+"/src"+pathname
console.log(path)
if(pathname=="/"){path=__dirname+"/index.html"}
fs.readFile(path,(err,data)=>{
if(!err){
res.end(data)
}else if(pathname=="/login"){
let queryobj=querystring.parse(urlobj.query)
console.log(queryobj)
res.end("hello")
}else if(pathname=="/car"){
res.end("89988car")
}
else{
res.end("404 not found")
}
})
})
app.listen(8090)

5、mime模块

var mime=require("mime")
var url=require("url")
var querystring=require("querystring")
var http=require("http")
var fs=require("fs")
var app=http.createServer((req,res)=>{
let urlobj=url.parse(req.url)
let pathname=urlobj.pathname
if(pathname=="/"){pathname="/index.html"}
let path=__dirname+"/src"+pathname
console.log(999,path)
fs.readFile(path,(err,data)=>{
if(!err){
let type1=mime.getType(path) 
res.setHeader("content-Type",type1)
res.end(data)
}else if(pathname=="/login"){
let queryobj=querystring.parse(urlobj.query)
console.log(queryobj)
res.end("hello")
}else if(pathname=="/car"){
res.end("666666car")
}else{
res.end("404 not found")
}
})
})
app.listen(8080)

6、各种路径

(1)本地相对路径

  在这个页面中写路径: file://x1/x2/x2/index.html  

"./src/22.jpg"  写这个路径的文件的页面是在本地打开的==> file://x1/x2/x2/src/22.jpg

(2)本地绝对路径

从根盘符开始写路径:"F:\H5\课堂练习\day55\src\b\dirname.html"

(3)相对网络路径

当前页面的网址:"协议://ip:port /src/news/index.html   querystring hash"

页面内部的路径:"./src/22.jpg" ==> "协议://ip:port /src/news/src/22.jpg"

(4)绝对网络路径

"协议://ip:port /src/news/src/22.jpg"

(5)网络相对根路径

"/src/22.jpg"

(6)本地相对根路径

"file:///c:/src/22.jpg"

7、网页加载流程

(1)浏览器的地址栏输入的网址,敲回车,会请求一次服务器服务器会返回一个数据包,就是网页代码(html格式的文本文档)

(2)浏览器开始去运行解析html文本(此时还没有外部,图片,js,css,字体库资源)

(3)解析时遇到了img标签的src属性会异步,开始再次网络请求服务器 ,服务器返回数据包(图片编码) 然后渲染出来

(4)解析时遇到了link-href 会异步,开始再次网络请求服务器 ,服务器返回数据包(css编码) 然后加载

(5)解析时 xxxx-url会异步,开始再次网络请求服务器 ,服务器返回数据包(对应编码) 然后加载

(6)解析时script-src会异步,开始再次网络请求服务器 ,服务器返回数据包(js编码) 然后用js引擎去执行编码

(7)所有资源加载完毕了,才会触发window.onload

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值