本文适合前端新手入门,阅读人群最好是前端新手或者后台开发人员,因为我不敢保证对前端老司机有太多收获。
通过阅读本文,你将会大致了解前端这些年发生的事情,以及一些前端当前主流技术的简单原理介绍。所有涉及的内容,都是尽可能的让你捅破这层窗户纸,知道其大致的玩法。
本节知识点:
Web1.0 到 Web2.0过渡的标志,就是Ajax的出现(2005年)。
[图片上传中...(image-25a6b1-1541152118632-19)]
[图片上传中...(image-6d0700-1541152118632-18)]
AJAX 即 Asynchronous JavaScript and XML(异步的 JavaScript 与 XML 技术)。
[图片上传中...(image-c93d19-1541152118632-17)]
STEP1:XMLHttpRequest 原生对象
var request = new XMLHttpRequest();
request.open('GET', '/my/url', true);
request.onload = function() {
if (request.status >= 200 && request.status < 400) {
// Success!
var data = JSON.parse(request.responseText);
} else {
// We reached our target server, but it returned an error
}
};
request.onerror = function() {
// There was a connection error of some sort
};
request.send();
复制代码
STEP2:$.ajax 操作
$.ajax({
type: 'GET',
url: '/my/url',
data: data,
success : function(result){
//TODO RESULT
}
});
复制代码
STEP3:Promise 操作
let getData = function (url) {
return new Promsie(function (resolve, reject) {
$.ajax({
type: 'GET',
url: url,
success: function (data) {
resolve(data);
},
error: function (err) {
reject(err);
}
});
});
};
var data = getData('/my/url').then(function (data) {
//TODO DATA
});
复制代码
STEP4:生成器 Gererator
let it = null;
let ajax = function(url,data){
$.ajax({
type: 'GET',
url: url,
data: data || {},
success : function(result){
it.next(result);
}
});
};
function *getData(){
var data = yield ajax('/my/url');
console.log('data=',data);
};
it = getData();
it.next();
复制代码
STEP5:Async/Await 高级操作
let ajax = function(url,data){
return $.ajax({
type: 'GET',
url: url,
data: data || {}
});
};
async function getData(){
var data = await ajax('/my/url');
console.log('data=',data);
};
getData();
复制代码
Ajax的相关背景资料:
1999年,微软公司发布IE浏览器5.0版,第一次引入新功能:允许JavaScript脚本向服务器发起HTTP请求。这个功能当时并没有引起注意,直到2004年Gmail发布和2005年Google Map发布,才引起广泛重视。
2005年2月,AJAX这个词第一次正式提出,指围绕这个功能进行开发的一整套做法。从此,AJAX成为脚本发起HTTP通信的代名词,W3C也在2006年发布了它的国际标准。
本节知识点:
什么是SPA? SPA 即单页面,就是页面整体不刷新,不同的页面只改变局部的内容的一种实现方式。
一个完整的URI有以下几部分组成:
scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
复制代码
浏览器的URL也遵循以上规则,而对于以上规则中,只有 #
后面的 fragment
发生改变时,页面不会重新请求,其它参数变化,均会引起页面的重新请求,而在Js中恰恰还有事件 window.onhashchange
能监听到 fragment
的变化,于是就利用这个原理来达到一个修改局部内容的操作。
#fragment
部分就是对应到Js中的 location.hash
的值。
直接上代码描述:
首页
帮助