代码改变世界

知识点2

2019-01-04 14:53  Lkui  阅读(201)  评论(0)    收藏  举报


1、css 动画和 js 动画的差异
   a、代码复杂度,js 动画代码相对复杂一些
   b、动画运行时,对动画的控制程度上,js 能够让动画,暂停,取消,终止,css动画不能添加事件
   c、动画性能看,js 动画多了一个js 解析的过程,性能不如 css 动画好
2、什么是CDN缓存
   a、CDN 是一种部署策略,根据不同的地区部署类似nginx 这种服务服务,会缓存静态资源。前端在项目优化的时候,习惯在讲台资源上加上一个 hash 值,每次更新的时候去改变这个 hash,hash 值变化的时候,服务会去重新取资源
   b、(CDN)是一个经策略性部署的整体系统,包括分布式存储、负载均衡、网络请求的重定向和内容管理4个要件
3、怎么去设计一个组件封装
   a、组件封装的目的是为了重用,提高开发效率和代码质量
   b、低耦合,单一职责,可复用性,可维护性
   c、前端组件化设计思路
4、浅拷贝和深拷贝
   a、深拷贝和浅拷贝是只针对Object和Array这样的复杂类型的
   b、也就是说a和b指向了同一块内存,所以修改其中任意的值,另一个值都会随之变化,这就是浅拷贝
   c、浅拷贝, ”Object.assign() 方法用于将所有可枚举的属性的值从一个或多个源对象复制到目标对象。它将返回目标对象
   d、深拷贝,JSON.parse()和JSON.stringify()给了我们一个基本的解决办法。但是函数不能被正确处理
5、ES6模块与CommonJS模块的差异
   a、CommonJs 模块输出的是一个值的拷贝,ES6模块输出的是一个值的引用
   b、CommonJS 模块是运行时加载,ES6模块是编译时输出接口
   c、ES6输入的模块变量,只是一个符号链接,所以这个变量是只读的,对它进行重新赋值就会报错
6、angular 双向数据绑定与vue数据的双向数据绑定有什么区别
   a、二者都是 MVVM 模式开发的典型代表
   b、angular 是通过脏检测实现,angular 会将 UI 事件,请求事件,settimeout 这类延迟,的对象放入到事件监测的脏队列,当数据变化的时候,触发 $diget 方法进行数据的更新,视图的渲染
   c、vue 通过数据属性的数据劫持和发布订阅的模式实现,大致可以理解成由3个模块组成,observer 完成对数据的劫持,compile 完成对模板片段的渲染,watcher 作为桥梁连接二者,订阅数据变化及更新视图
7、js 自定义事件实现
   a、原生提供了3个方法实现自定义事件
   b、createEvent,设置事件类型,是 html 事件还是 鼠标事件
   c、initEvent 初始化事件,事件名称,是否允许冒泡,是否阻止自定义事件
   d、dispatchEvent 触发事件
8、网站性能优化
   a、http 请求方面,减少请求数量,请求体积,对应的做法是,对项目资源进行压缩,控制项目资源的 dns 解析在2到4个域名,提取公告的样式,公共的组件,雪碧图,缓存资源,
   b、压缩资源,提取公共资源压缩,提取 css ,js 公共方法
   c、不要缩放图片,使用雪碧图,使用字体图表(阿里矢量图库)
   d、使用 CDN,抛开无用的 cookie
   e、减少重绘重排,CSS属性读写分离,最好不要用js 修改样式,dom 离线更新,渲染前指定图片的大小
   f、js 代码层面的优化,减少对字符串的计算,合理使用闭包,首屏的js 资源加载放在最底部