Node.js 基础学习(1)

Node.js 基础学习

Node.js是基于Chrome V8引擎的JavaScript运行环境。
官网:https://nodejs.org/zh-cn/
浏览器为前端运行环境,Node.js为后端运行环境,无法调用DOM和BOM等浏览器内置API。

Node.js的作用:

1)基于Express框架(https://www.expressjs.com.cn/),快速构建Web应用

  • 2)基于Electron框架(https://electron.org/),构建跨平台桌面应用
  • 3)基于restify框架(https://restify.com/),快速构建API接口项目
  • 4)读写和操作数据库、创建实用的命令行工具辅助前端开发

Node.js指令

查看版本号:node -v
执行JavaScript代码:node 执行的js文件的路径

fs文件系统模块

fs模块:操作文件的模块,提供一系列的方法和属性,满足用户对文件的操作需求。

导入:const fs = require('fs')

1)、fs模块-fs.readFile()

fs.readFile():读取指定文件中的内容

//path:必选参数,字符串,表示文件的路径;options,可选参数,表示以什么编码格式来读取文件;callback,必选参数,文件读取完成好,通过回调函数拿到读取的结果
fs.readFile(path[, options], callback)

示例:

fs.readFile('./file/1.txt','utf8', function(err,dataStr){
  //打印失败的结果:1)读取成功,err的值为null。2)读取失败,err的值为错误对象,dataStr的值为underfined。
 console.log(err)
 console.los(dataStr)
})

2)、fs文件系统模块-fs.writeFile()

fs.writeFile():指定文件中写入内容
语法:

//path:必选参数,制定一个文件路径的字符串,表示文件的存放路径;data:必选参数,写入的内容;options,可选参数,表示以什么编码格式来写入文件内容,默认值为utf8;callback,必选参数,文件写入完成后的回调函数
fs.readFile(path,data[, options], callback)

示例

fs.writeFile('./file/2.txt','asd',function(err){
  //文件写入成功,err的值等于null;文件写入失败,err的值等于一个错误对象
 console.log(err)
})

3)、fs模块-路径动态拼接的问题

提供操作路径是以./或…/开头的相对路径,很容易出现路径动态拼接的问题
原因:代码在运行的时候,会以执行node命令时所处的目录,动态拼接出操作文件的完整路径
解决方法:
1)使用绝对路径,但移植性非常差,不利于维护
2)__dirname:表示当前文件所处的目录,使用方法:与相对路径进行拼接(使用path.join()进行拼接)

path路径模块

用于处理路径的模块,提供一系列的方法和属性,用来满足用户对路径的处理需求。

导入:

const path = require('path')

方法:

path.join():
path.basename():用来从路径字符串中,将文件名解析出来

1)、path路径模块-路径拼接

path.join():用来将多个路径片段拼接成一个完整的路径字符串
语法:

//返回值:路径的字符串<string>
path.join([...paths])
../:可抵消前一层路径,./不能抵消路径

path路径模块-获取路径的文件名
path.basename():可以获取路径中的最后一部分,获取路径中的文件名
语法

//path<string>:必选参数,表示一个路径的字符串;ext<string>可选参数,表示文件扩展名;返回值:<string>表示路径中的最后一部分
path.basename(path[,ext])

path路径模块-获取路径的文件扩展名
path.extname():可以获取路径中的最后一部分,获取路径中的文件名

语法

//path<string>:必选参数,表示一个路径的字符串;返回值:<string>表示得到的扩展名字符串
path.extname(path)

http模块

客户端:负责消费资源的电脑
服务器:负责对外提供网络资源的电脑
http:用来创建web服务器的模块,通过http.createServer()方法,就能把一台普通的电脑,变成一台>Web服务器,从而向外提供Web资源服务。

导入

const http =require('http')

http模块-http模块的作用

服务器和普通电脑的区别:服务器上安装了web服务器软件,例如IIS、Apache。
使用http模块中,通过几行简单的代码,就手写一个服务器软件,不需要使用第三方web服务器软件。

http模块-服务器相关概念

IP地址
每台计算机的唯一地址,具有唯一性。格式:通常“点分十进制”,表示成(a.b.c.d)的形式,a,b,c,d都是0~255之间的十进制。每台web服务器,都有自己的IP地址。开发期间,做自己的电脑即是服务器,也是客户端。
域名和域名服务器
域名是IP的别名,与IP地址是一一对应关系,对应关系存放在一种叫做域名服务器(DNS)的电脑中。域名服务器是提供IP地址和域名之间转换服务的服务器。开发测试期间,127.0.01对应域名是localhost。
端口号
每个web服务都对应一个唯一的端口号。客户端发送来的网络请求,通过端口号,可以被准确地交给对应的web服务器进行处理。1)每个端口号不能同时被多个web服务占用。2)在实际应用中,URL的80端口可以被省略。

http模块-创建最基本的web服务器

创建web服务器的基本步骤
1)导入http模块
2)创建web服务器实例,调用createServer()
3)为服务器实例绑定request事件,监听客户端的请求

//只要服务器接收到客户端的请求,就会调用通过server.on()为服务器绑定的request事件处理函数。
//req请求对象:包含了与客户端相关的数据和属性。req.url是客户端请求的URL地址;req.method是客户端请求的method。
//res响应消息,调用res.end(),向客户端发送指定的内容,并结束这次请求的处理过程。
server.on('request',function(req,res){
  req.url
  req.method
})

4)启动服务器,调用.listen(端口号,cb回调方法)

505错误:端口号被占用
解决中文乱码问题:手动设置内容的编码格式,设置Content-Type响应头。

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

http模块-根据不同的url响应不同的html内容

核心实现步骤
1)获取请求的url地址。
2)设置默认的响应内容为404 Not found。
3)判断用户请求的是否为/或/index.html首页。
4)判断用户请求的是否为/about.html关于页面。
5)设置Content-Type响应头,防止中文乱码。
6)使用res.end()把内容响应给客户端。

模块化

模块化是指解决一个复杂问题时,自顶向下层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元。
编程领域中的模块化,就是遵守固定的规则,把一个大文件拆成独立并互相依赖的多个小模块。
1)提高了代码的复用性
2)提高代码的可维护性
3)可以实现按需加载

模块化-模块化规范

模块化规范就是对代码进行模块化的拆分与组合时,需要遵守的那些规则。
好处:降低沟通成本,方便各个模块之间的相互调用
Node.js遵循CommonJS模块化规范。CommonJS规定了模块的特性和各模块之间如何相互依赖。
CommonJS 规定:
1)每个模块内部,module变量代表当前模块
2)module变量是一个对象,它的exports属性(module.exports)是对外的借口
3)加载某个模块,其实是加载该模块的module.exports属性。require()方法用于加载模块。

模块化-模块

分类(3):内置模块(官方提供),自定义模块(用户创建),第三方模块(需要下载)
加载模块:

//加载内置的fs模块
const fs = require('fs')
//加载用户自定义模块,可以省略.js后缀名
const custom = require('./custom.js')
//加载第三方模块
const moment = require('moment')

使用require()方法加载其他模块时,会执行加载模块中的代码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Q J X

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值