hryvinskyi / magento2-deferjs

未提供

安装数: 28,205

依赖者: 0

建议者: 0

安全: 0

星标: 11

关注者: 3

分支: 2

公开问题: 1

类型: magento2-module

1.2.2 2021-12-07 23:07 UTC

This package is auto-updated.

Last update: 2024-09-08 05:33:56 UTC


README

该模块将javascript移动到页面底部。

Latest Stable Version Total Downloads PayPal donate button Latest Unstable Version License Scrutinizer Code Quality Build Status

安装指南

通过composer安装

composer require hryvinskyi/magento2-deferjs
bin/magento module:enable Hryvinskyi_Base
bin/magento module:enable Hryvinskyi_DeferJs
bin/magento setup:upgrade

下载安装包

  1. 下载模块 https://github.com/hryvinskyi/magento2-base "克隆或下载 -> 下载Zip"
  2. 下载此模块 "克隆或下载 -> 下载Zip"
  3. 解压两个模块到文件夹app\code\Hryvinskyi\Base和app\code\Hryvinskyi\DeferJs
  4. 运行命令
bin/magento module:enable Hryvinskyi_Base
bin/magento module:enable Hryvinskyi_DeferJs
bin/magento setup:upgrade
  1. 在管理面板中配置模块

常规设置

要获取访问“延迟JavaScript”设置的权限,请转到商店 -> 配置 -> Hryvinskyi 扩展 -> 延迟JavaScript,并展开常规设置部分。

启用延迟javascript: 从这里启用或禁用扩展。
禁用移动属性: 输入将阻止脚本移动到底部的属性。
启用minify body scripts: 启用脚本压缩。

特性

  • 能够跳过在管理面板中设置的特定标签的javascript

  • 内置跳过移动Google标签管理器(如果您使用第三方模块且无法添加特定标签)

  • 通过控制器从延迟解析中排除JavaScript。

    控制器不会受延迟js的影响。使用方式:[模块][控制器][操作](例如:cms_index_index)

  • 通过商店路径从延迟解析中排除JavaScript。

    路径不会受延迟js的影响。使用方式:/women/tops-women/jackets-women.html

  • 通过URL模式从延迟解析中排除JavaScript。

    URL模式可以是完整的操作名称或请求路径。允许通配符。例如

    *cell-phones*
    *cell-phones/nokia-2610-phone.html
    customer_account_*
    /customer/account/*
    *?mode=list
    
  • 移动的javascript压缩

  • 优化text/x-magento-init脚本

  • 能够通过您的验证器扩展模块

  • 渲染时间增加可以提高Google页面速度评分。

添加自定义验证器

要添加您的验证器

  1. 创建验证器文件 app/code/Vendor/Module/Model/PassesValidator/Validators/YourValidator.php

    <?php
    
    declare(strict_types=1);
    
    namespace Vendor\Module\Model\PassesValidator\Validators;
    
    use Hryvinskyi\DeferJs\Model\PassesValidator\ValidatorInterface;
    use Magento\Framework\App\Response\Http;
    
    /**
     * Class YourValidator
     */
    class YourValidator implements ValidatorInterface
    {
        /**
         * Validator function, handle javascript or not
         *
         * @param string $script
         * @param Http $http
         *
         * @return bool
         */
        public function validate(string $script, Http $http): bool
        {
            // Your code validate
        }
    }
  2. 创建依赖注入文件 app/code/Vendor/Module/etc/frontend/di.xml

    <?xml version="1.0"?>
    
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    
        <virtualType name="deferJsPassesValidators">
            <arguments>
                <argument name="entityTypes" xsi:type="array">
                    <item name="yourValidationName"
                          xsi:type="object">Vendor\Module\Model\PassesValidator\Validators\YourValidator</item>
                </argument>
            </arguments>
        </virtualType>
    </config>
  3. 运行命令

    php bin/magento setup:di:compile