2019-07-01

BTW,这里虽然将http切换为了https,还是建议保留http。所以我们在切换的时候可以做http和https的兼容,具体实现方式是,去掉页面链接中的http头部,这样可以自动匹配http头和https头。例如:将http://www.baidu.com改为//www.baidu.com。然后当用户从http的入口进入访问页面时,页面就是http,如果用户是从https的入口进入访问页面,页面即使https的。

19、git语句:

G****it init初始化

G****it status 查看状态

G****it add xxx.py 添加要推送的文件

G****it commit -m ‘****备注****’**** 推送文件到本地仓库

G****it pull origin master 拉代码

G****it push -u origin master 推送git远程仓库第一次推送写-u

G****it clone ‘****路径****’**** 克隆远程仓库到本地

G****it add .监控工作区的状态树

G****it add -u git add --update的缩写监控已经被add的文件,将修改的文件提到暂存区

20、数字摘要:

C****ookie、session

Cookie:为了弥补http协议无状态的不足,可以理解为http协议的扩展

21、Es6新特性:

· L****et、const有块级作用域,使用let声明的变量可以重新赋值,但是不能在同一作用域内重新声明,使用const声明的变量必须赋值初始化,但是不能在同一作用域类重新声明也无法重新赋值.

模板字符串${}

解构:[]表示被解构的数组,{}被解构的对象

F****or...of循环:结合for和for...in循环的优势,可以循环任何迭代的类型的数据,包含以下数据类型:String、Array、Map 和 Set,注意不包含 Object 数据类型(即 {})。默认情况下,对象不可迭代。

For循环的缺点:需要跟踪计数器和退出条件,并非始终适合使用loop循环。

展开运算符:...

箭头函数和this:对于普通函数, this的值基于函数如何被调用, 对于箭头函数,this的值基于函数周围的上下文, 换句话说,this的值和函数外面的this的值是一样的.

22、Async控制并发:

23、简单说下开启gulp加速的一些方法:

1、html5 video,bing首页动态背景使用video的原因之一吧。

2、transition 和 animation(在ipad上使用会开启gulp加速)。

3、-webkit-transform-style:preserve-3d; -webkit-transform: translate3d(0,0,0); 。

4、给元素transform加上translateZ(0px),iScroll采用的方法。

按照上述方法开启gulp加速后,涉及到的区域就会被gpu直接渲染在屏幕对应区域,不用和浏览器进程共享内存和减轻cpu负担是gpu加速的理论原理。

24、截留和防抖的区别:

<u>函数节流</u>

   函数节流应用的实际场景,多数在监听页面元素滚动事件的时候会用到。因为滚动事件,是一个**高频触发**的事件。声明一个变量当标志位,记录当前代码是否在执行。   如果空闲,则可以正常触发方法执行。   如果代码正在执行,则取消这次方法执行,直接return。

函数防抖

函数防抖的应用场景,最常见的就是用户注册时候的手机号码验证和邮箱验证了。只有等用户输入完毕后,前端才需要检查格式是否正确,如果不正确,再弹出提示语。

25、Vue的性能优化:

1、路由懒加载

2、V-if v-show的选择调用

3、为item设置唯一key值

4、减少watch的数据

5、Ssr服务端渲染

26、React的性能优化:

ShouldComponentUpdate避免重复渲染

组件尽可能的进行拆分、解耦

引用react的高阶组件react-loadable进行动态import

import Loadable from 'react-loadable'``;

import Loading from './loading-component'``;

const LoadableComponent = Loadable({

  loader: () => import(``'./my-component'``),

 loading: Loading,

});

export default class App extends React.Component {

  render() {

       return <LoadableComponent/>;

  }

}

首次加载时会先展示loading-component然后动态加载my-component加载完毕会替换掉loading-component

27、Ajax流程:

