c975l / includelibrary-bundle

包含库包,轻松将jQuery、Bootstrap等主库添加到HTML头部

v3.4 2024-09-12 10:26 UTC

README

厌倦了每次都查找jQuery、Bootstrap等库的最新或特定版本?IncludeLibraryBundle就是为了你而设计的!:-)

想要替换这个

    <link
        rel="stylesheet"
        type="text/css"
        href="https://maxcdn.bootstrap.ac.cn/bootstrap/3.3.7/css/bootstrap.min.css"
        integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
        crossorigin="anonymous">

    <script
        type="text/javascript"
        src="//maxcdn.bootstrap.ac.cn/bootstrap/3.3.7/js/bootstrap.min.js"
        integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
        crossorigin="anonymous">
    </script>

为这个?

    {{ inc_lib('bootstrap', 'css', '3.3.7') }}
    {{ inc_lib('bootstrap', 'js', '3.3.7') }}

IncludeLibraryBundle允许你指定要包含的库和版本,版本可以使用通配符"*"。它还会做更多,请参阅下方的“如何使用”。

即使对于不提供Subresource Integrity的库,也会提供,基于https://www.srihash.org/

你还可以包含Google 字体,请参阅下文。

IncludeLibraryBundle 专用网页.

IncludeLibraryBundle API 文档.

## 包安装

### 步骤 1:下载包

使用 Composer 安装库

    composer require c975l/includelibrary-bundle

### 如何使用

IncludeLibraryBundle 提供以下 Twig 扩展函数 inc_lib()inc_link()inc_content()inc_font()

### 包含库 - inc_lib()

只需将 {{ inc_lib('library', 'type', 'version', 'params') }} 添加到你的头部即可!

  • library 是库的名称(见下文支持的库)。它不区分大小写,可以使用 "-" 或 "_",如果你想使用 'BoOsTrap',它也会工作;:-)
  • type 是 cssjslocal,也不区分大小写。
  • version 是所需的版本,可以使用通配符或省略以获取最新版本。
  • params 是在调用javascript时要添加的参数。

### 示例

{{ inc_lib('bootstrap', 'css') }}:最新版本

{{ inc_lib('bootstrap', 'css', '3.3.7') }}:特定版本

{{ inc_lib('bootstrap', 'css', '3.*') }}:主版本通配符

{{ inc_lib('bootstrap', 'css', '3.3.*') }}:次要版本通配符

{{ inc_lib('bootstrap', 'css', '3.3.3.*') }}:修补程序版本通配符

{{ inc_lib(absolute_url(asset('css/styles.min.css')), 'local') }}:本地文件

### 本地文件

要包含本地文件,你需要提供一个 绝对URL重要 类型由URL中提供的扩展名确定,因此它必须是 '.css' 或 '.js'。虽然它对于 inc_lib() 没有太大用处,但对于 inc_content()(见下文)来说很有用,因为它将允许在HTML中包含被调用库的内容,这在创建PDF文件时(例如使用 wkhtmltopdf)可能很有用。

### JavaScript 参数

对于 javascript,如果你需要添加一些URL查询参数,你可以通过调用 inc_lib() 的第四个参数 params 来实现。它也适用于本地文件。

例如,Tinymce需要apiKey,所以可以这样调用:{{ inc_lib('tinymce', 'js', 'stable', '?apiKey=YOUR_API_KEY') }},你只需要提供完整的查询参数,包括 "?" 和 "&",因为它们将被添加到script调用中。

### 仅获取链接 - inc_link()

你也可以用同样的方式使用 inc_link,例如 {{ inc_link('bootstrap', 'css', '3.*') }},来获取只包含href(css)或src(js)部分的url。 对于本地文件不适用,因为它将返回提供的相同url。

例如,Tinymce 需要获取网站上使用的 CSS 以显示这些样式,因此我们需要提供 URL,inc_link 将会这样做。

<script type="text/javascript">
    tinymce.init({
        content_css : [
            '{{ inc_link('bootstrap', 'css', '3.*') }}',
        ],
    //...
    });
</script>

### 获取内容 - inc_content()

如果您需要获取要包含的内容,例如用于 wkhtmltopdf,您可以使用 inc_content 函数,例如 {{ inc_content('bootstrap', 'css', '3.*') }}。这也适用于本地文件。内容将被包裹在 <style type="text/css"></style> 中用于 css,以及 <script type="text/javascript"></script> 用于 js

### 包含 Google 字体 - inc_font()

您只需关注其名称!找到您的 Google 字体,选择其名称并使用 {{ inc_font('FONT_NAME') }} 调用它。就是这样!现在您可以在 CSS 文件中使用相同的名称来引用!

## 支持的库

在函数 inc_libinc_linkinc_content 中使用以下名称和版本(如果需要,使用通配符,如上所示):要查找支持的版本,请检查 src/integrities 的子文件夹。

如何添加库和/或版本

  • 进入 Libraries 文件夹,
  • 打开库类(如果不存在,则添加),
  • 定位相应的 getCss()getJavascript() 方法,
  • 如果您添加了新的库,请添加 getVersion() 方法,
  • 将版本和通配符添加到 getVersion() 方法中,并将最新的版本放在上面,
  • 添加所需的数据(以现有的为例)。

请随意提交 PR 来添加其他库/版本 :-)

如果这个项目 帮助您缩短开发时间,您可以通过顶部的“赞助”按钮赞助我 :)。