IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Node.js基础 -> 正文阅读

[JavaScript知识库]Node.js基础

初识Node.js

什么是Node.js

Node.js是一个基于chrome V8引擎的JavaScript运行环境。

Node.js可以做什么

Node.js作为一个JavaScript的运行环境,仅仅提供了基础的功能和API。然而,基于Node.js提供的这些基础功能,很多强大的根据和框架层出不穷,所以学会了Node.js,可以让前端程序员胜任更多的工作和岗位:

1.基于Express框架,可以快速构建web应用

2.基于Electron框架,可以构建跨平台的桌面应用

3.基于restify框架,可以快速构建API接口项目

4.读写和操作数据库、创建实用的命令行工具辅助前端开发,etc…

总之:Node是大前端时代的大宝剑,有了Node.js这个超级buff的加持,前端程序员的行业竞争力会越来越强。

Node.js怎么学

JavaScript基础语法+Node.js内置API(fc,path,http等)+第三方API模块(express,mysql等)

在Node.js环境中执行JavaScript代码

终端的快捷键

在windows的powershell或cmd终端中,我们可以通过如下快捷键,来提高终端操作效率:

1.使用↑键,可以快速定位到上一个执行的命令

2.使用Tab键,能够快速补全路径

3.使用esc键,能够快速清空当前输入的命令

4.输入cls命令,可以清空当前终端里面的命令

fs文件系统模块

什么是fs文件系统模块

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

例如:

  • fs.readFile()方法,用来读取指定文件中的内容
  • fs.witeFile()方法,用来向指定的文件中写入内容

fs文件系统模块

导入fs模块

如果要在JavaScript代码中,使用fs模块来操作文件,则需要使用如下方法先导入:

const fs = require(‘fs’)

读取指定文件中的内容

1.fs.readFile()的语法格式

使用fs.readFile()方法,可以读取指定文件中的内容,语法格式如下:

fs.readFile(path,[options],callback)

参数解读:

  • 参数1:必选参数,字符串,代表文件的路径
  • 参数2:可选参数,表示以什么编码格式来读取文件。
  • 参数3:必选参数,文件读取完毕后,通过回调函数拿到读取的结果

判断文件是否读取成功

判断err对象是否为null

向指定的文件中写入内容

1.fs.writeFile()的语法格式

使用fs.writeFile()方法,可以向指定的文件中写入内容,语法格式如下:

fs.writeFile(file,data[,options],callback)

参数解读:

  • 参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径
  • 参数2:必选参数,表示要写入的内容
  • 参数3:可选参数,表示以什么格式写入文件内容,默认值为utf8
  • 参数4:必选参数,文件写入完成后的回调函数

判断写入文件是否成功

判断err对象是否为null

fs模块路径动态拼接的问题

在使用fs模块操作文件时,如果提供的操作路径是以./或…/开头的相对路径时,很容易出现路径动态拼接错误的问题。

原因:代码在运行的时候,会执行node命令时所处的目录,动态拼接出被操作文件的完整路径。

解决方案:在使用模块操作文件时候,直接提供完整的路径,不要提供./或…/开头的相对路径,从而防止路径动态拼接出问题

缺点:移植性差,不利于维护

最好的解决方法:__dirname 表示当前文件所处的目录

path路径模块

什么是path路径模块

path模块是Node.js官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。

例如:

  • path.join(),用来将多个路径片段皮杰成一个完整的路径字符串
  • path.basename()方法,用来从路径字符串中,将文件名解析出来

导入path模块

const path = require(‘path’)

路径拼接

1.path.join()的语法拼接格式

使用path.join()方法,用来将多个路径片段皮杰成一个完整的路径字符串,语法如下:

path.join([…paths])

注意:凡是涉及拼接路径操作,都要使用path.join()方法进行处理。不要直接使用+号

获取路径中的文件名

1.path.basename()的语法格式

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

path.basename(path[,ext])

参数解读:

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

获取路径中的文件扩展名

1.path.extname()的语法格式

使用path.extname()方法,可以获取路径中的扩展名部分,语法格式如下:

path.extname(path)

参数解读:

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

http模块

什么是http模块

http模块是Node.js官方提供的、用来创建web服务器的模块。通过http模块提供的http.createServer()方法,就能方便的把一台普通的电脑,变成一台web服务器,从而对外提供资源服务。

如果要使用http模块创建Web服务器,则需要先导入它:

const http = require(‘http’)

了解http模块作用

服务器和普通电脑的区别在于,服务器上安装了web服务器软件,例如IIS、Apache等。通过安装这些服务器软件,就能把一台普通的电脑变成一台web服务器。

在Node.js中,我们不需要使用IIS,Apache等这些第三方web服务器软件。因为我们可以基于Node.js提供的http模块,通过几行简单的代码,就能轻松的手写一个服务器软件,从而对外提供服务。

服务器相关的概念

IP地址

IP地址就是互联网上每台计算机的唯一地址,因此IP地址具有唯一性。如果把‘个人电脑’比作‘一台电话’,那么‘IP地址’就相当于‘电话号码’,如果在知道对方IP地址的前提下,才能对应的电脑之间进行数据通信。