<u>1.</u><u>客户端产生js的事件</u><u>2.创建XMLHttpRequest对象</u><u>3.对XMLHttpRequest进行配置</u><u>4.通过AJAX引擎发送异步请求</u><u>5.</u><u>服务器端</u><u>接收请求并且处理请求,返回html或者xml内容</u><u>6.XML调用一个callback()处理响应回来的内容</u><u>7.页面局部刷新</u>

28、React中this的绑定:

1、在constructor里添加:this.函数名=this.函数名.bind(this)

2、<div onClick={this.函数名.bind(this)}></div>

3、<div onClick={()=>{this.函数名()}}></div>

4、函数名=()=>{}

29、Ajax跨域:

Jsonp跨域:原理:通过script标签引入js文件,js文件成功后执行在url参数指定的函数,会把我们需要的json数据作为参数传入。所以需要服务端的页面进行相应的配合,通过$getJsonp方法判断是否跨域

通过修改document.domain跨域:浏览器的同源策略1.不能通过ajax请求不同源中的文档,2.浏览器中不同域的框架之间不能进行js交互,但能获得window对象,但不能获得window的属性和方法,这时document.domain上场,把http:www.comhttp://.html两个页面的document.domain设置成相同的域名就可以了。注意:只能把document.domain设置成自身或更高一级的父域,且主域必须相同

window.name进行跨域:即在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面对window.name都有读写的权限,window.name是持久存在一个窗口载入过的所有页面中的,并不会因新页面的载入而进行重置。

<u>HTML5新引进的</u><u>window.postMessage</u><u>方法跨域传送数据:</u><u>调用postMessage方法的window对象是指要接收消息的那一个window对象,该方法的第一个参数message为要发送的消息,类型只能为字符串;第二个</u>

<u>参数targetOrigin用来限定接收消息的那个window对象所在的域,如果不想限定域,可以使用通配符 * 。</u>

<u>需要接收消息的window对象,可是通过监听自身的message事件来获取传过来的消息,消息内容储存在该事件对象的data属性中。</u>

1、Cookie、session:

Cookie:解决http无状态,

2、样式权重值:

代表内联样式,如: style=””,权值为1000。

代表ID选择器,如:#content,权值为100。

代表类,伪类和属性选择器,如.content,权值为10。

代表类型选择器和伪元素选择器,如div p,权值为1。

3、选择器权重值:

Div a : div的里的所有a

Div>a : div子元素a

Div+a : div相邻a

Div~a : div相邻所有a

4、Hash:

1.1.浏览器的路由变化,页面内容跟着变化

1.2.页面内容变换,浏览器的内容跟着变化

实现过程:

1.3.设定一个页面按钮,点击按钮时,改变页面的内容

1.4.设定浏览器的内容,跟随页面内容的变化而变化,即:直接赋值给浏览器的hash属性就可以了

1.5.监听浏览器的hash值,如果hsah改变了,则页面内容跟随变化

2.类似的,通过页面的无刷新,仅改变页面的 hash 值,而达到页面内容的变更

2.1 构造一个路由函数

2.2 对路由的hash值进行监听,如果hash 发生改变,则执行加载函数

2.3 定义路由配置规则

2.4 对路由进行初始化即调用

5、类数组转化为数组:

6、纯函数与非纯函数的区别:

一个函数的返回结果只依赖于它的参数,并且在执行过程里面没有副作用

7、Webpack:

8、浏览器进程:

5个进程:

GUI渲染线程:

JS引擎线程:与GUI互斥

事件触发线程:

定时触发器线程:setTimeout,setInterval

异步http请求线程:

9、节流与防抖:

函数节流应用的实际场景,多数在监听页面元素滚动事件的时候会用到。因为滚动事件,是一个高频触发的事件

函数防抖的应用场景,最常见的就是用户注册时候的手机号码验证和邮箱验证了。只有等用户输入完毕后,前端才需要检查格式是否正确,如果不正确,再弹出提示语

10、Ajax流程:

