Node.js

1、初识 Node.js

1.1 什么是Node.js

  • Node.js@ is a JavaScript runtime built on Chrome's V8 JavaScript engine.
  • Node.js是一个基于Chrome V8弓|擎的JavaScript运行环境。
  • Node.js的官网地址: https://nodejs.org/zh-cn/

1.2 Node.js 中的 JavaScript 运行环境

注意:

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

1.3 Node.js 可以做什么

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

  • 基础 Express 框架,可以快速构建Web 应用
  • 基于 Electron 框架,可以构建跨平台的桌面应用
  • 基于 restify 框架,可以快速构建API 接口项目
  • 读写和操作数据库,创建实用的命令行工具辅助前端开发、elc...

1.4 Node.js 环境的安装

1.4.1 区分LTS 版本和 Current 版本的不同

  1. LTS 为长期稳定版,对于追求稳定性的企业级项目来说,推荐安装LTS版本的Node.js.
  2. Current 为新特性尝鲜版,对热衷于尝试新特性的用户来说,推荐安装Current版本的Node.js.但是,Current 版本中可能存在隐藏的Bug或安全性漏洞,因此不推荐在企业级项目中使用Current版本的Node.js.

1.4.2 查看已安装的Node.js 版本号

  • 打开终端,在终端输入命令node -v后,按下回车键,即可查看已安装的Node.js 的版本号。
  • Windows 系统快速打开终端方式:使用快捷键(Windows徽标键+ R)打开运行面板,输入cmd后直接回车,即可打开终端。
     

Node.js 的学习路径:

  • JavaScript 基础语法 + Node.js 内置API(fs,path,http等) + 第三方框架(express,mysql  等)

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

1.5.1 终端的快捷命令

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

  • 使用↑键,可以快速定位到上- -次执行的命令
  • 使用tab键,能够快速补全路径
  • 使用esc键,能够快速清空当前已输入的命令
  • 输入cls命令,可以清空终端

2、文件系统模块

2.1 什么是fs文件系统模块

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

  • fs.readFile0 方法,用来读取指定文件中的内容
  • fs.writeFile0 方法,用来向指定的文件中写入内容

 

2.2 读取指定文件中的内容 

  • fs.readFile() 的语法格式

  •  fs.readFile() 示例代码

  • 判断文件是否读取成功 

2.3 向指定文件写入内容

  • fs.writeFile()的语法格式

  • fs.writeFile()示例代码 

  • 判断文件是否写入成功

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

       在使用fs模块操作文件时,如果提供的操作路径是以./或./开头的相对路径时,很容易出现路径动态拼接错误的问题。
       原因:代码在运行的时候,会以执行node命令时所处的目录,动态拼接出被操作文件的完整路径。
       解决方案:在使用fs模块操作文件时,直接提供完整的路径,不要提供./或../开头的相对路径,从而防止路径动态拼接的问题。
 

 

3、  path路径模块

3.1 什么是path路径模块

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

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

如果要在JavaScript 代码中,使用path模块来处理路径,则需要使用如下的方式先导入它:

const path = require('path')

3.2 路径拼接

1、path.join()的语法格式

使用path.join0方法,可以把多个路径片段拼接为完整的路径字符串,语法格式如下:
 

path.join([...paths])

 参数解读:

  • ...paths<String> 路径片段的序列
  • 返回值:<String>

2、path.join()代码示例

3.3 获取路径中的文件名

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

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

2. path.basename() 的代码示例

3.4 获取文件的拓展名 

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

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

2. path.extname() 示例代码

4、http 模块

4.1 什么是http模块

如何使用http 模块:

导入

const http = require('http')

4.2 进一步理解http 模块的作用

4.3 创建最基本的web服务器

1、创建服务器的基本步骤

  •  导入模块
  • 创建web 服务器实例
  • 为服务器示例绑定request 事件,监听客户端的请求
  • 启动服务器

2、实现步骤

导入模块

const http = require('http')

创建实例

const server = http.createServer()

为服务器绑定request 监听事件

启动服务器

3、req 请求对象

4、res 响应对象

5、解决中文乱码问题

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

核心实现步骤

动态响应内容

5、模块化

5.1 模块化的概念

把代码模块化拆分的好处

  • 提高代码的复用性
  • 提高代码的可维护性
  • 可以实现按需加载

5.2 模块化规范

 

6、Node.js 中的模块化

6.1 Node.js 模块的分类

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

  • 内置模块 (例如:Node.js 内置 fs,http,path 模块)
  • 自定义模块 (用户创建的每个js 文件,都是自定义模块)
  • 第三方模块 (第三方模块,使用需要按需下载)

6.2 加载模块

注:导入模块会自动执行模块

6.3 模块作用域

每个模块都有自己的作用域

好处是:防止变量全局污染

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

module 对象

module.exports 对象   ----对外文件的一个出口

共享成员时的注意点

exports 对象

exports 与 module.exports 的使用误区

7、 npm 与 包

7.1 包

什么是包

Node.js 中的第三方模块 又叫做包

包的来源

由第三方个人或团队开发出来的,免费供人使用

为什么需要包

从哪里下载包

如何下包

7.2 npm 初体验

格式化时间的高级做法

在项目中安装包的命令

初次安装后多了哪些文件

安装指定版本的包

包的语义化版本规范

7.3 包管理配置文件   ---- package.json

快速构建package.json

命令:

npm init -y

dependencies 结点

记录安装了哪些包

一次性安装所有的包

卸载包

命令:

npm uninstall

devDependencies 节点

7.4 解决下包速度慢的问题

为什么下包速度慢

npm 下载默认是从国外服务器进行下载

淘宝NPM镜像服务器

切换npm 下包镜像源

nrm

7.5 包的分类

共分为两大类:

  • 项目包
  • 全局包

项目包

被安装到项目的 node_modules 目录中的包,都是项目的包

项目依赖包又分为两类:

  • 开发依赖包  (被记录到devDependencies节点中的包,只会在开发期间会用到)
  • 核心依赖包  (被记录到dependencies节点中的包,开发期间和项目期间都会用到) 

全局包

 i5ting_toc

 

7.6 规范的包结构

7.7 开发属于自己的包

1、初始化包的基本结构

2、初始化package.json

注:设置的name 需要去npm 官网查阅是否有重复包名,不能用重复的name

3、在index.js 中定义格式化时间的代码

4、package.json 文件中的 main属性

require(包名)

如果不指定哪个 js 文件,require 会去选找 package.json main 属性中的文件

5、在index.js 中定义转义HTML 的方法

6、在index.js 中定义还原HTML的方法

7、将不同的功能进行模块化拆分

8、编写包的说明文档

7.8  发布包

1、 注册npm账号

2、登录npm 账号

 

 

3、把包发布到 npm 上

 注:如果报错了,可以检查一下包名是否有大写字母

4、 删除已发布的包

8、模块的加载机制

8.1 优先从缓存中加载

8.2 内置模块的加载机制

8.3 自定义模块的加载机制

8.4 第三方模块的加载机制

8.5 目录作为模块

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值