【问题标题】:CoffeeScript + Node.js - "delete" functionCoffeeScript + Node.js - “删除”功能
【发布时间】:2014-07-15 11:10:43
【问题描述】:

CoffeeScript 有点问题。我正在尝试在 Node.js 和 Express 中构建一个 RESTful API。这是代码的问题部分:

express = require('express');
router = express.Router()
router.route '/todos/:todo_id'
.get (req, res) ->
    # do get ...
.delete (req, res) ->
    # do delete ...
.put (req, res) ->
    # do put ...

编译为:

router.route('/todos/:todo_id')
.get(function(req, res) {
    # here's my get code
})["delete"](function(req, res) {
    # here's my delete code
}).put(function(req, res) {
    # here's my put code
});

“delete”关键字似乎很棘手 - 当我用任何其他词(get、put、delet 等)替换它时,它编译为 .keyword 就好了,但只有“delete”关键字编译为数组 -访问的东西。由于 REST,我不能使用任何其他关键字。有任何想法吗?谢谢。

【问题讨论】:

  • 我可能是少数,但咖啡脚本是伪装的魔鬼。您将花费更多时间修复编译错误而不是实际错误。事实上,["delete"] 编译是 Coffeescript 中的一个怪癖。见此链接:stackoverflow.com/a/18024915/2068709
  • 嗯,它现在真的有效,即使是["delete"],谢谢。我同意,CoffeeScript 并没有看起来那么好,但我真的不知道有什么更好的。这里有什么想法吗?打字稿可能吗?纯Javascript?
  • 我每天都会选择纯 javascript 而不是其他东西。是的,它可能看起来不那么漂亮或可能更长,但你可以在一周中的任何一天拥有更多的控制权。
  • TypeScript 或 Flow(来自 Facebook)在 CoffeeScript 上,总是如此。保留 javascript 的精神/可以选择只写普通的 javascript,而不是完全写“别的东西”。

标签: node.js express coffeescript


【解决方案1】:

因为delete 是一个关键字,正如您自己注意到的那样,您不能将它用作标识符的名称。但是,由于 JavaScript 中的对象属性也可以使用 [] 访问,因此您仍然可以使用括号表示法定义(和使用)具有关键字名称的方法。

CoffeeScript 知道这一点,并自动为您正确编译它。这应该不会影响功能。

【讨论】:

    猜你喜欢
    • 2012-12-23
    • 2012-09-16
    • 2020-08-07
    • 2023-04-01
    • 2017-03-18
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多