• 初识node.js与内置模块


    一、初始node.js

    1.1 什么是Node.js?

    (1)、JavaScript 由三部分组成,ECMAScript,DOM,BOM
    (2)、Node.js是由ECMAScript及Node 环境提供的一些附加API组成的,包括文件、网络、路径    等等一些更加强大的 API

    1.2  node运行

    • 浏览器是JS的前端运行环境
    • Node.js是Js的后端运行环境
    • Node.js中无法调用DOM和BOM等浏览器内置AP

    node是基于javascript来使用的,所以node文件的后缀名都是 .js
    退出运行的方法:crtl c 运行文件:

    node 文件名.js 

    1.3 Node.js学习路径
    JS基础语法- Node.js内置API模块(fs,path,http)-第三方API模块(express,mysql)

    二、Node.js环境的安装

    2.1. 什么是终端?
    终端是专门为开发人员设计的,用于实现人机交互的一种方式
    1.windows+R
    2.输入cmd

    2.2. 在Node.js环境中执行JS代码

    1.打开终端
    直接在地址栏敲cmd,可以使cmd切换到当下文件的地址
    还可以在当前目录下的空白处按住shift键,右键打开powerShell
    2.输入node 要执行的js文件的路径
    node 空格 文件名
    2.3 终端中的快捷键

    三.系统模块

    3.1 什么是系统模块

    Node运行环境提供的API. 因为这些API都是以模块化的方式进行开发的, 所以我们又称Node运行环境提供的API为系统模块

    3.2 什么是fs文件系统模块

    fs模块是node.js官方提供的,用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求

    · readFile()   读取文件

    · writeFile()   写入文件

    3.2.1 向指定的文件中读取内容

    语法:

    fs.readFile(path[,options],callback)
    
    • 参数1:必选参数,字符串,表示文件的路径
    • 参数2:可选参数,表示以什么编码格式来读取文件
    • 参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果。
    1. // 1.导入fs模块,来操作文件
    2. const fs = require('fs')
    3. // 2.调用fs.readFile()方法读取文件
    4. fs.readFile('./file/1.txt', 'utf8', function (err, dataStr) {
    5. // 打印失败的结果,如果读取成功,则err的值为null
    6. // 如果读取失败,则err的值为错误对象,dataStr的值为undefined
    7. console.log(err)
    8. // 打印成功的结果
    9. console.log(dataStr)
    10. })

    判断文件是否读取成功

    1. // 1.导入fs模块,来操作文件
    2. const fs = require('fs')
    3. // 2.调用fs.readFile()方法读取文件
    4. fs.readFile('./file/1.txt', 'utf8', function (err, dataStr) {
    5. // 打印失败的结果,如果读取成功,则err的值为null
    6. // 如果读取失败,则err的值为错误对象,dataStr的值为undefined
    7. if (err) {
    8. return console.log('读取文件失败' + err.message)
    9. }
    10. console.log('读取文件成功' + dataStr)
    11. })

    3.2.2 向指定的文件中写入内容

    语法:

    fs.writeFile(file, data[, options], callback)
    
    • 参数1:必选参数,字符串,表示文件的存放路径
    • 参数2:必选参数,表示要写入的内容
    • 参数3:可选参数,表示以什么编码格式来读取文件,默认值是utf8
    • 参数4:必选参数,文件写入完成后的回调函数。
    1. const fs = require('fs')
    2. fs.writeFile('./kl..txt', 'hello', err => {
    3. if (err) throw err;
    4. console.log('文件写入成功')
    5. })

    3.2.3 案例:考试成绩整理

    核心实现步骤

    • 导入需要的fs文件系统模块
    • 使用fs.readFile()方法,读取素材目录下的成绩.txt文件
    • 判断文件是否读取失败
    • 文件读取成功后,处理成绩数据
    • 将处理完成的成绩数据,调用fs.writeFile()方法,写入到新文件中
    1. // 导入fs模块
    2. const fs = require('fs')
    3. // 2.调用fs.readFile()方法读取文件
    4. fs.readFile('./file/2.txt', 'utf8', function (err, dataStr) {
    5. // 打印失败的结果,如果读取成功,则err的值为null
    6. // 如果读取失败,则err的值为错误对象,dataStr的值为undefined
    7. // 3.判断文件是否读取成功
    8. if (err) {
    9. return console.log('读取文件失败' + err.message)
    10. }
    11. console.log('读取文件成功' + dataStr)
    12. // 4.1先把成绩的数据,按照空格进行分割
    13. const arrOld = dataStr.split(' ')
    14. // 4.2循环分割后的数组,对每一项的数据,进行字符串的替换操作
    15. const arrNew = []
    16. arrOld.forEach(item => {
    17. arrNew.push(item.replace('=', ':'))
    18. })
    19. console.log(arrNew)
    20. // 4.3把新数组中的每一项,进行合并,得到新的字符串
    21. const newStr = arrNew.join('\n\r')
    22. console.log(newStr)
    23. // 5.调用fs.writeFile()方法,把处理完毕的成绩,写入到新文件中
    24. fs.writeFile('./file/成绩ok.txt', newStr, function (err) {
    25. if (err) {
    26. return console.log('写入文件失败!' + err.message)
    27. }
    28. console.log('写入文件成功!')
    29. })
    30. })

     在这里插入图片描述

    4 path路径模块

    path模块是Node.js官方提供的,用来处理路径的模块,它提供一系列的方法和属性,用来满足用户对于路径的处理需求
    如果要在JS代码中,使用path模块来处理路径,则需要使用以下的方式先导入它

    const path=require('path')

    4.1 path.join()

    使用path.join方法,可以把多个路径片段拼接为较为完整的路径字符串

    path.join([...paths])

    4.2 path.basename()

    使用该方法可以获取路径中的最后一部分,经常通过这个方法获取路径中的文件名,语法格式如下

     path.basename(path[,ext])

    参数:path:必选参数,表示一个路径的字符串
    ext可选参数,表示文件拓展名
    返回:表示路径中的最后一部分

    4.3 path.extname()

    使用该方法可以获取路径中的拓展名部分,语法格式如下

    path.extname(path)

     path:必选参数,表示一个路径的字符串
    返回:返回得到的拓展名字符串

    案例:时钟

    1. // 1.1 导入需要的模块并创建正则表达式
    2. const fs=require('fs')
    3. // 1.2导入path路径处理模块
    4. const path=require('path')
    5. // 1.3匹配标签
    6. // 其中\s表示空白字符,\S表示非空白字符,*表示匹配任意次
    7. const regStyle=/<style>[\s\S]*<\style>/
    8. // 1.4匹配<stript></stript>标签的正则
    9. const regScript=/<script>[\s\S]*<script>/

    5. http模块

    5.1 基础概念


    什么是客户端,什么是服务器?
    在网络节点中,负责消费资源的电脑,叫做客户端。
    负责对外提供网络资源的电脑,叫做服务器。
    Http模块是Node.js官方提供的,用来创建web服务器的模块。通过http模块提供的Http.createServer()方法,就能方便的把一台普通电脑,变成一台web服务器,从而对外提供Web资源服务。

    const http=require('http')

     5.2 创建最基本的web服务器

    1.导入Http模块

    const http=require('http')
    

    2.创建web服务器实例

    const server=http.createServer()
    

    3.为服务器实例绑定request事件,监听客户端的请求

    1. //使用服务器实例的.on()方法,为服务器绑定一个request事件
    2. server.on('request',(req,res)=>{
    3. //只要有客户端来请求我们自己的服务器,就会触发request事件,从而调用这个事件处理函数
    4. console.log('someone visit our web server.')
    5. })

    4.启动服务器

    1. //调用server.listen(端口号,cb回调)方法,即可启动web服务器
    2. server.listen(80,()=>{
    3. console.log('http server running at http://127.0.0.1')
    4. })

    5. req请求对象

    只要服务器接收到了客户端的请求,就会调用server.on()为服务器绑定的request事件处理函数
    如果想在事件处理函数中,访问与客户端相关的数据或属性,可以使用如下的方式:

    1. server.on('request',(req,res)=>{
    2. //req是请求对象,它包含了与客户端相关的数据和属性,例如:
    3. //req.url是客户端相关的数据和属性,例如:
    4. //req.url是客户端请求的url地址
    5. //req.method 是客户端的method请求类型
    6. const str='Your request url is ${req.url},and request method is ${req.method}'
    7. console.log(str)
    8. })

     6.  res响应对象

    1. server.on('request',(req,res)=>{
    2. //res是响应对象,它包含了与服务器相关的数据和属性,例如:
    3. //要发送到客户端的字符串
    4. const str='Your request url is ${req.url},and request method is ${req.method}'
    5. //res.end()方法的调用:
    6. //向客户端发送指定内容,并结束这次请求的处理过程
    7. res.end(str)
    8. })

    7. 解决中文乱码问题

    当调用res.end()方法,向客户端发送中文内容的时候,会出现乱码问题,此时,需要手动设置内容的编码格式

    1. server.on('request',(req,res)=>{
    2. //发送的内容包含中文
    3. conststr='您请求的url地址是${req.url},请求的method类型是${req.method}'
    4. //为了防止中文显示乱码的问题,需要设置响应头
    5. res.setHeader('Content-Type','text/html;charset=utf-8')
    6. //把包含中文的内容,响应给客户端
    7. res.end(str)
    8. })

    8. 根据不同的url响应不同的html内容

    1. server.on('request',function(req,res){
    2. const url =req.url //1.获取请求的Url地址
    3. let content ='<h1>404 Not found!</h1>'//2.设置默认的内容
    4. if(url=='/'||url ==='/index.html'){
    5. content='<h1>首页</h1>'//3.用户请求的是首页
    6. }else if(url==='/about.html'){
    7. content='<h1>关于页面</h1>'
    8. }
    9. //为了防止中文显示乱码的问题,需要设置响应头
    10. res.setHeader('Content-Type','text/html;charset=utf-8')
    11. //把包含中文的内容,响应给客户端
    12. res.end(str)
    13. })

    六.模块化

    6.1 模块化的基本概念
    什么是模块化?

    模块化是指解决一个复杂问题时,自顶向下逐层把系统划分为若干模块的过程。对于整个系统来说,模块是可组合、分解和变换的单元
    编程领域中的模块化:就是遵守固定的规则,把一个大文件拆成独立并且互相依赖的多个小模块。

    模块化规范

    就是对代码进行模块化的拆分与组合时,需要遵守的规则
    使用什么样的语法格式来引用模块
    在模块中使用什么样的语法格式向外暴露成员

    6.2 Node.js中的模块化

    根据模块来源的不同,将模块分为了三大类,分别是:
    内置模块(fs,path,http)
    自定义模块(用户创建的每个Js文件)
    第三方模块(由第三方开发出来的模块)

     

     什么是模块作用域?
    和函数作用域类似,在自定义模块中定义的变量、方法等成员,只能在当前模块内被访问,这种模块级别的访问限制,叫做模块作用域
    防止了全局变量污染的问题
    向外共享模块作用域中的成员
    module对象:在每个·.js自定义模块中都有一个module对象,它里面存储了和当前模块有关的信息
    module.export对象
    可以使用该对象将模块内的成员共享出去,供外界使用。外界用require方法导入自定义模块时,得到的就是Module.exports所指的对象

    在这里插入图片描述

    exports对象
    由于module.exports单词写起来比较复杂,为了简化向外共享成员的代码,Node提供了exports对象。默认情况下,exports和module.exports指向同一个对象,最终共享的结果,还是以module.exports指向的结果为准
    exports和module.exports的使用误区

    在这里插入图片描述

     模块化规范

    在这里插入图片描述

     

  • 相关阅读:
    ORBSLAM3.10 关键帧选取策略
    数据结构——优先级队列(堆)
    【软考 系统架构设计师】软件架构设计⑥ 软件产品线
    面试经典 150 题 14 —(数组 / 字符串)— 134. 加油站
    《向量数据库指南》——向量数据库Milvus Cloud搭建Excel公式编辑器助手
    你是否正确地编写了 Git 提交信息?
    树状数组维护权值线段树
    SpringMVC之文件上传下载
    电力安全事故安全培训3D仿真展馆绿色环保持久复用
    Nginx配置文件
  • 原文地址:https://blog.csdn.net/Cc200171/article/details/125423283