如何在浏览器中使用 cdn 构建的 Swiper 模块

How to use Swiper modules from cdn build in browser

提问人:kernel 提问时间:11/7/2023 更新时间:11/7/2023 访问量:61

问:

我刚刚注意到使用 swiper-bundle (https://cdn.jsdelivr.net/npm/[email protected]/swiper-bundle.min.js) cdn 加载了很多我没有使用的功能,然后我发现有 swiper.min.js (https://cdn.jsdelivr.net/npm/[email protected]/swiper.min.js) 它更轻量级,但即使包含分页模块(https://cdn.jsdelivr.net/npm/[email protected],分页也不起作用/modules/pagination.min.mjs) 文档本身不提供必要的信息 (https://swiperjs.com/migration-guide-v10#modules-imports) 有谁知道如何从浏览器使用这些模块?

这是我尝试过的:

<script src="https://cdn.jsdelivr.net/npm/[email protected]/swiper.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/modules/pagination.min.mjs"></script>
<script>
 const swiper = new Swiper('container', {
  modules : [Pagination],
  pagination: { //pagination(dots)
     el: '.swiper-pagination',
     clickable: true
  },
  ...
 }
</script>

当我使用 swiper-bundle 时,相同的代码可以按预期工作,但是当我使用 swiper min 和分页模块时,分页根本不起作用

JavaScript 性能测试 刷屏器 .js

评论


答:

1赞 Reyno 11/7/2023 #1

如果要单独使用 Swiper 模块,则必须使用 Javascript 模块。您可以通过添加 将脚本定义为模块。type="module"

下面是一个使用分页的小示例:

<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css"
/>
<script type="module">
  import Swiper from 'https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.mjs';
  import Pagination from 'https://cdn.jsdelivr.net/npm/swiper@11/modules/pagination.min.mjs';

   const swiper = new Swiper('.container', {
    modules: [ Pagination ],
    pagination: {
       el: '.swiper-pagination',
       clickable: true
    },
   });
</script>

<div class="container">
  <ul class="swiper-wrapper">
    <li class="swiper-slide">
      <img src="//picsum.photos/720/360?c=1" width="720" height="360" />
    </li>
    <li class="swiper-slide">
      <img src="//picsum.photos/720/360?c=2" width="720" height="360" />
    </li>
    <li class="swiper-slide">
      <img src="//picsum.photos/720/360?c=3" width="720" height="360" />
    </li>
  </ul>
  
  <div class="swiper-pagination"></div>
</div>

评论

0赞 kernel 11/8/2023
非常感谢。我有没有机会将 async & defer 属性用于此脚本类型?或者我需要手动做,比如等待 domcontentloaded,然后我动态创建标记?
0赞 Reyno 11/8/2023
@kernel 不需要这些属性,模块默认为“defer”。如文档中所述:“加载模块脚本时无需使用 defer 属性(请参阅 <script> 属性);模块会自动延迟。
0赞 kernel 11/9/2023
效果很好@Reyno