node.js | 青训营学习笔记

93 阅读4分钟

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文件对外开放访问了