在纯客户端测验应用程序中维护状态和管理i / o的体系结构(javascript / jquery)

时间:2012-02-07 11:40:34

标签: javascript jquery architecture client-side

这个问题必然有点笼统;它与使用javascript和jquery构建的客户端应用程序的整体架构有关:

我正在构建一个基于jquery的测验应用程序。出于初始目的,我试图将其完全发展到客户端,将所有问题和答案数据存储在js文件中的对象文字中(我现在并不特别关注数据将在源中公开)。我想构建它,以便这个实现可以很容易地适应ajax解决方案,其中问题数据将从php文件或数据库中提取。

我编写了一个问题生成函数,它接受描述问题的对象文字并将其呈现为html并将其插入到页面中。我的问题是,当用户进行测验时,存储用户答案数据和实现i / o的最佳做法是什么。问题将按顺序显示,并且将存在一个逻辑,该问题从二维问题网格中进行选择,以根据用户是否正确回答以及他们所在问题的问题网格上的坐标位置来确定接下来将呈现哪个问题

很高兴发布我已编写的任何代码,如果这有助于提供答案。感谢。

1 个答案:

答案 0 :(得分:1)

同样的原则适用。

你的程序入口点将是一些附加到某些事件的功能,这些功能可以解决所有问题。通常这将是页面加载功能。

在此函数中,您将设置程序(就像在C ++主程序中一样),创建表示程序状态等的变量(全局或其他)。我猜你有一些选择并提出问题的逻辑加上一个“确定”按钮,一旦用户满意,用户就应该点击该按钮。此时浏览器只是在等待用户输入,用户选择他的答案并单击确定。程序的逻辑可能将答案存储在某处的变量中,并计算要显示的下一个问题。为此,您已经为实现此逻辑的onclick事件处理程序添加了一个函数。你提出下一个问题,瞧你回到了循环的开始。

我建议让简单的循环方面适应javascript和事件模型,而不是担心全局变量是否坏。在任何情况下,您将至少拥有一个全局变量,这可能是对更复杂的ApplicationState对象的引用。

我不确定你的困惑是否是你的一部分,但你知道的不是:

button.onclick = new function() {  // loads of program code to get next question };

你可以做到

function NextQuestion() {
     // code to get next question
}

button.onclick = NextQuestion;