我正在为ColdFusion应用编写管理工具,并且我想为字段提供自动完成功能以输入组件名称。为此,我需要一个应用程序中所有组件的列表。我有以下代码来获取映射列表:
public function getComponentNames() {
var ServiceFactory = CreateObject('java', 'coldfusion.server.ServiceFactory');
return ServiceFactory.runtimeService.getMappings();
}
有没有更好的方法来获取组件列表而不是抓取文件系统在这些路径下查找.cfc文件?
编辑:这个目前正在运行,但痛苦地缓慢地只有几千个组件:
public function getComponents() {
var ServiceFactory = CreateObject('java', 'coldfusion.server.ServiceFactory');
var mappings = ServiceFactory.runtimeService.getMappings();
for (m in mappings) {
var components = DirectoryList(mappings[m], true, 'path', '*.cfc');
writeDump(components);
}
}
答案 0 :(得分:2)
在CFML中,"应用程序的感觉"非常宽松。它是一堆相互交互的文件。
除了扫描所有映射外,您还需要扫描站点子目录结构中的任何目录。
你是不是更好 - 也许 - 为Sublime Text或Eclipse或其他东西写一个扩展?然后,您可以利用他们对" projects"的想法,您可以让IDE处理文件索引。然后你就可以“做东西”#34;在文件列表中,IDE将通过API向您公开。我从未编写过IDE扩展程序,因此无法提供更多帮助#34;我不敢这样。