【发布时间】:2018-06-11 20:27:20
【问题描述】:
我正在尝试了解如何在一段非常简单的代码中使用装饰器,因此我可以将这个概念应用到我更大的项目中。借鉴 Addy Osmani 的文章 here,我创建了一段简单的代码,如下所示。
比如说,我有一个名为Cat 的类,有一个meow() 方法,我想用一些日志来装饰它,如下所示。
class Cat {
@logger
meow() { console.log( ' Meeeoow! ') }
};
function logger(target, key, descriptor) {
console.log("Cat snarling...");
return descriptor;
}
const cat = new Cat();
cat.meow();
当我尝试对 Node.js 解释器(版本 9.1.0)执行此操作时,我收到以下错误。
/Users/ravindranath/projects/decorators/index.js:2 @logger ^ SyntaxError:无效或意外的令牌 在 createScript (vm.js:80:10) 在 Object.runInThisContext (vm.js:152:10) 在 Module._compile (module.js:605:28) 在 Object.Module._extensions..js (module.js:652:10) 在 Module.load (module.js:560:32) 在 tryModuleLoad (module.js:503:12) 在 Function.Module._load (module.js:495:3) 在 Function.Module.runMain (module.js:682:10) 启动时(bootstrap_node.js:191:16) 在 bootstrap_node.js:613:3
所以,我的问题是:
Node.js 9.x 是否支持装饰器语法?还是会在未来的某个版本中出现?
我在 GitHub 上看到了一些基于
express-js的装饰器,但我无法弄清楚如何创建自己的装饰器。有人可以提供一个使用 Node.js 创建自定义装饰器的简单基本示例吗?
【问题讨论】:
-
你可以在这里查看node.green
-
我写了一篇关于如何快速入门的短文 - dev.to/dpkshrma/…
标签: node.js decorator ecmascript-next