>  기사  >  웹 프론트엔드  >  pjax: ajax와 pushState를 결합한 js 라이브러리

pjax: ajax와 pushState를 결합한 js 라이브러리

伊谢尔伦
伊谢尔伦원래의
2016-11-22 13:49:331101검색

나중에 사용할 수 있도록 ajax와 pushState를 캡슐화하는 것이 매우 유용합니다. 이 글은 pjax(ajax+pushState)에 대한 소개입니다.

소개

pjax는 ajax + pushState를 캡슐화한 것으로 pushState 기술을 매우 편리하게 사용할 수 있습니다.

캐싱과 로컬 저장을 모두 지원합니다. 다음 방문 시 다시 방문할 필요 없이 로컬 데이터를 직접 읽을 수 있습니다.

그리고 표시 방식은 애니메이션 기술을 지원하며, 시스템 고유의 애니메이션 방식을 사용하거나 애니메이션 표시 방식을 맞춤 설정할 수 있습니다.

현재는 jquery 기반 버전만 제공되며, 향후 qwrap, tangram 등 기타 버전도 추가될 예정입니다.

을 사용하여 jquery.pjax.js를 페이지에 배포하는 방법 바인딩을 위해 pjax 링크를 사용해야 합니다(외부 도메인의 URL은 바인딩할 수 없습니다).

$('a').pjax({
    container: '#container', //内容替换的容器
    fx: 'fade', //展现的动画,支持默认和fade, 可以自定义动画方式。
    cache: true, //是否使用缓存
    storage: true, //是否使用本地存储
    titleSuffix: '' //标题后缀
})

이벤트

일반적으로 ajax를 사용하여 데이터를 얻을 때 우리 모두는 Pjax 자체가 이 기능을 제공하지 않지만 2개의 관련 이벤트를 제공하기를 바랍니다. . 이러한 기능이 필요한 경우 이벤트에서 구현할 수 있습니다.

start.pjax는 pjax ajax가 요청을 보내기 전에 호출됩니다.

end.pjax는 phax ajax의 끝에서 호출됩니다

start.pjax 이벤트. 로딩은 end.pjax 이벤트에 숨겨져 있습니다. 예:

$('#container').bind('start.pjax', function(){
    $('#loading').show();
})
$('#container').bind('end.pjax', function(){
    $('#loading').hide();
})

브라우저 지원

history.pushState 인터페이스를 제공하는 브라우저만이 이 기능을 지원합니다. $.support.pjax는 브라우저가 이를 지원하는지 확인하는 데 사용됩니다.

브라우저가 이 기능을 지원하지 않고 pjax 메서드를 호출하는 경우 실제로는 아무 작업도 수행되지 않으며 기본 링크 응답 메커니즘이 계속 사용됩니다.

백엔드에서 수행해야 할 작업

Ajax와 마찬가지로 백엔드는 비동기 요청 중에 공개 콘텐츠를 반환할 수 없습니다.

따라서 pjax 요청이 이루어졌는지 확인하는 인터페이스가 필요합니다. 예: PHP는 다음 구현에서 배울 수 있습니다

function gplus_is_pjax(){
    return array_key_exists('HTTP_X_PJAX', $_SERVER) && $_SERVER['HTTP_X_PJAX'] === 'true';
}

소스 코드 다운로드

pjax는 오픈 소스였으며 코드는 https://github.com/welefen에 있습니다. /pjax. 누구나 방문하여 다운로드할 수 있습니다.

기타

실제로 이 클래스의 캡슐화는 https://github.com/defunkt/jquery-pjax에서 빌려왔습니다

캐싱, 로컬 저장소 및 애니메이션이 추가되었습니다. 그것과 다른 기능 및 일부 매개 변수가 최적화되었습니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.