Nodejs基础学习和使用

Nodejs学习

什么是NodeJs?
  • 是基于谷歌V8JS引擎运行的JavaScript环境
Node中处处皆模块:
  • 创建的JS文件都是自定义模块
  • Node中自带了很多内置模块
  • npm下载的是第三方模块

使用

导出/暴露模块:

语法:

module.exports

modue是Node中的一个全局对象;
module.exports是模块的出口,默认值是一个对象{}

加载:
require
/*Demo:*/ let obj = require(‘模块路径’)

加载自定义模块,必须加路径,至少是./,但是可以省略后缀

内置模块(核心模块):

fs文件系统模块:

在这里插入图片描述
加载模块(初始化):

const fs = require('fs');

异步读取文件方法:

fs.readFile('路径/变量', '编码(默认utf-8)', (err, data) => {}

回调函数的注意事项:

  • err处的形参表示错误信息
  • data处的形参表示读取的结果
  • 能读取文件,形参errnulldata处返回二进制字符串
  • 不能读取文件,形参err为一个对象{name, message};形参dataundefined
  • 视频、音频、图片文件不需要写编码

异步写入文件方法:

fs.writeFile('路径/变量', '写入的内容', err => {})

注意:

  • 如果文件存在,覆盖原有的内容
  • 如果文件不存在,创建一个新的文件
  • err无报错返回null;报错返回对象(同上)

err中始终有一个看不见的message方法,错误条件判断的时候可以输出err.message

path模块:

加载模块(初始化):

const path = require('path')

获取路径中的后缀:

path.extname(路径变量)

Ex:

path.basename(url, 需要忽略的后缀名)

路径拼接:

path.join(路径/变量 | __dirname)

注意:

  • __dirname代表抓取当前JS文件的绝对路径
  • 变量可以写多个,也可以直接写字符串
  • 默认转换/\划线
querysting模块(

作用:处理字符串

加载模块(初始化):

querystring = require('querystring')

序列化:将对象类型转换成字符串

querystring.stringify(变量)

反序列化:将字符串类型转换

querystring.parse(变量)
  • 默认会将中文编码,以及编码的字符解码

http模块

基础http模块四步:

1.导入:

const http = require('http');

2.创建:

server = http.createServer();

3.监听

server.on('request', (req, res) => {
	//回复响应(响应体)
	res.end(); //必写!!
})

4.启动

server.listen(端口, function() {console.log('服务器启动了')})

res.end响应体:

  • 必须放到最后写,不能在设置了响应体后又设置请求信息
  • 响应体无论如何都只能是字符串

扩展:
一些可以写在监听事件中的模块对象,他们可以帮助设置http服务的参数

1.参数req处负责控制请求相关的信息:

获取请求方式,比如得到getpost

req.method

获取请求地址中除根路径意外的部分(可以理解为网页的域名后面的/后的内容)

req.url

2.参数res负责控制响应相关的信息

设置响应的状态码(并非业务的状态码)

res.statusCode = 200

设置响应头

res.setHeader('key', 'value')

可以通过设置响应头的形式控制响应回复的形式

例如:

1.响应中文

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

2.响应html网页提示或信息

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

更多的请求头可查询菜鸟教程

常见的媒体格式类型:
在这里插入图片描述

npm使用

初始化

npm init -y

下载模块

npm install or i

指定下载某个版本

npm install 软件名@版本号

注意:npm默认从国外下载,速度很慢
方法一:直接改成国内淘宝镜像

npm config set registry https://registry.npmmirror.com

方法二:下载nrm更新镜像源

npm i nrm
nrm ls
nrm use taobao

卸载模块:

npm uninstall or un

加载模块:

const moment = require('moment')

实际开发中的开发依赖和项目依赖:

  • 项目依赖
npm i 包名
npm 包名 --save
npm 包名 -S

项目依赖都会写在package.jsondependencies文件中
在这里插入图片描述

  • 开发依赖(非必须)
npm i 包名 --save-dev
npm 包名 -D

开发依赖都会写在package.jsondevDependencies文件中
在这里插入图片描述

项目中收到package.json文件导入需要的包:
下载开发依赖以及项目依赖

npm i

只下载项目依赖

npm i --production

怎样使用第三方模块?

• 和使用内置模块一样,需要使用 require 加载模块
• 调用模块提供的方法完成工作
• 不用担心不会用,好的第三方模块都会用使用文档或者官方网站的。
• 有些模块没有官网,去 github 查找模块的使用文档,或者百度。

全局模块

在安装包名后面加 -g 即可

卸载全局模块也同样

jasontoken使用
const jwt = require('jsonwebtoken')
// 参数1:存储的对象 参数2:加密的字符串 参数3:有效期
token = "Bearer " + jwt.sign(
    {id: 8}, "secret", {expiresIn: '1d'}
    );
console.log(token);
//token分为Bear and Bearer

require的加载机制
  1. 判断缓存中有没有正在加载的模块,如果有,使用缓存的内容,没有就创建
  2. 判断有没有./路径前缀

if
有路径,加载自定义模块 => 找同名 => 找.js后缀 => 找.json后缀 =>报错
故然模块不能省略路径前缀,但可以省略文件后缀(默认)
if
无路径,加载内置模块 => 加载第三方模块

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值