1.客户端产生js的事件 2.创建XMLHttpRequest对象 3.对XMLHttpRequest进行配置 4.通过AJAX引擎发送异步请求 5.服务器端接收请求并且处理请求,返回html或者xml内容 6.XML调用一个callback()处理响应回来的内容 7.页面局部刷新

11、单页面应用:

指一个系统只加载一次资源,之后的操作交互、数据交互是通过路由、ajax来进行,页面并没有刷新。特点是加载次数少,加载以后性能较高, 不利于seo, 如果页面支持h5可以用h5模式+服务器路由rewrite+h5 history api去掉路由的锚点,和搜索软件优化lib进行seo优化。

在单页面应用中,通常是由一个外部框架和一个一个组件组成的,界面之间的切换其实就是组件的移除和新组建的添加。

在多页面中,则可以看到导航栏中地址的变化,是从一个完整的页面跳转到另一个完整的页面(注意区分页面和界面)。

12、Ssr : 服务器端渲染

服务端渲染的核心就在于:通过vue-server-renderer插件的renderToString()方法,将Vue实例转换为字符串插入到html文件

13、addEventLister、attachEvent:

attachEvent是后绑定先执行,addEventListener是先绑定先执行。attachEvent必须带on,如onclick,onmouseover等,而addEventListener不能带on,如click,mouseover。这个区别在以上代码中可见.attachEvent仅需要传递两个参数,而addEventListener需要传递三个参数

false默认:冒泡;true:捕获

RemoveEventLister(元素,函数,true);

14、Redux流程:

store(存放状态) -> container(显示状态) -> reducer (处理动作)-> store

由三大元素组成:

Action:就是普通的JavaScript对象,有type:属性。

Reducer:执行的操作:修改传入的参数、调用非纯函数

store:维持应用的state、提供getState()获取state、提供dispatch(action)更新state、通过subscribe(listener)注册监听器返回的函数注销监听器

15、Webpack工作流程:

初始化参数

开始编译:加载配置插件

确定入口:entry找入口文件

编译模块:loader对模块进行翻译,找模块依赖,递归一直到全部都处理完。

完成模块编译:得到每个模块被翻译后的最终内容和依赖关系

输出资源:根据入口和模块之间的关系,组装成

输出完成:根据配置确定输出的路径和文件名,把文件内容写到文件系统

Entry:入口文件 module:模块

Chunk:代码块

loader:模块转换器

Plugin:扩展插件

16、省略号:

1、div内显示两行或三行,超出部分用省略号显示

overflow: hidden;      text-overflow: ellipsis;      display: -webkit-box;      -webkit-line-clamp: 2;(行数)      -webkit-box-orient: vertical;

2、div内显示一行,超出部分用省略号显示

white-space: nowrap;      overflow: hidden;      text-overflow: ellipsis;

17、Nodejs部署:

买服务器,得到密钥,开始远程服务器端环境配置,先打开cmder,

ssh 服务器用户名@自己的服务器ip地址,

创建个人目录

安装node,配置node到全局环境

安装git、PHPStudy

启动PHPStudy,

配置mysql为全局变量

应用代码部署,用git同步到线上

同步数据库

18、React生命周期:

constructor():构造函数

执行:组件加载钱最先调用一次,仅调用一次。

作用:定义状态机变量。

注意:第一个语句必须为super(), 否则会报错:'this' is not allowed before super()

componentWillMount()

执行:组件初始渲染(render()被调用前)前调用,仅调用一次。

作用:如果这个函数调用的setState改变了组件的某些状态,react会等待setState完成后再渲染组件。

注意:子组件也有componentWillMount函数,在父组件的该函数调用后再调用。

render()

执行:componentWillMount调用之后, componentDidMount调用之前。

作用:渲染挂载组件。

触发:1、初始化加载页面,2、状态机改变setState,3、接收新的props(父组件更新)

