node.js | 青训营学习笔记
这是我参与「第五届青训营 」伴学笔记创作活动的第 6天
模块
引入读取文件模块
const fs = require('fs');
使用相对路径的写法,相对路径以当前cmd所在路径为准,容易出错
fs.readFile('./txt.txt', 'utf-8', function (err, string) {
console.log(err);
})
处理文件路径问题 解决:提供完整文件存放路径 __dirname 表示当前文件所处的路径
console.log("当前的目录" + __dirname)
fs.readFile(__dirname + '/txt.txt', 'utf-8', function (err, string) {
console.log(err);
// console.log(string);
})
path路径模块
path 路径模块
const path = require('path');
路径拼接
const pathStr = path.join('/a', '/b/c/d', '../', '/e')
console.log(pathStr)
获取路径名
const pathStr2 = '/a/b/c/d/index.html';
const name = path.basename(pathStr2);
console.log(name) //输出index.html
获取文件拓展名
console.log(path.extname(pathStr2)) //输出.html
http模块
http模块 作用,将电脑变成web服务器
ip地址
ip地址就是互联网上每台计算机的唯一地址,因此ip地址具有唯一性。 ip地址的格式,通常用点分十进制表示成a。b。c。d的形式, 如192.168.1.1 每个数字都在0-255之间
域名和域名服务器
ip地址:不容易记忆 39.156.66.18 域名:www.baidu.com
ip和域名是一一对应的关系,之分对应的关系存放在一个电脑中 (域名服务器),用户出入域名,转换成ip地址,之后再访问
在开发测试期间,127.0.0.1对应的域名是localhost, 他们都代表我们自己的电脑
端口号
计算机的端口号,就好像现实生活中的门牌号,起到 唯一标识的作用
例:在一台电脑中运行成百上千个web服务 每一个web服务都对应这一个唯一的端口号,客户端发送来的网络请求 通过端口号,可以被准确的交给
客户端发起请求 http://127.0.0.1 80,表示启用80服务
创建web 服务器的基本步骤
1.导入http模块 2.创建web服务器实例 3.为服务器实例绑定request事件,监听客户端的请求 4.启动服务器
1.导入http模块
const http = require('http')
2.创建web服务器实例
const server = http.createServer()
3.为服务器实例绑定request事件,监听客户端的请求
server.on('request', (req, res) => {
console.log("有人来访问服务器")
req是请求对象,它包含宇客户端相关的数据和属性,例如:
req.url 是客户端请求的url地址
const url = req.url;
req.method是客户端请求的method类型
const method = req.method;
const str = "you request url is:" + url + " and your request type is " + method
res 响应对象
res.end(str);
4.启动服务器
server.listen(80, () => {
console.log('server running at http://127.0.0.1')
})
const http = require('http')
const server = http.createServer()
server.on("request", (req, res) => {
console.log("有人来访问服务器")
let url = req.url;
let method = req.method;
res.end("you request url is" + url + "and your request type is" + method)
})
server.listen("80", function () {
console.log("server is listen on 8080")
})
模块化规范
node.js 遵循了commonjs 模块化规范,commonjs规定了模块的特性和各模块之间如何相互依赖 Commonjs规定
1.每个模块内部,module变量代表当前模块 2.module 变量是一个对象,它的exports属性 是对外的接口 3.加载某个模块,其实是加载该模块的module.exports 属性 require()方法用于加载模块
express
01简介
express本质,就是基于node.js的包
02express基本使用
1.导入express
const express = require('express');
2.创建web 服务器
const app = express()
3.调用app.listen,参数分别为端口号、启动成功后的回调函数
app.listen(80, () => {
console.log('express server running at http://127.0.0.1')
})
03监听请求
//1.监听get请求
/*
通过app.get()方法,可以监听客户端的get请求,具体的语法格式如下:
参数一:客户端请求的url地址
参数二:请求对应的处理函数
req:请求对象(包含了与请求相关的属性与方法)
res:响应对象(包含了与响应相关的属性与方法)
*/
//2.获取url中携带的查询参数
/*
通过req.query对象,可以访问到客户端通过查询字符串的形式,发送到服务器的参数:
*/
const express = require('express')
const app = express()
app.get('/user', function (req, res) {
console.log(req.query)
//req.query 默认是一个空对象
//客户端使用?name=zhangsan&age = 20 这种形式发送到服务器的参数
//可以通过req.query 对象访问到
//例如 req.query.name
res.send({
name: 'zhangsan',
age: 20,
gender: 'man'
})
})
//
app.get('/user/:id', function (req, res) {
//req.params 是动态匹配到的url参数,默认也是一个空对象
console.log(req.params)
res.send(req.params)
})
app.listen(80, () => {
})
04托管静态资源
express.static()
express 提供了一个非常好用的函数,叫做express。static() 我们可以非常方便地创建一个静态资源服务器 例如,通过如下代码就可以将public目录下的图片、css文件、JavaScript文件对外开放访问了