1、AMD和CMD是什么?他们的区别是什么?
答:AMD和CMD都是模块定义规范,AMD 是 RequireJS 在推广过程中对模块定义的规范化产,CMD 是 SeaJS 在推广过程中对模块定义的规范化产出。
两者的区别:
1. 对于依赖的模块,AMD 是提前执行,CMD 是延迟执行。不过 RequireJS 从 2.0 开始,也改成可以延迟执行(根据写法不同,处理方式不同)。CMD 推崇 as lazy as possible.
2. CMD 推崇依赖就近,AMD 推崇依赖前置。
3. AMD 的 API 默认是一个当多个用,CMD 的 API 严格区分,推崇职责单一。比如 AMD 里,require 分全局 require 和局部 require,都叫 require。CMD 里,没有全局 require,而是根据模块系统的完备性,提供 seajs.use 来实现模块系统的加载启动。CMD 里,每个 API 都简单纯粹。
2、关于cookie和session
cookie:当你在浏览网站时,WEB服务器会将一些资料放在你的计算机上,cookie会记录你在网站上一些行为,例如打字、选择产品等等。等你下次再浏览同一个网站时WEB服务器会先看看有没有它上次留下的cookie资料,有的话就会根据cookie的内容来判断使用者,送出特定的网页内容给你
session:当程序需要为某个客户端请求创建一个session时,服务器首先检查这个客户端请求里是否包含一个session标识(称为session ID)如果已经包含说明以前已经为此客户端创建过session,服务器就按照session ID把这个session检索出来,如果检索不到就会新建一个session,如果客户端不包含session ID,则为此客户端创建一个session并且生成一个与此session相关联的sessionID
3、MVC
MVC是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
4、怎样理解css盒子模型?
网页设计中常听的属性名:内容(content)、填充(padding)、边框(border)、边界(margin), CSS盒子模式都具备这些属性。
这些属性我们可以用日常生活中的常见事物——盒子作一个比喻来理解,所以叫它盒子模式。CSS盒子模型就是在网页设计中经常用到的CSS技术所使用的一种思维模型。
两个上下方向相邻的元素框垂直相遇时,外边距会合并,合并后的外边距的高度等于两个发生合并的外边距中较高的那个边距值。需要注意的是:只有普通文档流中块框的垂直外边距才会发生外边距合并。行内框、浮动框或绝对定位之间的外边距不会合并。
另外与和模型有关的一个重要属性box-sizing:
box-sizing : content-box|border-box|inherit;
(1) content-box ,默认值,可以使设置的宽度和高度值应用到元素的内容框,盒子的width只包含内容,即总宽度=margin+border+padding+width,所以设置width值,相当于设置元素内容的宽度。
(2) border-box , 设置的width值其实是除margin外的border+padding+element的总宽度。盒子的width包含border+padding+内容,即总宽度=margin+width。
(3) inherit , 规定应从父元素继承 box-sizing 属性的值
5、事件监听机制
事件捕获、捕获目标、和事件冒泡,事件捕获是从根标签开始一层一层往下查找,直到捕获到事件目标,事件冒泡是与之相反的过程,是事件从事件目标开始一层一层往上冒泡直到根元素。IE只支持事件冒泡,其他主流浏览器两种都支持
6、DOM事件处理程序(也叫事件处理函数、事件句柄)
事件处理程序实际上就是事件的绑定函数。事件发生时会执行函数中相应代码。事件处理程序分为0级DOM事件处理程序和2级DOM事件处理程序
0级DOM分为2个:一是在html标签内写onclick事件,二是在JS写onlicke=function(){}函数。 (事件处理程序的名字以"on"开头)
2级DOM:监听方法,有两个方法用来添加和移除事件处理程序:addEventListener()和removeEventListener()。它们都有三个参数:第一个参数是事件名(如click);第二个参数是事件处理程序函数;第三个参数如果是true则表示在捕获阶段调用,为false表示在冒泡阶段调用。addEventListener():可以为元素添加多个事件处理程序,触发时会按照添加顺序依次调用。removeEventListener():不能移除匿名添加的函数。 (注意这里的事件不需要加“on”开头)
IE8及以下浏览器不支持addEventListener,但IE实现了与DOM中类似的两个方法:attachEvent()和detachEvent()。这两个方法接受相同的两个参数:事件处理程序名称与事件处理程序函数。由于IE8-浏览器只支持事件冒泡,所以通过attachEvent()添加的事件处理程序都会被添加到事件冒泡阶段