说说你对http的理解:
http协议其实就是超文本传输协议,是用于从WWW服务器传输超文本到本地浏览器的传送协议。
http上一个应用层协议,由请求和响应构成,是一个标准的客户端服务器协议
http上一个无状态的协议
http与https的区别:
http是超文本传输协议,信息是明文传输,https是具有安全性的SSL加密传输
http采用的是80端口连接,而https使用的端口是443
hhtps协议需要用到ca申请证书,一般免费证书较少,需要收费,而http不需要
http连接相对简单,是无状态的,而https协议是有SSL+HTTP协议构建的可进行加密传输,身份认证的网络协议,它比http协议更加安全
doctype的作用:
DOCTYPE是document type (文档类型) 的缩写。
<!DOCTYPE >声明位于文档的最前面,处于标签之前,它不是html标签。
主要作用是告诉浏览器的解析器使用哪种HTML规范或者XHTML规范来解析页面
由于不同浏览器对页面渲染有不同的标准,所以不声明doctype会产生一定的差异,这种方式叫做混杂模式
实现一个div左上角到右下角的移动:
- 改变div的left值为window的宽度-div的宽度
top值为window的高度-div的高度- css3的transition属性
箭头函数与普通函数的区别:
箭头函数的 this 永远指向其上下文的 this ,任何方法都改变不了其指向,如 call() , bind() , apply()
普通函数的this指向调用它的那个对象
说说你对promise对象的理解:
- promise是异步编程的一种解决方法,从语法上说promise是一个对象,从它可以获取异步操作的消息
- promise主要作用是:可以把异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,promise对象提供了统一的接口,使得控制异步操作更简单
- promise对象的特点:
- 对象状态不受外界影响(公3种pending(进行中),resolved(已完成),reject(已失败))。
只有异步操作的结果可以决定是当前哪一种状态,任何其他操作都无法改变- 一旦状态改变就不会再变,任何时候都可以得到这个结果。
promise对象改变只有两种可能:从pending到resolved,从pending到reject
- promise对象的缺点:
- 无法取消promise,一旦创建就立即执行,无法中途取消
- 如果不设置回调函数,promise内部抛出错误,不会反映到外部
- 当处于pending状态时,无法得知目前进展到那个阶段(刚刚开始还是即将完成)
vuex中mutaions与action的区别:
mutaions:同步操作,可以直接修改state中的值,专注与修改state,理论上是修改state的唯一途径
action:异步操作,不可以直接修改state,专注于业务代码,异步请求等
canvas与svg的区别:
canvas:
- canvas 通过 JavaScript 来绘制 2D 图形。
- canvas一旦图形被绘制完成,它就不会继续得到浏览器的关注。
- 如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。
- canvas不依赖分辨率。
- canvas 通过 JavaScript 来绘制 2D 图形。
- canvas支持事件处理器。
- canvas最适合带有大型渲染区域的应用程序(比如谷歌地图)。
- canvas复杂度高会减慢渲染速度(任何过度使用 DOM 的应用都不快)。
- canvas不适合游戏应用。
svg:
- svg是一种使用 XML 描述 2D 图形的语言。
- 可以为svg每个元素附加 JavaScript 事件处理器。
- 每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。
- svg依赖分辨率。
- svg是一种使用 XML 描述 2D 图形的语言。
- svg依赖分辨率。
- svg不支持事件处理器。
- svg弱的文本渲染能力。
- svg能够以 .png 或 .jpg 格式保存结果图像。
- svg最适合图像密集型的游戏,其中的许多对象会被频繁重绘。
html中data-*的作用:
data-属性用于存储私有页面应用的自定义数据
data-属性可以在所有的html元素中嵌入数据
自定义的数据可以让页面拥有更好的交互体验
如何实现断点续传:
可以利用H5的FileApi的slice()方法,将文件切割成数份,然后再分批上传
或通过websocket接口实现
说说你对spa单页面应用的理解:
SPA 是一种特殊的 Web 应用,是加载单个 HTML 页面并在用户与应用程序交互时动态更新该页面的。它将所有的活动局限于一个 Web 页面中,仅在该 Web 页面初始化时加载相应的 HTML 、 JavaScript 、 CSS 。一旦页面加载完成, SPA 不会因为用户的操作而进行页面的重新加载或跳转,而是利用 JavaScript 动态的变换 HTML(采用的是 div 切换显示和隐藏),从而实现UI与用户的交互。在 SPA 应用中,应用加载之后就不会再有整页刷新。相反,展示逻辑预先加载,并有赖于内容Region(区域)中的视图切换来展示内容。
优点:
- 避免了页面的重新加载,可以提供较为流畅的用户体验
- 得益于ajax,可以实现无跳转刷新,通过与浏览器的history机制配合,与haxh的变化推动界面变化
- 只需要使用支持H5和C3的浏览器就可以实现SPA机制,所以使用和开发门槛较低
缺点:
1.对SEO优化没有普通的网页开发这么友好,因为没有了一页一页的网页给搜索爬虫去爬取信息,需要花费其他的工作去做SEO优化
1.以SPA方式开发的网站不容易管理也不够安全
说说你对vue-router的理解:
vue-router是vue官方的路由管理器,默认使用hash模式。通过将路径与组件对应,根据不同的URL地址在页面中渲染对应的vue组件
功能:
- 嵌套的路由/视图表
- 模块化的、基于组件的路由配置
- 路由参数、查询、通配符
- 基于 Vue.js 过渡系统的视图过渡效果
- 细粒度的导航控制
- 带有自动激活的 CSS class 的链接
- HTML5 历史模式或 hash 模式,在 IE9 中自动降级
- 自定义的滚动条行为
简谈hash模式与history模式
hash模式:
- hash模式的原理是onhashchange事件,通过window对象监听该事件。
- 在hash模式下,当url发生变化时,浏览器会将其记录下来,所以在该模式下,即便浏览器没有请求服务器,页面也会与url一一对应。
- 在hash模式下修改的url#后面的内容,所以当URL发生改变时,页面不会重新加载.
- 其主要api有:history.go(), history.back(), history.forward()
history模式:
- history interface是浏览器历史记录栈提供的接口,通过back(),forward(),go()等方法,我们可以读取浏览器历史记录栈的信息,进行各种跳转操作。
- 在使用history模式时,是需要后台的配置支持的,当我们的应用是单页面应用,如果后台没有正确配置,直接访问会返回404。所以我们可以在服务端增加一个覆盖所有情况的候选资源,当url匹配不到时,则返回我们配置的那个静态资源
简谈mvvm框架
m:model模型,也就是数据层,负责存储数据
v:视图层,主要是从viewmodel层获取数据,然后显示
vm:视图模型,相当于model与视图层的桥梁,主要负责处理业务逻辑