首先,我会从文件中脱离出来,从而解释我最终想要得到什么。PHP 有一个反射扩展,允许您显示有关代码及其元素(类、函数等)的信息
require __DIR__ . '/../vendor/autoload.php';
...
$reflectionClass = new ReflectionClass('\\MyNameSpace\\MyClass'); //Создаёт отражение класса
$reflectionMethod = new ReflectionMethod('MyClass', 'myMethod'); //Создаёт отражение метода
因此,通过这样的反射,您可以获得有关代码元素的信息。至于php,我可以分享我的例子:https ://github.com/tivewsalaeharad/study/blob/main/src/functions.php
但是关于js,我想知道有没有办法做这个反射。我知道在 php 中它起着很大的作用,它极大地促进了 PSR 自动加载标准,当然,如果库是按照标准编写的,幸运的是,在大多数情况下,一个文件是一个类. 但是在js中,据我了解,没有这样的标准,一个文件中可以存在多个类,以及一堆函数。因此,目标问题如下,javascript中是否存在类似的功能:
allClasses('path/to/module.js'); // Вывести перечень классов из module.js
allFunctions('path/to/module.js'); // Вывести перечень функций из module.js
allFields(MyClass); // Вывести перечень (вообще любых) составляющих класса MyClass
我马上做一个保留:javascript中类的概念是非常相对的,以至于一个类不一定可以通过构造来声明class
,但是,有没有办法将js文件转换为某种摘要或目录或逻辑结构图?
根据描述,您需要一个 javascript 代码解析器。这是一个例子:https ://www.npmjs.com/package/acorn
在 npm 中搜索“代码解析器”。我相信你会找到你需要的。https://www.npmjs.com/search?q=Code%20Parser
关于前两个。除了解析文件本身,我不知道。
- allClasses('path/to/module.js'); // 从 module.js 导出类列表- ????
- allFunctions('path/to/module.js'); // 从 module.js 打印函数列表- ????
- allFields(MyClass); // 显示 MyClass 类的(通常是任何)组件的列表- Object.getOwnPropertyDescriptors(myClass)