一份全面的Javascript作业的想法

7
我将有可能成为下个学期我大学Web编程课程的教学团队成员,我在思考应该给学生分配什么样的Javascript作业。从编程角度来看,该课程不是入门级别。
假设学生们熟悉面向对象编程(OOP),数据结构和算法,函数式编程概念,以及对网络协议(包括HTTP)的工作知识。这是他们第一次接触JavaScript。
我想要分配一些特定于框架的作业(也许使用jQuery),涉及DOM遍历、动画和AJAX。我心中有三个问题:
  • 他们应该使用框架还是应该写原始的JavaScript?
  • 我应该更加关注函数式编程部分和原型继承部分(更多地关注语言而非与DOM的交互)吗?
  • 如何为此自动化测试?如果他们清楚地知道自己将如何被评估,那将更好。此外,自动化测试可以确保客观性并节省我的时间 :)

最终结果

我让他们用jQuery插件方式完成井字棋游戏,结果大多数学生提交了作业,总体来说提交结果还可以。
为了防止抄袭,我设计了一个API,他们必须实现此API。至少,在复制粘贴方法之前,他们必须理解他们在网上找到的代码。
我使用QUnit进行自动化测试,但我还手动测试了每个作业,因为这是他们第一次完成JavaScript作业,我想要提供有意义的反馈。
感谢大家的帮助和建议。
祝好,
Alex

很高兴它对你有用。祝你未来好运。 - NG.
6个回答

5
我认为在使用框架之前,学生了解语言的基础知识是有用的。他们需要了解JS作用域、闭包、原型、内存模型以及JS的独特之处。之后,再介绍框架和DOM,学生将能够理解实现并更加欣赏它们。至于测试,如果您让学生生成一个可以遍历和验证的DOM,自动化测试可能会比较容易。Mozilla可能会提供帮助,特别是在JSUnit方面。您可以在这里找到相关信息。

+1 为教授基础知识。绝大多数编写JavaScript的人只知道如何处理DOM操作和编写事件处理程序。随着HTML5的出现,了解JavaScript作为一种真正的语言是非常有优势的。 - Jacob
我写的讲义是以你的想法为蓝本的 :). Javascript 有三个部分:语言、DOM 和 AJAX。在 DOM 和 AJAX 部分中,jQuery 被介绍为一种有用的替代传统脚本的工具。 - Alex Ciminian

3
我总是喜欢使用制作游戏的方法来学习新的编程概念。你可以得到一个定义明确的问题领域,无论简单还是复杂,都可以实现,而且通常比其他问题更有趣和有趣。
当我想学习Ajax编程时,我使用jQuery和Java服务器端来实现国际象棋。这是一个有趣的项目,但相当复杂(至少对我来说,但我主要是服务器端程序员)。我认为像井字游戏这样的东西会更简单,并且可能是一个很好的项目任务。
至于这3个问题:
  1. 如果这是唯一的JavaScript作业,那么我可能会使用vanilla而不是jQuery。但如果他们在此之前有机会完成一些任务,我会考虑jQuery,因为它使JavaScript少受干扰,也很好学习jQuery以备将来就业的可能性。
  2. 我会平等地强调语言和DOM,因为语言的主要目的是在DOM上工作,DOM确实需要一些时间适应。
  3. 我认为Selenium可能适用于您尝试进行的测试。JsUnit还可用于单独测试方法。

游戏的想法很棒,因为可以通过伪造输入来自动化一些测试。 - NG.
1
你的想法赢了 :). 我让他们把Tic Tac Toe做成一个jQuery插件,结果大多数还算满意(70%的学生提交了作业,总体上来说提交的作品还不错)。为了防止从网上抄袭,我设计了一个API,他们必须实现它。至少,在复制和粘贴代码之前,他们必须理解在网上找到的代码 :). 干杯! - Alex Ciminian

1

从基础的纯JavaScript开始学习。您不希望创建一个依赖于任何特定框架的团队,否则他们将不知道如何在没有它的情况下完成任务。


1

我肯定会让他们编写纯JavaScript。这将鼓励所有学生更好地理解框架/库在特定环境中提供的抽象,即在浏览器中与DOM一起工作。

我强烈推荐为课程准备一本好书。《面向对象的JavaScript》 by Stoyan Stefanov 在我看来是学习语言的好书,包括许多人难以理解的主题(原型、对象、闭包、继承等)。我已经阅读了很多JavaScript书籍,并认为这本特定的书最好地平衡了语言的核心和它在现代客户端开发领域的应用。

然后,您可能希望剖析特定JavaScript库源代码的某些部分,以获得实际场景中使用的模式和实践的见解。


0
  1. 我会让他们编写原生JavaScript,并学习如何使用jQuery。毕竟,jQuery就是JavaScript,而且无论如何,他们都需要对这种语言有一定的了解。他们还需要成为SWAT(熟练掌握高级工具),我认为在今天的环境中,任何不使用JS框架(或至少自己的框架!)的人都处于严重劣势。

  2. 参见答案1。我会教他们关于原生JS中的原型继承,以及在jQuery中进行DOM操作。

  3. 自动化测试可以通过多种方式实现。1:针对涉及学习JS的部分,可以提供一些样例代码,以产生正确的输出。2:针对涉及jQuery的部分,您可以提供一个参考图像,展示您期望的结果,提供一个原始文档,并要求他们使用jQuery操作重新创建参考图像...有点像ACID测试http://acid3.acidtests.org/


0
他们应该使用框架还是我让他们编写原生JavaScript?
对我来说,对于刚接触这门语言的人来说,最重要的是从正确的语言入手,而不是修改版本或高级/花哨的库,这些库可以为您完成大部分工作。此外,如果您开始时没有使用DOM,则几乎无论使用哪个库,大多数JavaScript库的主要功能都与处理DOM有关。此外,在“原始”环境中教学和学习更容易发现“糟糕”的或性能不佳的代码,因为您没有库抽象出琐碎的细节。
我应该更加关注函数式编程部分和原型继承部分(更多地关注语言而不是与DOM一起工作)吗?

是的!一方面,DOM并不是什么大不了的事情;但另一方面,它也是JavaScript用于交互的核心。首先,我建议如果你要使用浏览器环境,最好通过使用Firebug的console.*方法进行输出来避免使用DOM,这样你就可以专注于“函数式编程部分和原型继承”以及其他核心概念。在掌握了这些核心概念之后,再开始介绍DOM。最好晚些介绍DOM,因为需要花费时间来处理跨浏览器兼容性,如果你试图同时教授核心概念,这只会让学生感到困惑。

我该如何自动化测试呢?最好让他们清楚地知道他们将如何被评估。此外,自动化测试确保客观性并节省我的时间 :)

在 DOM 出现之前(和之后),你可以使用类似 JSUnit 的东西。此外,参见这个问题:使用 JavaScript 进行自动化单元测试。一旦引入了 DOM,您可能希望让学生生成一个文档,您可以遍历并验证 如 SB 所建议的那样


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接