我想了解Perl / Mason中.m文件和.mi文件之间的区别。
根据mason组件docs:
.mi - 内部组件。只能从其他组件访问内部组件。
我可以看到我可以通过
调用.mi文件中编写的特定方法 $m->comp('test.mi:randomMethod', arg1=> 'blah')
我也可以为我的.m文件做同样的事情吗?我在网上搜索所有现有的地方。我只找到一个没有方法的文件,并在调用时执行整个文件。
$m->comp('test.m', arg1=> 'blah')
运行整个文件,因为它没有方法。
所以,
我想知道两个文件扩展名之间的区别
我可以在.m文件中使用与.mi文件类似的方法并专门调用这些方法吗?
我应该何时选择.m文件以及.mi文件?
答案 0 :(得分:4)
我对梅森来说很新,但之前遇到过类似的问题,我会尽力回答问题,但我可能会非常错误......
- 我想知道两个文件扩展名之间的区别
醇>
根据我对mason的非常有限的经验,.m文件有点等同于.mc文件,它是一个用于请求的顶级组件。
.mi文件是内部组件,它们带有业务逻辑,可帮助为顶级.m文件准备数据/内容。
- 我可以在.m文件中使用与.mi文件类似的方法并专门调用这些方法吗?
醇>
是的,您可以在.m文件中定义一个方法,可以像.mi文件一样调用它,例如:
$间 - >可比(' /foo/bar.m:启动&#39)
我已经看到了工作代码。
- 我什么时候应该选择.m文件和.mi文件?
醇>
我想这是因为.m和.mi文件之间存在差异。
对于公共逻辑,例如拉动图像,可以将逻辑放在.m文件中。
对于业务逻辑或处理敏感信息,请在.mi文件中执行。
答案 1 :(得分:1)
我只见过 .mp , .mc , .mi Mason Perl ,< em> Mason Component 和 Mason Internal 。但它们是可配置的
如果您从Mason::Interp
文档中读取参与新()CONSTRUCTOR 的参数,您将看到您可以指定shared
的值来更改默认值< strong> .mp ,pure_perl_extensions
代表 .mc
有充分的理由遵守这些标准,unles你正在处理两个相互冲突的标准,需要一个让我们走开的方式
我不知道是否需要 .mi ,但似乎不太可能。我不记得曾经见过一个简单的 .m 。你自己在哪里看过这个,不应该是 .mi 文件?-i.e。是你看过内部组件的例子吗?