第32篇
1、module、export、import是什么,有什么用?
module、export、import是ES6用来统一前端模块化的方案的设计思路和实现方案。
export、import的出现统一了前端模块化的实现方案,整合规范了浏览器/服务端的模块化方法,用来取代
传统的AMD/CMD、requirejs、seaJS、commonJS等等一系列线段模块不同的实现方案,使前端模块化更加统一规范。
JS也能更加实现大型的应用程序开发。
import引入的模块是静态加载(编译阶段加载)而不是动态加载(运行时加载)。
import引入export导出的接口值是动态绑定关系,即通过该接口,可以取到模块内部实时的值。
2、日常前端代码开发中,有哪些值得用ES6去改进的编程优化或者规范?
常用箭头函数来取代var self = this;的做法。
常用let取代var命令
常用数组/对象的结构赋值来命名对象,结构更清晰、语义更明确、可读性更好。
在长字符串多变量的组合场合,用模板字符串来取代字符串累加,能取得更好地效果何阅读体验。
用clsss类取代传统的构造函数,来生成实例化对象。
在大型应用开发中,要保持module模块化开发思维,分清模块之间的关系,常用import、export方法。
3、请你谈谈Cookie的弊端?
cookie虽然在持久保存客户端数据提供了方便,分担了服务器存储的负担,但还是有很多局限性的。
第一:“Cookie”数量和长度的显示。每个domain最多只能有20条cookie,每个cookie长度不能超过4KB,否则会被截掉。
第二:安全性问题。如果cookie被人拦截了,那人就可以取得所有的session信息。即使加密也于事无补,因为拦截者并不需要知道
cookie的意义,他只要原样转发cookie就可以
达到目的。
第三:有些状态不可能保存在客户端。例如,为了防止重复提交表单,我们需要在服务器保存一个计数器。如果我们
把这个计数器保存在客户端,那么它起不到任何作用。
因为这些弊端(主要是cookie的大小和多少受哦限制),并且每次你请求一个新的页面的时候cookie都会被发送过去,这样无形中浪费了
带宽,另外cookie还需要指定作用域,不可以跨域调用。
IE8以后,就出现一个web storage;它仅仅是为了本地缓存数据而存在;但是Cookie也是不可或缺的;cookie的作用是与服务器进行交互,作为HTTP规范的一部分而存在。
Cookie的有点:极高的扩展性和可用性
1、通过良好的编程,控制保存在cookie中的session对象的大小。
2、通过加密和安全传输技术(SSL),减少cookie被破解的可能性。
3、只在cookie中存放不敏感数据,即使被盗也不会有重大损失。
4、控制cookie的生命周期,使之不会永远有效。偷盗者很可能拿到一个过期的cookie。
4、git fetch和git pull的区别?
git pull: 相当于是从远程获取最新版本并merge到本地。
git fetch:相当于是从远程获取最新版本到本地,不会自动merge。
5、svn与git的区别?
git是分布式的,svn不是。
git跟svn一样有自己的集中式版本库或服务器,但git更倾向于被使用分布式模式,克隆版本库后,即使没有网络也能够commit文件,查看历史版本记录,
创建项目分支等,等网络再次连接上push到服务器端。
git把内容按元数据方式存储,而svn是按文件。所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。git目录是处于你的机器上的一个克隆版的
版本库,它拥有中心版本库上所有的东西,例如标签、分支、版本记录等。
git没有一个全局的版本号,svn有。
git的内容完整性优于svn。因为git的内容存储使用的是SHA-1哈希算法。
git可以有无限个版本库,svn只能有一个指定中央版本库。当svn中央版本库有问题时,所有工作成员都一起瘫痪直到版本库维修完毕或者新的版本库设立完成。
每一个git都是一个版本库,区别是他们是否拥有活跃目录(Git Working Tree)。
如果是主要版本库有问题,工作成员仍然可以在自己的本地版本库(local repository)提交。
等待主要版本库恢复即可。工作成员也可以提交到其他的版本库。