IP地址的格式,通常用‘点分十进制’表示成(a.b.c.d)的形式,其中,a,b,c,d都是0-255之间的十进制整数。例如:用点分十表示的IP地址(192.168.1.1)

注意:

1.互联网中每台Web服务器,都有自己的IP地址,例如:大家可以在Windows的终端中进行ping www.baidu.com命令,即可查看百度服务器的IP地址。

2.在开发期间,自己的电脑既是一台服务器,也是一台客服端,为了方便测试,可以在自己的浏览器中输入127.0.0.1这个IP地址,就能把自己的电脑当做是一台服务器进行访问了。

域名和域名服务器

尽管IP地址能够唯一标记网络上的计算机,但IP地址是一长串数字,不直观,而且不便于记忆,于是人们发明了一套字符型的地址方案,即所谓的域名地址。

IP地址和域名是一一对应的关系,这份对应关系存放在一种叫做域名服务器的电脑中,使用者只需要通过记号的域名访问服务器即可,对应的转化工作由域名服务器实现。因此,域名服务器就是提供IP地址和域名之间的转化服务的服务器。

注意:

1.单纯使用IP地址,互联网中的电脑也能够正常工作。但是有了域名加持,能够让互联网的时间变得更加方便。

2.在开发测试期间,127.0.0.1对应的域名是localhost,它们代表我们自己的这台电脑,在使用效果上没有任何区别。

端口号

计算机中的端口号,就好像是现实生活中的门牌号一样。通过门牌号,外卖小哥可以在整栋大楼众多的房间中,准确的把外卖送到你手里。

同样的道理,在一台电脑中,可以运行成百上千个web服务。每个web服务都对应一个唯一的端口号。客户端发送过来的网络请求,通过端口号,可以被准确地交给对应web服务进行处理。

注意:

1.每个端口号不能同时被多个web服务占用。

2.在实际应用中,URL中的80端口可以被省略。

创建最基本的web服务器

创建web服务器的基本步骤

1.导入http模块

2.创建web服务器实例

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

4.启动服务器

req请求对象

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

res响应对象

在服务器的request事件处理函数中,想访问与服务器相关的数据或属性。

解决中文乱码问题

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

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

核心实现步骤

1.获取请求的url地址

2.设置默认的响应内容为404Not found

3.判断用户请求的是否为/或/index.html首页

4.判断用户请求的是否为/about.html关于页面

5.设置Content-Type响应头,防止中文乱码

6.使用res.end()把内容响应给客户端

模块化的基本概念

什么是模块化

模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合,分解和更换的单元。

编程中的模块化

编程领域中的模块化,就是遵守固定的规则,把一个大文件拆成独立并互相依赖的多个小模块。

把代码模块化拆分的好处:

1.提高了代码的复用性

2.提高了代码的可维护性

3.可以实现按需加载

模块化规范

模块化规范就是对代码进行模块化的拆分和组合时,需要遵守的那些规则

例如:

  • 使用什么样的语法格式来引用模块
  • 在模块中使用什么样的语法格式向外暴露成员

模块化规范的好处:大家都遵循同样的模块化规范写代码,降低了沟通成本,极大的方便了各个模块之间的互相调用,利人利己。

Node.js中的模块化

Node.js中模块的分类

Node.js中根据模块来源的不同,将模块分为三大类,分别是:

  • 内置模块(内置模块是由Node.js官方提供的,例如fs,path,http)
  • 自定义模块(用户创建的每个js文件,都是自定义模块)
  • 第三方模块(由第三方开发出来的模块,并非官方提供的内置模块,也不是用户创建的自定义模块,使用前需要先下载)

加载模块

使用强大的require()方法,可以加载需要的内置模块,用户自定义模块,第三方模块进行使用。

注意:在使用require加载用户自定义模块期间,可以省略后缀名。

Node.js中的模块作用域

什么是模块作用域

和函数作用域类似,在自定义模块中定义的变量和方法,只能在当前模块内被访问,这种模块级别的访问限制,叫做模块作用域。

模块作用域的好处

防止了全局变量污染的问题

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

1.module对象

在每个.js自定义模块中有一个module对象,它里面存储了和当前模块有关的信息。

2.modele.exports对象

在自定义模块中,可以使用module.exports对象,将模块内的成员共享出去,供外界使用。

外界使用require()方法导入自定义模块时,得到的就是module.exports所指向的对象。

共享成员的注意点

使用require()方法导入模块时,导入的结果,永远以module.exports指向的对象为准。

exports对象

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

Node.js中的模块化规范

Node.js遵循了CommonJS模块化规范,CommonJS规定了模块的特性和各模块之间如何互相依赖。

CommonJS规定:

1.每个模块内部,module变量代表当前模块。

2.module变量是一个对象,它的exports属性是对外的接口。

3.加载某个模块,其实是加载该模块的module.exports属性。require()方法用于加载模块。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-26 10:04:39  更:2021-09-26 10:05:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:17:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码