迁移指南
Introduction
虽然已经注意确保 Snowboard 框架涵盖原始功能的整个范围AJAX框架 前提是,这两个框架之间存在细微差别。请花时间通读本文档以确保您了解所有更改,尤其是当您打算升级现有项目以使用此新框架时。
重大变化
浏览器支持更严格
Snowboard 不再支持 Internet Explorer 以及一些较少使用或已停产的浏览器,例如 Samsung Internet Browser 和 Opera Mini。该框架至少旨在支持 ECMAScript 2015 (ES2015) JavaScript 语言。
我们的构建脚本被设置为将以下浏览器视为与框架兼容:
- 浏览器必须至少拥有 0.5% 的市场份额。
- 浏览器必须在该浏览器的最后 2 个发布版本中。
- 浏览器不能是 Internet Explorer。
- 开发人员不得停止浏览器。
对于希望支持旧版浏览器(如 Internet Explorer)的人,您可以继续使用原来的AJAX框架,它仍然得到Winter维护团队的支持,但可能不会收到任何新功能。
不再需要 jQuery
我们已经删除了对 jQuery 的硬依赖,这也意味着这个新框架中不存在 jQuery 功能。如果您依赖于 jQuery 可用于您自己的 JavaScript 功能,则您必须自己将 jQuery 包含在您的主题中。
HTML 数据属性框架中的 JavaScript 已弃用
原本的AJAX框架 允许在回调数据属性中指定任意 JavaScript 代码,例如,data-request-success
,data-request-error
和data-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 .. */ });