迁移指南

Introduction

虽然已经注意确保 Snowboard 框架涵盖原始功能的整个范围AJAX框架 前提是,这两个框架之间存在细微差别。请花时间通读本文档以确保您了解所有更改,尤其是当您打算升级现有项目以使用此新框架时。

重大变化

浏览器支持更严格

Snowboard 不再支持 Internet Explorer 以及一些较少使用或已停产的浏览器,例如 Samsung Internet Browser 和 Opera Mini。该框架至少旨在支持 ECMAScript 2015 (ES2015) JavaScript 语言。

我们的构建脚本被设置为将以下浏览器视为与框架兼容:

对于希望支持旧版浏览器(如 Internet Explorer)的人,您可以继续使用原来的AJAX框架,它仍然得到Winter维护团队的支持,但可能不会收到任何新功能。

不再需要 jQuery

我们已经删除了对 jQuery 的硬依赖,这也意味着这个新框架中不存在 jQuery 功能。如果您依赖于 jQuery 可用于您自己的 JavaScript 功能,则您必须自己将 jQuery 包含在您的主题中。

HTML 数据属性框架中的 JavaScript 已弃用

原本的AJAX框架 允许在回调数据属性中指定任意 JavaScript 代码,例如,data-request-success,data-request-errordata-request-complete,作为一种允许 JavaScript 根据通过 HTML 数据属性发出的 AJAX 请求的成功或失败来运行其他任务的方法。

由于使用了eval() JavaScript 中执行此 JavaScript 的方法,这具有安全隐患(尤其是在前端代码上)并阻止人们在不使用unsafe-eval CSP规则.

如果您希望将 JavaScript 与 AJAX 功能结合使用,您必须使用JavaScript 请求功能,或者使用原来的AJAX框架 保留了这个功能。

AJAX 事件作为 DOM 事件触发

以前,原始的 AJAX 框架使用 jQuery 的事件系统在受 AJAX 请求影响的元素上触发事件。由于不再使用 jQuery,我们现在使用 DOM 事件代替它们。

此更改要求我们提供事件数据作为 DOM 事件的属性,而不是处理程序参数。

例如,ajaxAlways 当在元素上触发 AJAX 请求时在元素上触发的事件可以通过 jQuery 设置监听器,如下所示:

$('#element').on('ajaxAlways', function (event, context, data, status, xhr) {
    console.log(context); // The Request's context
    console.log(data); // Data returned from the AJAX response
});

现在,您必须查看 Event 对象属性以获取此信息:

$('#element').on('ajaxAlways', function (event) {
    console.log(event.request); // The Request object
    console.log(event.responseData); // Data returned from the AJAX response
});

请查看JavaScript 请求 有关 DOM 事件可用属性的信息的文档。

其他变化

JavaScript AJAX 请求

发出请求

原始框架使用 jQuery 扩展通过 JavaScript 调用 AJAX 请求:

$('#element').request('onAjaxHandler', { /* ... options .. */ })

现在更改为使用基本的 Winter 类来调用 Request 插件:

Snowboard.request('#element', 'onAjaxHandler', { /* ... options .. */ });
豫ICP备18041297号-2