注意:组件必要函数,不能在函数内使用setState改变状态机。

componentDidMount()

时间:render之后被调用,仅调用一次。

作用:渲染挂载组件,可以使用refs(react支持的一个特殊属性,可以将它加在render函数返回的组件元素上,起一个标记作用,方便定位。)

注意:子组件也有该函数,在父组件调用前调用;如果该函数内有setState改变状态机,将会重新渲染组件,如果需要在页面初始化之后才改变状态机的,可以将网络请求放在该函数内。

componentWillReceiveProps(nextProps)

时间:组件渲染后,当组件接收新的nextProps时被调用。函数接收一个新的nextProps对象,nextProps是父组件传给子组件的。父组件render之后就会被调用。

作用:渲染挂载组件,可以使用refs(react支持的一个特殊属性,可以将它加在render函数返回的组件元素上,起一个标记作用,方便定位。)

注意:react初次渲染时不会被调用。

shouldComponentUpdata(nextProps, nextState)

时间:组件执行render函数之后,接收新的props或state时被调用,即每次执行setState都会执行该函数,来判断是否重新渲染组件,默认返回true,接收两个参数。

作用:如果有些变化不需要执行渲染组件,可在该函数内阻止。

注意:不能在该函数内使用setState来改变状态机,如需要,请在componentWillReciveProps中改变。

componentDidUpdata()

时间:组件重新渲染后调用,在初始化渲染的时候该方法不会被调用。

作用:使用该方法可以在组件更新之后操作DOM元素。

componentWillUnmount()

时间:组件卸载之前调用。

作用:在该方法中执行必要的清理,比如无效的定时器后者在componentDidMount中创建的DOM元素。

注意****:当一个页面中存在父子组件的时候,要特别注意componentDidMount的使用,因为子组件的componentDidMount会比父组件先调用,从而会引起父子组件传参错误。

19、Vue生命周期:

beforeCreate:刚刚new Vue()之后,这个时候,数据还没有挂载呢,只是一个空壳

created:这个时候已经可以使用到数据,也可以更改数据,在这里更改数据不会触发updated函数,在这里可以在渲染前倒数第二次更改数据的机会,不会触发其他的钩子函数,一般可以在这里做初始数据的获取'接下来开始找实例或者组件对应的模板,编译模板为虚拟dom放入到render函数中准备渲染

beforeMount:虚拟dom已经创建完成,马上就要渲染,在这里也可以更改数据,不会触发updated在这里可以在渲染前最后一次更改数据的机会,不会触发其他的钩子函数,一般可以在这里做初始数据的获取

Render:接下来开始render,渲染出真实dom

mounted:此时,组件已经出现在页面中,数据、真实dom都已经处理好了,事件都已经挂载好了可以在这里操作真实dom等事情

beforeUpdate:重新渲染之前触发然后vue的虚拟dom机制会重新构建虚拟dom与上一次的虚拟dom树利用diff算法进行对比之后重新渲染

updated:数据已经更改完成,dom也重新render完成

beforeDestory:销毁前执行($destroy方法被调用的时候就会执行),一般在这里善后:清除计时器、清除非指令绑定的事件等等...

destroyed:组件的数据绑定、监听...都去掉了,只剩下dom空壳,这里也可以善后

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,743评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,296评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,285评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,485评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,581评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,821评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,960评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,719评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,186评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,516评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,650评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,936评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,757评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,991评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,370评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,527评论 2 349

推荐阅读更多精彩内容

  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 2,572评论 0 7
  • 作为一个合格的开发者,不要只满足于编写了可以运行的代码。而要了解代码背后的工作原理;不要只满足于自己的程序...
    六个周阅读 8,428评论 1 33
  • 40、React 什么是React?React 是一个用于构建用户界面的框架(采用的是MVC模式):集中处理VIE...
    萌妹撒阅读 1,005评论 0 1
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,449评论 1 45
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,128评论 0 3