前端知识梳理之HTTP协议

HTTP 的请求方法

具体有哪些请求方法?

http/1.1规定了以下请求方法(注意,都是大写):

Read More

前端知识梳理之安全篇

什么是 XSS 攻击?

XSS 全称是 Cross Site Scripting(即跨站脚本),为了和 CSS 区分,故叫它XSS。XSS 攻击是指浏览器中执行恶意脚本(无论是跨域还是同域),从而拿到用户的信息并进行操作。

这些操作一般可以完成下面这些事情:

  • 窃取Cookie。
  • 监听用户行为,比如输入账号密码后直接发送到黑客服务器。
  • 修改 DOM 伪造登录表单。
  • 在页面中生成浮窗广告。
  • 通常情况,XSS 攻击的实现有三种方式——存储型、反射型和文档型。原理都比较简单,先来一一介绍一下。

存储型

存储型,顾名思义就是将恶意脚本存储了起来,确实,存储型的 XSS 将脚本存储到了服务端的数据库,然后在客户端执行这些脚本,从而达到攻击的效果。

Read More

前端知识梳理之渲染篇

说一说从输入URL到页面呈现发生了什么?——网络篇

构建请求

浏览器会构建请求行:

1
2
// 请求方法是GET,路径为根路径,HTTP协议版本为1.1,可用谷歌调试工具 查看 Response Headers .
GET / HTTP/1.1

Read More

前端知识梳理之JS数组篇

JS数组的高阶函数之基础篇

什么是高阶函数

概念非常简单,如下:

一个函数就可以接收另一个函数作为参数或者返回值为一个函数,这种函数就称之为高阶函数。

数组中的高阶函数

map
  • 参数:接受两个参数,一个是回调函数,一个是回调函数的this值(可选)。
    其中,回调函数被默认传入三个值,依次为当前元素、当前索引、整个数组。
  • 创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果
  • 对原来的数组没有影响

Read More

前端知识梳理之JS基础篇

JS数据类型

JS原始数据类型有哪些?引用数据类型有哪些?

在 JS 中,存在着 6 种原始值,分别是:

  • boolean
  • null
  • undefined
  • number
  • string
  • symbol

引用数据类型: 对象Object(包含普通对象-Object,数组对象-Array,正则对象-RegExp,日期对象-Date,数学函数-Math,函数对象-Function)

说出下面运行的结果,解释原因。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function test(person) {
person.age = 26
person = {
name: 'hzj',
age: 18
}
return person
}
const p1 = {
name: 'fyq',
age: 19
}
const p2 = test(p1)
console.log(p1) // -> ?
console.log(p2) // -> ?

Read More

前端知识梳理之CSS

元素水平垂直居中

水平居中

  • 对于行内元素: text-align: center;
  • 对于确定宽度的块级元素:
    • width和margin实现。margin: 0 auto;
    • 绝对定位和margin-left: -width/2, 前提是父元素position: relative
  • 对于宽度未知的块级元素
    • table标签配合margin左右auto实现水平居中。使用table标签(或直接将块级元素设值为display:table),再通过给该标签添加左右margin为auto。
    • inline-block实现水平居中方法。display:inline-block和text-align:center实现水平居中。
    • 绝对定位+transform,translateX可以移动本身元素的50%。
    • flex布局使用justify-content:center

垂直居中

  • 利用line-height实现居中,这种方法适合纯文字类
  • 通过设置父容器相对定位,子级设置绝对定位,标签通过margin实现自适应居中
  • 弹性布局flex:父级设置display: flex; 子级设置margin为auto实现自适应居中
  • 父级设置相对定位,子级设置绝对定位,并且通过位移transform实现
  • table布局,父级通过转换成表格形式,然后子级设置vertical-align实现。(需要注意的是:vertical-align: middle使用的前提条件是内联元素以及display值为table-cell的元素)。

浮动布局的优缺点,以及有哪些方式清除浮动.

定义

浮动布局简介:当元素浮动以后可以向左或向右移动,直到它的外边缘碰到包含它的框或者另外一个浮动元素的边框为止。元素浮动以后会脱离正常的文档流,所以文档的普通流中的框就变现的好像浮动元素不存在一样。

Read More

前端知识梳理之HTML

HTML5和HTML4 一些不同之处?

声明方面

1
<!DOCTYPE html>  //HTML5 文件类型声明(<!DOCTYPE>)更简洁

标签方面

Read More

ES2015,2016,2017 特性 及使用

概述

ECMAScript 和 JavaScript 到底是什么关系?

1996 年 11 月,JavaScript 的创造者 Netscape 公司,决定将 JavaScript 提交给标准化组织 ECMA,希望这种语言能够成为国际标准。该标准从一开始就是针对 JavaScript 语言制定的,但是JavaScript已经被Netscape公司注册为商标。再者想体现这门语言的制定者是 ECMA,不是Netscape,故取名ECMAScript,这样也有利于保证这门语言的开放性和中立性。
简而言之,ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现。

ECMAScript版本 发布时间 新增特性
ECMAScript 2009(ES5) 2009年11月 扩展了Object、Array、Function的功能等
ECMAScript 2015(ES6) 2015年6月 类,模块化,箭头函数,函数参数默认值等
ECMAScript 2016(ES7) 2016年3月 includes,指数操作符
ECMAScript 2017(ES8) 2017年6月 sync/await,Object.values(),Object.entries(),String padding等

Read More

React Native开发之React基础

# React是什么?

React 是 Facebook 推出的开源 JavaScript Library,React 是一个声明式,高效且灵活的用于构建用户界面的 JavaScript 库。使用 React 可以将一些简短、独立的代码片段组合成复杂的 UI 界面,这些代码片段被称作“组件”。React 还可以使用 Node 进行服务器渲染,或使用 React Native 开发原生移动应用。

Read More

React Native列表之FlatList

在APP开发过程中,列表可谓是页面最重要的一种展现形式了,几乎每一个APP都离不了列表,那么在这篇文章中将向大家分享在React Native中该如何实现列表,以及FlatList的原理和实用指南。

在React Native的早期版本中列表通常使用ListView来实现,新版React Native推荐我们使用FlatList来实现列表,那么为什么推荐使用FlatList列表呢?接下来就让我从FlatList的由来说起:

Read More