前端学习|通信相关

244 阅读3分钟

数据交互

  1. 表单 http数据请求其实都是表单
    • 属性 action:提交到哪 method:方式(GET/POST;PUT/HEADER/DELETE;自定义) name:必须加,可以重复 submit:按钮提交
    • 数据提交方法 GET:数据放在url里
      • 容量有限
      • 看得见(仅限表单)
      • 有缓存,利于分享收藏
      POST:数据放在http的body里
      • 容量大
      • 看不见
      • 不缓存,没法分享收藏
    • 校验
  2. ajax 不用刷新,ajax可以跨域,跨域麻烦;性能低,单向
  3. jsonp 跨域,安全性太差
  4. WebSocket 性能高,双向,直接跨域
  5. http状态码:数字 1xx 消息 2xx 成功 3xx 重定向 301 永久重定向:浏览器不会再次请求老的地址 302 临时重定向:浏览器下次还会请求老的地址 304 缓存 4xx 客户端请求错误 5xx 服务端错误

跨域

表单 ajax:麻烦,安全 jsonp:简单,有风险 WebSocket

http/https协议

http 容易被攻击 https 安全

image.png

image.png

原生JS

HTTP协议,ajax

application/x-www-form-urlencoded

jsonp:越用越少 跨域

安全性问题——过于开放

ajax cors跨域 WebSocket formData

后台-nodejs: 1.原生 2.框架、库

原生nodeJS

NodeJS和其他后台语言不同:

优点:

  1. nodejs的对象、语法跟JavaScript一模一样;利于前端人员用
  2. 性能还可以
  3. 前后台配合方便

缺点:

  1. Java 极其丰富库支持

NodeJS用处:

  1. 服务器——小型后台系统、中间层
  2. 工具:测试、构建(grunt、gulp、WebPack...)、抓取

Nodejs搭建,Web服务器: http


运行NodeJS程序:

  1. 盘符 d:
  2. 进入目录 cd 目录
  3. 运行 node xxx.js

  1. nodejs和JavaScript差不多
  2. 模块
  3. http模块
let server=http.createServer(()=>{
    //有浏览器请求时执行的回调函数
  });
 server.listen(666);

  1. 系统模块
  2. 服务器完成——http、fs、流操作
  3. WebSocket——socket.io
  4. formData——ajax2.0、文件上传、进度
  5. cors跨域

Web服务器:

  1. 返回文件
  2. 数据交互(GET、POST)
  3. 数据库

get数据: url里面 小-32K

post数据: 作为body 大-1G


setHeader() writeHeader() write()


一个大数据包为什么切成一堆小包 1.方便所有人 2.容错强得多


// 整个url: url.parse("/aaa/bbb?a=12&b=5")

//数据: querystring.parse("a=12&b=5")


GET数据:

在"req.url"里面
let {pathname, query}=url.parse(req.url, true);

POST数据:

在body里面、比较大

  req.on('data', data=>{
    str+=data;
  });
  req.on('end', ()=>{
    let post=querystring.parse(str);
  });

接口:

1.定下来——接口文档 2.写出来


用户注册:

/reg?user=xxx&pass=xxx =>{err: 0, msg: '说明'}

用户登陆:

/login?user=xxx&pass=xxx =>{err: 0, msg: '说明'}


安全性:99.9%的漏洞都是懒

  1. 一切来自前台的数据都不可信
  2. 前后台都得进行数据校验 前台校验:用户体验 后台校验:安全性

http://localhost:8080/1.html => /1.html www/1.html

http://localhost:8080/www/1.html => /www/1.html www/www/1.html


数据库:

  1. 关系型数据库——MySQL、Oracle,最常见、最常用,数据之间是有关系的
  2. 文件型数据库——sqlite,简单、小
  3. 文档型数据库——MongoDB,直接存储异构数据——方便

MySQL:80%,免费,绝大多数普通应用,性能很高、安全性很高,容灾略差。

Oracle:要钱,金融、医疗,容灾特别强。


NoSQL:没有复杂的关系、对性能有极高的要求,redis、memcached、hypertable、bigtable。


数据库:数据库+接口+前台

ajax formData WebSocket