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

在纯客户端测试应用程序(javascript/jquery)中维护状态和管理i/o的体系结构,javascript,jquery,architecture,client-side,Javascript,Jquery,Architecture,Client Side,这个问题必然有点笼统;它涉及使用javascript和jquery构建的客户端应用程序的总体架构: 我正在构建一个基于jquery的测验应用程序。出于最初的目的,我试图完全在客户端开发它,所有问答数据都存储在js文件中的对象文本中(我现在并不特别担心数据会暴露在源代码中)。我想构建它,以便这个实现可以很容易地适应ajax解决方案,在ajax解决方案中,问题数据将从php文件或数据库中提取 我已经编写了一个问题生成函数,它接受描述问题的对象文本,并将其呈现为html,然后将其插入页面。我的问题是,

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

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

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


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

同样的原则也适用

你的程序的入口点将是某个附加到某个事件的函数,该事件将启动一切。通常这将是页面加载功能

在这个函数中,你将设置程序(如C++中的主程序),创建表示程序状态的变量(全局或其他)。我猜你会有一些逻辑选择并提出一个问题,也许是一个“OK”按钮,用户一旦高兴,用户就应该点击它。此时浏览器正在等待用户输入,用户选择他的答案并单击ok。程序的逻辑可能是将答案存储在某个变量中,然后计算下一个要显示的问题。为此,您在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;