NODEJS小结

NODEJS 模块化规范遵循的commonJS

commonJS规定:
1.每个模块内部,module变量代表当前模块
2.module变量是一个对象,他的exports属性是对外的接口
3.加载某个模块,其实是加载该模块的module.exports属性 require()方法用于加载模块

什么是nodejs 一个基于Chrome V8 引擎的javascript运行环境
express框架 快速构建 web应用(服务器)
restify框架,快速构建API接口项目
内置模块: fs(读取文件 写入文件) path路径(path.join拼接路径 path.basename 路径中解析文件名 path.extname 获取路径中的扩展名)
http模块
服务器相关:

  1. IP地址 每台服务器都有自己的IP地址
    2.域名和域名服务器 IP地址和域名是一一对应关系 放在域名服务器(DNS)中,域名服务器就是提供IP地址和域名之间的转换服务的服务器
    3.端口号 每个web服务器对应一个唯一的端口号,可苦短发送的网络请求,可以准确的交给对应的web服务区处理 80端口号省略

CORS跨域资源共享 Cross-Origin Resource Sharing
一系列HTTP响应头组成,这些HTTP响应头决定浏览器是否阻止前端JS代码跨域获取资源
浏览器的同源安全策略默认阻止网页跨域获取资源 但如果配置了CORS相关的HTTP响应头就可以接触
跨域: 协议 域名 端口号 任意不同引起安全策略 解决办法JSOP(仅支持get) CORS 反向代理

MYSQL数据库
查询语句 SELECT * FROM 表名称
更新语句Update UPDATE 表名称 SET 列表名 = 新值 WHERE 列名称= 某值
删除语句 delete DELETE FROM user(表名) WHERE id = 4

创建基本的web服务器
1.导入http模块 const http = require(‘http’)
2.创建web服务器实例 const server = http.createServer()
3.为服务器实例绑定request事件,监听客户端发送过来的网络请求
Server.on(‘request’, (req,res) => {console.log(’Someone visit our web server.’)})
4.启动服务器 server.listen(80, () => {
console.log(‘http server running at http://127.0.0.1’})

模块化:
好处: 提高代码的复用性 提高代码的可维护性 可以实现按需加载(在那个面试题中都可以用)降低沟通成本
nodejs中三类模块 内置模块 const fs = require(‘fs’) 自定义模块 const custom = require(‘./custom.js’) 加载第三方模块 const moment = require(‘moment’) moment这个单词有点熟悉(应该是处理事件格式的第三方插件 前端中 还有dayjs)
模块化作用域中向外共享成员 module.exports require接收
注: 使用require()方法导入模块时,导入的结果,永远以module.exports指向的对象为准 同一作用域中不要共用 module.exports 和 exports

模块的加载机制: 优先从缓存中加载 多次调用require不会导致模块的代码被执行多次 内置模块的加载机制优先级最高 自定义模块加载是必须指定./或者…/开头的路径标识符

express web开发框架 专门用来创建web服务器的 本质 第三方的包

创建基本的服务器:

  1. const express = require(‘express’) 2. const app = express()
  2. app.listen(80, () => {console.log(‘express server running at http://127.0.0.1 ’)})

监听GET请求: app.get(‘请求URL’, function(req,res){处理函数})
监听POST请求: app.post(‘请求URL’, function(req,res){处理函数})
通过res.send()方法,可以把处理好的内容发送给客户端
通过req.query对象,可以访问到客户端通过查询字符串的形式,发送到服务器的参数
通过req.params对象,可以访问到URL中通过:匹配的动态参数
express.static()可以创建一个静态资源服务器
app.use(express.static(‘public’)) 将public目录下的图片,css文件 和js文件对外开放访问 多次调用 可以托管多个静态资源目录
挂载路径前缀
app.use(‘/public’, express.static(‘public’))
nodemon app.js 可以实现代码修改后 自动重启项目的效果

express路由:客户端的请求与服务器处理函数之间的映射关系
分为三部分: 请求的类型 请求的URL地址 处理函数
最简单的路由挂载 app.get(‘/’, (req,res) => {res.send(‘hello world’)})

将路由抽离为单独的模块的步骤如下:
1.创建路由模块对应的js文件
var express = require(‘express’)
var router = express.Router()
router.get(‘/user/list’, function(req,res) {res.send(‘get user list’)})
module.exports = router

2使用app.use() 函数注册路由模块
const userRouter = require(‘./router/user.js’)
app.user(user.Router)

中间件

本质就是一个function处理函数
app.get(‘/’, function(req,res,next)) 必须包含next参数,而路由处理函数只包含req和res
next 函数 是实现多个中间件连续调用的关键,它表示把流转关系转交给下一个中间件或者路由
注: 1.路由之前注册中间件 2,客户端发送过来的请求,可以连续调用多个中间件处理 3,执行完中间件的业务代码之后,不要忘记调用next函数
4. 防止代码逻辑混乱 调用next函数后不要在写额外的代码
5.连续调用多个中间件时,多个中间件之间,共享req和res

前后端分离的优缺点:

  1. 开发体验好 前端注重UI 后端注重api
    2.用户体验好 ajax技术的广泛应用 极大提高了用户的体验 轻松实现页面的局部刷新
    3.减轻了服务器端的渲染压力
    4.不利于SEO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值