Nodejs

什么是node

  • chrome V8 runtime
  • 事件驱动
  • 非阻塞i/o

优点:高并发特别好(在python出来之前并发问题node是处理最好的,python强于node)
i/o:input output 输入输出流 正常情况下i/o的操作都是阻塞的,相当于同步的ajax

为什么要学node

  1. 防止甩锅
    前端在前后端交互中,可以明确到底是前端储问题还是后台出问题,省的后台爸爸甩锅到前台
  2. 能够书写API
  3. 了解前后端交互流程
  4. 全栈工程师

js运行环境

  1. 浏览器
  • 基本语法
  • bom
  • dom
  • ajax
  • 系统文件,服务器文件(不能,不是语言不能,只是出于安全性考虑)
  1. 服务器
  • 基本语法
  • 操作数据库
  • 操作本地文件

结论:限制语言能力的不是语言本身,而是语言的运行环境

nvm

在需要的时候想起来就行
node的版本管理工具,可以实现node版本的切换

安装及使用教程

nvm ls 查看
nvm use v10.8.0 使用版本

npm

  1. 临时使用
    npm install express --registry http://registry.npm.taobao.org
  2. 全局使用
    npm config set registry https://registry.npm.taobao.org
    //配置后通过以下方式验证是否成功
    npm config get registry / npm info express
  3. 安装cnpm
    npm install -g cnpm --registry=http://registry.npm.taobao.org

个人更加建议使用2,2使用但是不用安装cnpm

node的语言环境

REPL – 打开命令行,输node直接在命令行写代码

模块化

  1. 内置模块
  2. 第三方模块
  3. 自定义模块
自定义模块
  1. 创建一个模块(一个js就是一个模块)
  2. 导出一个模块
  3. 引入一个模块并调用
let name = {
	sayHello(){
		console.log("hello world")
	}
}
module.exports = name;
let module = require("./moduile")
moduile.sayHello()

内置模块

文件操作(fs)

const fs = require(‘fs’)

实现文件夹的增删改查

注意:异步不会发生阻塞,同步会发生阻塞,造成系统崩毁。处理错误仓用方法是try…catch

  • 同步实现
    fs.readdirSync(path [,mode])
    在这里插入图片描述
  • 异步实现
    fs.readdir(path [,mode],callback)
    在这里插入图片描述
    2.增(创建一个文件夹) 已经存在的文件夹不可以被创建
  • 同步实现
    fs.mkdirSync(path [,mode])
    在这里插入图片描述
  • 异步实现
    fs.mkdir(path [,mode] , callback)
    在这里插入图片描述
    3.更改
  • 同步实现
    fs.renameSync(oldPath,newPath)
  • 异步实现
    fs.rename(oldPath,newPath,callback)

4.删除
注意:只能删除空文件夹

  • 同步实现
    fs.rmdirSync(path)
  • 异步实现
    fs.rmdir(path,callback)
实现文件内容的增删改查

这里只写异步写法,同步同上

  1. 创建文件(覆盖写入)
    fs.writeFile(path,content,callback)
    在这里插入图片描述
  2. 写入文件
    fs.appendFile(path,content,callback)
    在这里插入图片描述
  3. 读取文件
    fs.readFile(path,[‘utf8’],callback)
    在这里插入图片描述但是控制台上输出的并不是我们所想要的内容,而是Buffer二进制数据流
    在这里插入图片描述
    此时我们有两种方法
  • 在参数中加入’utf8’
  • data.toString(‘utf8’)
  1. 删除文件
    fs,unlink(’./name.txt’,(err) => {
    )

  2. 判断是文件还是文件夹
    class --> fs.stats

fs.stat('./node01',(err,stats) => {
	if(stats.isFile()){
		//是文件夹
	}else{
		//不是文件夹
	}
})
url

url 统一资源定位器
const url = require(‘url’)
常用有两个方法:

  1. url.parse(string)
    将url字符串转为对象
  2. url.format(obj)
    将url对象转为字符串
querystring

const qs = require(“querystring”)

  1. qs.parse()
    query字符串转换为query对象
    在这里插入图片描述一般来说,query字符串的形式都会是"name=wang&pass=111&sex=1",但如果是"name-wang#pass-111#sex-1“”这种形式的又该如何呢??
    qs.parse(string,"#","-") – 这时我们就需要parse的另外两个参数了
    第一个参数:需要转换为query对象的query字符串
    第二个参数:以哪个参数区分键值对
    第三个参数:以哪个参数区分键和值

  2. qs.stringify(obj)
    将query对象转换为query字符串
    qs.stringify(obj,"^","-") 同上

  3. qs.unescape(string) 解码

  4. qs.escape(string) 编码

express框架

首先带大家大致了解下前后端的职责

前端:写界面 请求数据 数据处理
后端: 写api接口

接下来会以登陆接口为例进行分析
登录接口逻辑分析:

  1. 接收用户传递数据
  2. 处理数据
  3. 返回数据
express基本使用

express官网

  1. 安装express
    npm install express --save
  2. 使用
    在这里插入图片描述
    只需在浏览器url中输入 http://localhost:3000/user/login
    在这里插入图片描述
    显示出来即表示成功,但是需要注意的是,对于post请求不可这样使用
服务器

在这里补充下服务器相关知识
ifconfig max查看ip
ipconfig window查看ip方法

服务器介绍
  1. 服务器就是一台电脑
  2. 服务器软件(apache tomcat iis nignx node)
  3. 服务器ip和端口号
局域网

服务器通过网线(无线)连接,每一台电脑都有一个IP

ip

确定服务器主机的位置

port

确定服务器里某一个程序(端口号)

api接口构成要素

ip port pathname method 接受用户传过来的数据(数据格式后端定)

接受get参数 ---- query

在这里插入图片描述

接受post参数 ---- body

在这里插入图片描述但是此时打印出来的是undefined。这是为啥呢?
原因是express不能直接解析消息体,必须通过第三方插件解析
------body-parser 插件

body-parser 插件

在express中想要解析post传来的参数,需要通过body-parser插件
post方式传递时,参数可分为三类:

  1. application/x-www-form-urlencoded 表单传输
  2. application/json json传参
  3. formdata 文件传输常用格式

安装 npm install body-parser
使用

  • 引入 const bodyParse =require(“body-parser”)
  • 使用
    app.use(bodyParse.urlendcoded({extended: false})) //解析表单数据 application/www-form-urlencoded
    app.use(bodyParse.json()) //解析json
    在这里插入图片描述
express路由

会经常用到,很实用
目录结构
在这里插入图片描述
service.js(首页)
在这里插入图片描述
user.js

在这里插入图片描述

中间件 middlewear

可分为三类:

  1. 内置中间件 static
  2. 自定义中间件
  3. 第三方中间件
自定义中间件

1. 全局使用

在这里插入图片描述

2. 局部使用

在这里插入图片描述

内置中间件

static 静态资源目录
静态资源: 指定一个目录,目录可以被访问(等同于apache的www)

(等待)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值