创建web服务器:

① 导入http模块:require导入

② 创建web服务器实例:调用http.createServer()方法

 ③ 为服务器绑定request事件:使用on方法绑定

④ 启动服务器:.listen方法,参数为端口号和回调函数。

const http = require('http')

const server = http.createServer()

server.on('request', (req, res) => {
    console.log('someone visit our web server')
})

server.listen(8080, () => console.log('server running at http://127.0.0.1:8080'))

 

req请求对象:存储客户端请求的数据和属性。(on函数的参数)

 

req的url属性存储客户端请求的url地址,method为客户端的请求方式。

const http = require('http')

const server = http.createServer()
// req是请求对象,包含了客户端相关的属性和数据
server.on('request', (req, res) => {
    console.log(req.url) // '/'
    console.log(req.method) // GET
})

server.listen(8080, () => console.log('server running at http://127.0.0.1:8080'))

 

res响应对象:存储服务器相关的属性和数据。(通过end方法发送内容,响应给客户端)

解决中文乱码:使用res的setHeader方法设置Content-Type为text/html;charset=utf-8

res.setHeader('Content-Type', 'text/html;charset=utf-8') //解决乱码

 

 

根据不同的url响应不同的html内容:

① 获取请求的url地址 ② 设置默认响应内容为404 Not found ③ 判断用户请求 ④ 设置Content-Type响应头防止中文乱码 ⑤ 使用res.end将内容响应给客户端。

 

const http = require('http')
const server = http.createServer()

server.on('request', (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')
    res.end(content)
})
server.listen(8080, () => console.log('http://127.0.0.1:8080'))

 

模块化:遵守固定规则,将大文件拆分为独立并且相互依赖的多个小模块

好处:提高代码复用性和可维护性,实现了代码的按需加载

 

Node.js中模块的分类:内置模块、自定义模块、第三方模块

 

 

加载模块:require方法

 

 

模块作用域:在定义模块的变量和方法只能在当前模块被访问,防止了全局变量的污染。

向外共享模块作用域的成员:

① module对象:每个.js自定义模块都具有的对象,存储了当前模块的各类信息。其中exports属性就是向外共享的重要属性。

② module.exports对象:在自定义模块中,使用module.exports对象,将模块内对象共享。

外界用require导入的模块就是自定义模块的module.exports对象。

使用require导入模块时,永远以module.exports指向的对象为准!即如果自定义模块给module.exports重新指向一个对象,require导入则指向这个新对象。

③ exports对象:默认情况下和module.exports对象指向相同。但最终以module.exports指向为准!

 

CommonJS规范:

① 每个模块内部module代表当前模块。

② module变量是对象,他的exports属性即module.exports是对外的接口。

③ 加载某个模块,即加载模块的module.exports属性,require用于加载模块。

 

包:即第三方模块

npm导入包:npm install 包名 / npm i 包名

 

npm 安装指定版本的包:npm i 包名 @版本号

 

包的语义化版本规范:

快速创建package.json:npm init -y

 

 

dependencies节点:位于package.json文件中,记录了使用npm下载的包的相关信息。

一次性安装所有需要的包:npm install / npm i  会读取package.json中的dependencies节点的包信息进行下载。

卸载包:npm uninstall 包名

 

devDependencies节点:存储开发时需要的包,而项目上线后不需要的包 npm i 包名 -D

 

切换npm下包镜像源:

 

 

nrm:切换镜像的命令工具

nrm ls:获取所有镜像源。nrm use 镜像名:切换镜像

 

包的分类:

1.下载包:被安装到项目的node_modules目录的包分为:① 项目依赖包(在devdependencies节点的包,只在开发使用:npm i 包名)② 核心依赖包(记录到dependencies节点的包,在开发和项目上线时都会使用:npm i 包名 -D)

2.全局包:执行npm -i时提供-g安装的包,只有工具性质的包才需要进行全局安装。

 

规范的包结构:

 

版权声明:本文为LWHBLOG原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/LWHCoding/p/16714415.html