devgeniem/dustpress-js

DustPress 插件,提供了一款便捷的 JavaScript 库,用于在前端使用 DustPress 模型方法。

安装次数: 52,946

依赖关系: 0

建议者: 0

安全性: 0

星标: 3

关注者: 30

分支: 2

公开问题: 12

语言:JavaScript

类型:wordpress-plugin

4.4.3 2023-04-13 11:53 UTC

README

geniem-github-banner

DustPress 插件:DustPress.js

DustPress 插件,提供了一款便捷的 JavaScript 库,用于在前端使用 DustPress 模型方法。

用法

您可以使用以下代码调用 SomeModel 的方法 SomeMethod

dp( 'SomeModel/SomeMethod', {
    tidy: true,
    args: {
        'foo': 'bar'
    }
}).then( ( data ) => {
    // do what you want with the data
}).catch( ( error ) => {
    // possible error
});

tidy: true 参数对数据树进行一些清理,使其更易于使用。您可以尝试带有和不带有它的查询以查看差异。

args 参数将参数传递到 PHP 侧。您可以使用 $this->get_args(); 在那里访问它们。

如果您愿意,您甚至可以使用 Dust 模板渲染 HTML。

dp( 'SomeModel/SomeMethod', {
    partial: 'SomePartial',
}).then( ( data ) => {
    // do what you want with the data
}).catch( ( error ) => {
    // possible error
});

此代码使用 SomeMethod 的数据,并用 SomePartial 进行渲染。变量 data 然后包含准备好的 HTML。

如果您还想获取数据输出,请使用参数 data: true,您将在成功函数的第二个参数中获得结果数据。

如果您想获取完整模型的数据,也可以完全省略方法。

dp( 'SomeModel/SomeMethod' ).then( ( data ) => {
    // do what you want with the data
}).catch( ( error ) => {
    // possible error
});

还可以使用异步-等待模式使用 dp 调用

try {
    var foobar = await dp( 'SomeModel/SomeMethod', {
        tidy: true,
        args: {
            foo: 'bar'
        }
    });
} catch( err ) {
    console.error( err );
}

现在数据将是一个对象,其中方法的名称作为键,其返回值作为值。显然,您也可以将其渲染为 HTML。

附加参数

bypassMainQuery

默认情况下,DustPress.js 会绕过 WordPress 的主 WP_Query,以免在不必要的情况下减慢请求速度。如果您想使用默认查询,可以设置 bypassMainQuery: false

模型函数前端可见性

您需要通过在您的模型中定义一个名为 $api 的属性来使 DustPress.js 可访问您的方法。它应该是一个数组,包含您可访问的方法名称。DustPress.js 还可以运行 DustPress 通常不会自动运行的 protected 方法。

class SomeModel extends DustPressModel {
    public $api = [
        'SomeMethod'
    ];

    protected function SomeMethod() {
        // Some code..
    }
}

如果您需要确定是否已从 AJAX 调用中调用,可以使用以下示例中的 dustpress()->is_dustpress_ajax() 函数

class SomeModel extends DustPressModel {
    public $api = [
        'PublicMethod'
    ];

    public function PublicMethod() {
        if ( dustpress()->is_dustpress_ajax() ) {
            // Do not run if this an ajax request.
            return;
        }
        // Some code..
    }
}

安装

推荐通过 composer 安装到 WordPress 项目中

$ composer require devgeniem/dustpress-js

显然,您也可以从 GitHub 下载 ZIP 文件并将其解压到您的插件目录中。