阅读 Javascript 注释
Reading Javascript Comments
虽然Javascript注释(实际上是一般的注释)的要点是编译器不会解析它们,但我想知道是否有一种方法可以使用Javascript实际读取注释 - 即
/* Hello, world! */
function readComment() {
alert(readsTheCommentSomehow()) //Would alert "Hello, World!"
}
像这样的东西的用例是像Javadoc这样的东西,或者更酷的东西,比如让代码根据上面的注释来改变它的作用。我敢肯定,还有其他原因想要这样做。
到目前为止,我考虑这样做的唯一方法是实际上(以某种方式)使Javascript读取自己的代码,按/*
,'n
,//
,*/
之类的东西进行拆分,并以这种方式返回注释。
这真的是解决此问题的最佳方法,还是我错过了什么?
您可以使用 AST 解析器和转换器(如 babel)来读取和更改代码。以下是有关如何根据您的评论阅读和更改旅游代码的简单而朴素的示例:http://astexplorer.net/#/5ezZ2lwYHQ
原始代码:
// does something
// and other stuff
function doSomething() {
console.log('hello');
}
巴别阿斯特变压器:
export default function ({types: t}) {
return {
visitor: {
FunctionDeclaration(path) {
if (path.node.leadingComments) {
const text = path.node.leadingComments.map(comment => comment.value).join(''n');
const change = t.expressionStatement(
t.callExpression(
t.memberExpression(t.identifier('console'), t.identifier('log')),
[
t.stringLiteral(`Function has comments:${text}`)
]));
path.node.body.body.unshift(change);
}
}
}
};
}
注释由编译器解析(然后丢弃)。许多提供解析器的工具,如esprima和Babel,都公开了可用于额外注释的中间阶段(抽象语法树)。
在执行代码时,注释已被丢弃,以及实际上不会影响代码运行方式的任何其他内容。
有很多JS文档工具(如JSDoc)使用注释来提供文档,并简单地将它们从解析中获取,通常不执行代码。一旦您有一个可以生成带有注释节点的 AST 的分析器,您就可以遍历该树并将注释绑定到以下节点。
请注意,空格通常会在注释之前被丢弃,或者如果可以的话,被解析器完全跳过(这在 JS 中使用 ASI 时更困难)。
相关文章:
- Javascript中的备选注释方法
- 如何用正则表达式替换特定的JavaScript注释
- Visual Studio 2012:更改javascript注释样式
- 使用JQuery或Javascript编辑HTML注释文本
- 查找所有注释的JavaScript正则表达式
- 使用xgettext从JavaScript中提取翻译器注释(在Python模式下)
- 是<!--JavaScript中的有效注释分隔符
- JavaScript 中的 POST url 被注释掉了
- 如何让 Eclipse 在 Javascript 文档中执行自动 javadoc 注释
- 从 javascript 文件中去除注释
- 为什么Javascript函数有时会在注释块中定义
- 如何使用gump在javascript文件中注入注释
- Javascript注释实践
- javascript中的注释样式
- 如何在JavaScript中显示注释线程层次结构
- 如何在生成的HTML页面中隐藏JavaScript注释
- 为静态类型检查注释javascript的好解决方案是什么
- 注释 JavaScript 函数参数
- 是否可以为闭包编译器添加@language ECMASCRIPT5来注释JavaScript
- 如何使disqus注释javascript代码在聚合物自定义元素中工作