gpt4 book ai didi

JavaScript数据访问设计

转载 作者:行者123 更新时间:2023-11-29 14:58:16 25 4
gpt4 key购买 nike

我正在编写一个单页应用程序,并且已经完成了为客户端编写数据访问层的工作。我的问题涉及它的正确设计。虽然我确实理解 JS 是以回调为中心的,但我想知道是否有更好的方法来进行数据检索。以下是我当前的数据访问调用如何使用回调格式化的示例:

$interface.getDashboard = function (callback) {
callback({MyApplications:[]});
};

这是我正在考虑的方向,以消除所有地方对回调的需求:

$interface.getApplications = function () {
var v = amplify.store("api.applications");
if (!v) {
v = [];
_get("/api/applications", null, function (results) {
amplify.store("api.applications", results, { expires: _cacheTimeOut });
dataRefresh();
});
}

return v;
};

在上面的代码中,dataRefresh() 将通知所有适用的订阅者刷新他们的数据。所以我想你可以说它仍在使用回调,但方式不同。

有更好的方法吗?我以前从未为 javascript 编写过强大的数据访问层,想知道是否有一种模式可以作为约定或启发式解决方案遵循?

最佳答案

我目前正在处理关于如何设计和构建我正在处理的新企业级应用程序的 Javascript 方面的相同问题。

许多 SPA 示例/模板(例如 HotTowel)非常适合向您展示如何开始使用 SPA,但在大规模实现方面没有提供太多帮助。

talk Nicholas Zakas 提出了一个很好的解决方案。可以找到演讲的幻灯片 here .

总而言之,您的客户端层应包括:

  1. 一组模块 - 这些模块为您的应用提供独立的功能单元。它们应该完全相互独立,并且只知道沙箱。

  2. 沙箱 - 它为模块提供一致的外观接口(interface),并充当模块和应用程序核心之间的 Controller 。

  3. 应用程序核心 - 这是负责模块管理、相互通信以及您的应用程序所需的任何其他核心功能(例如 ajax 请求)的调解器。只有应用核心应该知道您正在使用的基础库。

  4. 基础库 - 这些库提供浏览器规范化和任何其他通用功能,例如 DOM 操作。

link扩展了此设计并提供了更多详细信息。

我知道这个答案并没有专门针对您的数据访问层,但作为更一般的架构概述,您可以将这些概念应用到您的特定场景。

编辑:

AuraJS是 Zakas 概述的理论的具体实现,由 Addy Osmani 开发。它目前处于开发人员预览阶段,但它看起来是一个很好的创意起点。

关于JavaScript数据访问设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14381828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com