day19
1-解决跨域问题的方法?
1.CORS(Cross-Origin Resource Sharing)跨域资源共享,定义了必须在访问跨域资源时,浏览器与服务器应该如何沟通。CORS背后的基本思想就是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功还是失败。
服务器端对于CORS的支持,主要就是通过设置Access-Control-Allow-Origin来进行的。如果浏览器检测到相应的设置,就可以允许Ajax进行跨域的访问。
2.通过jsonp跨域
JSONP是JSON with Padding(填充式json)的简写,是应用JSON的一种新方法,只不过是被包含在函数调用中的JSON
3.在js中,我们直接用XMLHttpRequest请求不同域上的数据时,是不可以的。但是,在页面上引入不同域上的js脚本文件却是可以的,jsonp正是利用这个特性来实现的
4.js文件载入成功后会执行我们在url参数中指定的函数,并且会把我们需要的json数据作为参数传入。所以jsonp是需要服务器端的页面进行相应的配合的。
5.如果你的页面使用jquery,那么通过它封装的方法就能很方便的来进行jsonp操作了。
6.通过修改document.domain来跨子域
2-提交请求 get 和 post 的区别?
一、功能不同
1、duget是从服务zhi器上获取数据。dao
2、zhuanpost是向服务器传送数据。
二、过shu程不同
1、get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。
2、post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
三、获取值不同
1、对于get方式,服务器端用Request.QueryString获取变量的值。
2、对于post方式,服务器端用Request.Form获取提交的数据。
四、传送数据量不同
1、get传送的数据量较小,不能大于2KB。
2、post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
五、安全性不同
1、get安全性非常低。
2、post安全性较高。
如果没有加密,他们安全级别都是一样的,随便一个监听器都可以把所有的数据监听到。
3-什么是渐进增强和优雅降级?
渐进增强:在网页开发中,渐进增强认为应该专注于内bai容本身。一开始针对低版本的浏览器构建页面,满足最基本的功能,再针对高级浏 览器进行效果,交互,追加各种功能以达到更好用户体验,换句话说,就是以最低要求,实现最基础功能为基本,向上兼容。
优雅降级:在网页开发中,优雅降级指的是一开始针对一个高版本的浏览器构建页面,先完善所有的功能。然后针对各个不同的浏览器进行测试,修复,保证低级浏览器也有基本功能 就好,低级浏览器被认为“简陋却无妨 (poor, but passable)” 可以做一些小的调整来适应某个特定的浏览器。但由于它们并非我们所关注的焦点,因此除了修复较 大的错误之外,其它的差异将被直接忽略。
渐进增强与优雅降级的区别:
1.如果你采用渐进增强的开发流程,先做一个基本功能版,然后针对各个浏览器进行渐进增加,增加各种功能。相对于优雅降级来说,开发周期长,初期投入资金大。 你想一下不可能拿个基本功能版给客户看呀,多寒酸,搞不好一气之下就不找你做了,然后就炸了。但是呢,也有好处,就是提供了较好的平台稳定性,维护起来资金小, 长期来说降低开发成本。
2.那采用优雅降级呢,这样可以在较短时间内开发出一个只用于一个浏览器的完整功能版,然后就可以拿给PM找客户谈呀,可以拿去测试,市场试水呀,对于功能尚未确定的 产品,优雅降级不失为一种节约成本的方法。
4-针对页面性能优化,有哪些方案?
一、对服务器的请求
对服务器发送的请求主要分为两种,一种是请求静态资源,一种是调用接口。 后者暂且不提,因为涉及到后端的业务逻辑。对于前者,一般有这样几条途径:
减少请求的数量
减少请求单次传递的数据量
均摊请求的发送
js的异步加载
处理这个问题可以用到很多工具:比如requirejs,grunt或者gulp等工具。
requirejs
requirejs很强大,甚至可以说是它开创了javascript新时代。它是AMD(Asynchronous Model Definition)规范的一种被使用较多的实现。它采用异步的方式加载模块,在加载模块的时候不会影响后续代码的执行。
除了异步之外,用requirejs还可以很容易地做到按需加载,保证js文件只在被需要的时候加载。
静态文件合并压缩
在这之前,其实要首先思考一下项目是不是选择了最合适的框架。
比如,一个功能较简单的移动端应用,能用Zepto,为什么还要用jquery呢?能用backbone,为什么还要用angular呢? 更有一些程序员喜欢为了实现一个效果,图省事直接引入一大包js库。。这。。像这样的问题,其实应该在项目开始的时候就要考虑而不是到后期再进行大幅的修改。
js文件的压缩通常非常有效,随便一个js文件一般都能被压缩掉50%左右的大小
gulp
gulp是一个前端构建工具。特色有:
- 学习成本低:gulp只有5个核心api
- 效率高:而且基于pipeline的概念,不需要写中间文件
- 社区强大:插件功能齐全,没有你找不到。每个插件都只完成一个功能,通过pipeline进行整合
- 安装简单:npm install
二、页面的渲染
减少dom操作
dom操作是非常耗时的,(dom操作和页面渲染的原理还没有理清,等理清了会整理出来),所以页面中要尽可能的减少dom的操作。

浙公网安备 33010602011771号