Laravel项目全站接入pjax

pjax:
在不刷新页面的状态下改变url地址

引入js

<script src="https://cdn.bootcss.com/jquery.pjax/2.0.1/jquery.pjax.min.js"></script>
//定义加载区域
$(document).pjax('a', 'body');
//定义pjax有效时间,超过这个时间会整页刷新
$.pjax.defaults.timeout = 12000;
//显示加载动画
$(document).on('pjax:click', function () {
  $("#loading").show();
});
//隐藏加载动画
$(document).on('pjax:end', function () {
  $("#loading").hide();
});
#loading {
  background-color: rgba(238, 238, 238, 0.6);
  display: none;
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  z-index: 2000;
  bottom: 0;
  padding-top: 10%;
}
#loading .spinner {
  margin: 100px auto;
  width: 50px;
  height: 60px;
  text-align: center;
  font-size: 10px;
}
#loading .spinner > div {
  background-color: rgba(0, 0, 0, 0.2);
  height: 100%;
  width: 6px;
  display: inline-block;
  -webkit-animation: stretchdelay 1.2s infinite ease-in-out;
  animation: stretchdelay 1.2s infinite ease-in-out;
}
#loading .spinner .rect2 {
  -webkit-animation-delay: -1.1s;
  animation-delay: -1.1s;
}
#loading .spinner .rect3 {
  -webkit-animation-delay: -1s;
  animation-delay: -1s;
}
#loading .spinner .rect4 {
  -webkit-animation-delay: -0.9s;
  animation-delay: -0.9s;
}
#loading .spinner .rect5 {
  -webkit-animation-delay: -0.8s;
  animation-delay: -0.8s;
}
@-webkit-keyframes stretchdelay {
  0%,
  40%,
  100% {
    -webkit-transform: scaleY(0.4);
  }
  20% {
    -webkit-transform: scaleY(1);
  }
}
@keyframes stretchdelay {
  0%,
  40%,
  100% {
    transform: scaleY(0.4);
    -webkit-transform: scaleY(0.4);
  }
  20% {
    transform: scaleY(1);
    -webkit-transform: scaleY(1);
  }
}

文件目录
Laravel项目全站接入paxj
composer require spatie/laravel-pjax

composer引入laravel-pjax
在 app/Http/Kernel.php 文件添加

protected $middleware = [
    ...
    \Spatie\Pjax\Middleware\FilterIfPjax::class,
];
    <div id="loading">
        <div class="spinner">
            <div class="rect1"></div>
            <div class="rect2"></div>
            <div class="rect3"></div>
            <div class="rect4"></div>
            <div class="rect5"></div>
        </div>
    </div>
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 15

我用 pjax 的时候,js 不能正常加载。

2周前 评论

可以提供下具体信息

2周前 评论

@Nines 能, livewire + turbolinks 可以搞 spa,但是由于要搭配 turbolinks ,学习成本有点高。 github.com/livewire/turbolinks

2周前 评论

@Nines 但是我还是不太推荐搞,如果有精力,不如优先搞一下前端框架,例如 vue,毕竟前端框架提供的是一整套完整的解决方案。

2周前 评论

主要解决什么问题呢?pjax

4天前 评论

在不刷新整个页面的情况下切换页面本社区也用到pjax了,比如你点导航栏的切换

4天前 评论

@Nines 跟vue单页有什么不同呢?

4天前 评论

@babyObama 没有区别传统开发方式的解决方案

3天前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
1
粉丝
2
喜欢
5
收藏
6
排名:1587
访问:594
私信
所有博文