我们正在使用一个基于云的IDE来教第一次编写代码的javascript编程。这个IDE使用jshint进行linting,并允许我们通过.jshintrc
覆盖选项。
我们在我们的课程中使用p5.js图书馆。虽然p5做了许多非传统风格的事情,但我们发现它仍然是以一种吸引人和互动性的方式向学生介绍javascript的最佳库。
典型的p5.js“草图”是如下脚本:
let screenWidth = 600;
const screenHeight = 800;
function setup() {
// this function is called automatically by p5
createCanvas(screenWidth, screenHeight);
}
function draw() {
// this function is called automatically every frame by p5
}
使用此脚本,jshint将为setup()
和draw()
抛出警告,因为它们是定义的,而不是使用的。但是,p5.js库为我们“导出”这些,并使用我们定义的函数,所以上面的脚本没有什么问题。
如果我想抑制这个警告,我可以将/* exported: setup,draw */
放在文件的某个位置。然而,这是一个有点期待新学习者来管理。这里有一个类似于数十种其他功能的p5,因此学习者必须记住每次都将这个函数添加到注释行中。它增加了一些认知负担来解释为什么他们需要这样做。
我们现在拥有的最简单的解决方案是通过在jshint中将unused
设置为false
来全局禁用警告。然而,这并不理想,因为初学的学生在打字时经常拼写错误。例如,另一个这样的函数是mouseMoved()
。通过在脚本中定义这个函数,p5将在鼠标移动时自动调用它。但是,如果学生将其错误地输入为mousemoved()
或MouseMoved()
,则不会执行它,而且他们也不会收到任何关于原因的警告(假设我们在jshint中禁用了unused
)。
有办法在.jshintrc文件中定义这些“导出”函数吗?如果是这样的话,我们可以简单地将所有导出的p5函数放在那里,而不需要学生自己来完成。
发布于 2022-02-21 12:55:35
我没有亲自使用过JSHint
,但这看起来很有希望:https://jshint.com/docs/options/#globals
更新
对不起,我误解了你的问题。我以为你对未定义的变量引用有问题。似乎没有一种方法可以将JSHint配置为按名称忽略某些未使用的变量。因此,正如您所指出的,唯一的解决方案可能是完全禁用这类警告:
https://jshint.com/docs/options/#unused
你也可以教你的学生在实例模式中使用p5.js。虽然对于初学者来说这更复杂,但在考虑JavaScript最佳实践时,编写草图是一种更好的方法。然而,这并不一定会减轻错误类型的回调函数名的问题。如果p5.js 友好误差系统自动搜索内置回调函数的常见拼写错误,那就太好了。
https://stackoverflow.com/questions/71212622
复制