我很可能成为下一学期我大学网络编程课程教学团队的一员,我想知道向学生分发什么样的Javascript作业。从编程角度来看,该课程不是介绍性课程。
假设学生熟悉OOP,数据结构和算法,函数编程概念和网络协议的工作知识(包括HTTP)。这是他们第一次接触JavaScript的课程
我正在考虑提供一些特定于框架的(可能使用jQuery),它涉及DOM遍历,一些动画和AJAX。我想到的三个问题是:
我让他们做Tic Tac Toe作为jQuery插件,结果大多满意(70%的学生提交,一般提交都没问题)。
为了防止从网上复制代码,我想出了一个他们必须实现的API。至少,他们必须先了解他们在网上找到的代码,然后再复制并粘贴到方法中:)。
我使用QUnit进行自动化测试,但我也手动测试了每个作业,因为这是他们第一次做出的JavaScript任务,我想提供相关的反馈。
谢谢大家的意见,他们都帮了很多忙。
干杯,
亚历
答案 0 :(得分:5)
我认为在使用框架之前,学生有必要了解语言的基础知识。他们需要了解JS Scopes,闭包,原型,内存模型以及使JS独特的一切。
之后,将它们引入框架和DOM。他们会更加欣赏他们,因为他们能够理解实施。
至于测试,如果你让它们生成一个可以走路和验证的DOM,那么自动化测试可能很容易。 Mozilla可能能够帮助你,尤其是JSUnit。您可以找到信息here
答案 1 :(得分:3)
我总是喜欢制作游戏来学习新编程概念的想法。你得到一个定义明确的问题域,它就像你需要的那样简单或复杂,而且实现起来通常比其他问题更有趣,更有趣。
当我想学习Ajax编程时,我使用jQuery和Java服务器端来实现the game of chess。这是一个有趣的项目,但非常复杂(至少对我来说,但我主要是服务器端程序员)。我认为像Tic-Tac-Toe这样的东西会更加简单,对于项目分配来说可能是一个好主意。
至于3个问题:
答案 2 :(得分:1)
从vanilla JavaScript开始学习基础知识。您不希望创建一个依赖于任何特定框架的组,如果没有它就不知道该怎么做。
答案 3 :(得分:1)
我绝对会让他们编写vanilla JavaScript。它将鼓励所有学生更好地理解框架/库在特定环境中提供的抽象,即大多数情况下,在使用DOM的浏览器中。
我强烈建议您为课程提供优秀的文字。 Object Oriented JavaScript by Stoyan Stefanov在我看来是学习语言的好文本,包括许多人难以解决的一些主题(原型,对象,闭包,继承等)。我读过很多JavaScript书籍,觉得这个特定的文本最能平衡语言的核心,以及它在现代客户端开发领域的应用。
然后,您可能希望剖析特定JavaScript库的某些源代码,以深入了解实际场景中使用的模式和实践。
答案 4 :(得分:0)
我希望他们编写vanilla javascript并学习如何使用jQuery。 jQuery毕竟是javascript,无论如何他们都需要有关该语言的工作知识。他们还需要成为SWAT(使用高级工具的技能),我相信在今天的环境中没有使用其中一个JS框架(或者至少是他们自己的!)的人处于严重的劣势。
请参阅答案1.我将教他们关于vanilla JS中的原型继承,以及jQuery中的DOM操作。
可以通过多种方式实现自动化测试。 1:给出一些示例代码产生正确的输出,以开始处理学习JS的部分。 2:对于处理jQuery的部分,您可以提供一个参考图像,用于表示您期望结果的外观,提供原始文档,并让他们使用jQuery操作重新创建参考图像......有点像ACID测试{ {3}}
答案 5 :(得分:0)
他们应该使用框架还是应该让他们编写vanilla JavaScript?
对我而言,对语言不熟悉的人开始使用适当的语言,而非修改版本或高级/花式库,为您完成大量工作,这是非常重要的。此外,如果你开始没有使用DOM,那么你几乎没有从使用任何库中获得太多好处,因为大多数JavaScript库都与处理DOM有关。此外,在“香草”环境中进行教学和学习时,更容易发现“不良”或性能不佳的代码,因为您没有图书馆抽象出细节。
我是否应该更多地关注函数式编程部分和原型继承部分(更多关于语言而不是使用DOM)?
是的!一方面,DOM并不是那么大的交易;但它也是JavaScript与之交互的核心。对于初学者,我建议如果您要使用浏览器环境,最初应该使用Firebug的console.*
方法来避免DOM输出,这样您就可以专注于“函数式编程部分和原型”继承“和其他核心概念。在涵盖了这些核心概念之后,开始介绍DOM。最好在以后引入DOM,因为时间需要专注于跨浏览器兼容性,如果您试图串联教授核心概念,这只会混淆主题。
如何自动进行测试?如果他们对如何评估它们有清晰的认识,那就更好了。此外,自动化测试可确保客观性并节省时间:)。
在引入DOM之前(和之后),您可以使用类似JSUnit的内容。另请参阅此问题:Automated Unit Testing with JavaScript。一旦您介绍了DOM,您可能希望让学生生成一个文档,您可以走,并验证as SB suggested。