文章目录
- 0.JS 与 Node.js的理解
- ①内置API模块
- 1. 导入 fs 模块,导入文件系统模块
- 2. 导入 path 模块 ,读取文件,路径处理模块
- 3.http(创建web服务器的)模块
-
0.JS 与 Node.js的理解
-
浏览器中JS
组成:JS核心语法,webAPI
-
JS在浏览器中被执行原因:待执行的JS代码 => JS解析引擎(不同浏览器解析引擎不同)
-
为什么JS可以操作DOM,BOM:浏览器内置其API函数
-
浏览器中JS运行环境(代码运行所需必要环境):Chrome浏览器运行环境:V8引擎(负责解析和执行JS代码)和内置API函数(运行环境提供的特殊接口,只能在所属的运行环境中被调用)
-
JS运行环境:前端运行环境(浏览器),后端运行环境(Node.js)
-
————————————————我是分割线——————————————————
-
Node.js
是 一个基于Chrom V8引擎的JS 运行环境,无法调用DOM和BOM等浏览器内置API
-
Node.js 作用:快速构建 Web 应用,构建跨平台应用,构建API接口项目,读写和操作数据库,创建实用的命令行工具辅助前端开发。。。。。
-
node.js 学习路径:JS基础语法- Node.js内置API模块(fs,path,http)-第三方API模块(express,mysql)
①内置API模块
1. 导入 fs 模块,导入文件系统模块
- 写入文件内容 fs.writeFile(‘文件名称’,‘添加内容’,functuon(err) { 可以是判断条件 })
- fs.writeFile()方法只能用来创建文件,不能用来创建路径
- 重复调用fs.writeFile()只能写入同一个文件,新写入的内容会覆盖之前的旧内容
- 读取文件内容 fs.readFile(‘.文件名称’,‘utf8’,function(err,dataStr){ 判断条件 }
2. 导入 path 模块 ,读取文件,路径处理模块
- 路径的拼接 path.join
path.join(任意多个路径片段),多个路径拼接一个完整路径字符串
../ 抵消前边路径
const pathStr = path.join('/a','/b/c','../','./d','e') \a\b\d\e
读取当前文件下的,加path会自动去掉拼接错误的 .
const pathStr2 = path.join(__dirname,'/1.txt')
- 返回输出带(不带)后缀的文件名 path.basename(fpath)
- 返回文件名的后缀 path.extname(fpath)
3.http(创建web服务器的)模块
- 客户端:在网络节点中,负责消费资源的电脑;
- 服务器:负责对外提供网络资源的电脑,互联网中每台Web 服务器都有自己的IP地址(每台计算机的唯一地址),开发期间,自己电脑既可以做服务器也可做客户端,浏览器输入 127.0.0.1 这个IP地址(也就是 localhost ),就可吧自己电脑当服务器访问了
- 通过http模块提供的Http.createServer()方法,就能方便的把一台普通电脑,变成一台web服务器,从而对外提供Web资源服务。
- 域名地址:由于IP地址不直观而被创造的字符型地址方案,使用时会被域名服务器(DNS)转化为IP地址
- 端口号:类似门牌号,将客户端发送过来的请求准确的交给WEB服务进行处理。
- 一台电脑可以运行无数web服务,每个web服务对应唯一端口号。
- 实际应用中,URL中的80端口可以被省略
- 应用:
- 导入模块
const http=require('http')
- 创建web服务器实例
const server = http.createServer()
- 为服务器实例绑定request事件,监听客户端的请求
server.on('request', (req, res) => { console.log('someone visit our web server!'); })
- 启动服务器
server.listen(80, () => { console.log('http server running at http://127.0.0.1:80'); })
- req 请求对象:request请求事件中,访问与客户端相关的数据或属性
server.on('request', req => {
const url = req.url
const method = req.method
const str = `Your request url is ${url},and request method is ${method}`
console.log(str);
})
其中 req 地址 url 和方法 method 可以通过postman改变
8. res 响应对象 :request请求事件中,访问与服务器相关的数据或属性 .
- res.end( ) 向客户端发送指定内容,并结束这次请求的处理过程
- 防止响应中文乱码 :设置响应头 Content-Type值为 text/html;charset=utf-8
const str = `你打开的是 ${url},并且相应端口是 ${method}`
res.setHeader('Content-Type', 'text/html;charset=utf-8')
仍出现乱码请重启服务
- 不同url响应不同 html 内容
const http = require('http')
const server = http.createServer()
server.on('request', function(req, res) {
const url = req.url
let content = '<h1>404 Not Found!</h1>'
if (url === '/' || url === '/index.html') {
content = '<h1>首页</h1>'
} else if (url === '/about.html') {
content = '<h1>关于页面</h1>'
}
res.setHeader('Content-Type', 'text/html;charset=utf-8')
console.log(content);
res.end(content)
})
server.listen(80, () => {
console.log('server running at http://127.0.0.1');
})
1.案例:实现clock的web服务器
- 核心思路:把文件的实际存放路径(磁盘目录内),作为每个资源的请求 url 地址
(浏览器),<通过自己写的·web服务器转化> - 注意:浏览器无法直接向磁盘目录发送请求,磁盘目录也无法直接向浏览器发送接受的响应。
- 浏览器 向 web服务器发送请求,把请求的url地址当做读取文件的路径,再到磁盘读取文件;读取完成后在web服务器内将读取到的内容(字符串)通过res.end( ) 响应给客户端,再向浏览器发送响应。
- 此时服务器作用:字符串搬运工
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)