ホームページ > ウェブフロントエンド > jsチュートリアル > pjax: ajaxとpushStateを組み合わせたjsライブラリ

pjax: ajaxとpushStateを組み合わせたjsライブラリ

伊谢尔伦
リリース: 2016-11-22 13:49:33
オリジナル
1132 人が閲覧しました

後で使用するために 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: '' //标题后缀
})
ログイン後にコピー

Events

一般 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 から借用しています

キャッシュ、ローカル ストレージ、アニメーションなどの機能が追加され、いくつかのパラメーターが最適化されています。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート