在perl mason中.m文件和.mi文件有什么区别?

时间:2017-05-20 08:16:04

标签: perl mason

我想了解Perl / Mason中.m文件和.mi文件之间的区别。

根据mason组件docs:

  

.mi - 内部组件。只能从其他组件访问内部组件。

我可以看到我可以通过

调用.mi文件中编写的特定方法

$m->comp('test.mi:randomMethod', arg1=> 'blah')

我也可以为我的.m文件做同样的事情吗?我在网上搜索所有现有的地方。我只找到一个没有方法的文件,并在调用时执行整个文件。

$m->comp('test.m', arg1=> 'blah')运行整个文件,因为它没有方法。

所以,

  1. 我想知道两个文件扩展名之间的区别

  2. 我可以在.m文件中使用与.mi文件类似的方法并专门调用这些方法吗?

  3. 我应该何时选择.m文件以及.mi文件?

2 个答案:

答案 0 :(得分:4)

我对梅森来说很新,但之前遇到过类似的问题,我会尽力回答问题,但我可能会非常错误......

  
      
  1. 我想知道两个文件扩展名之间的区别
  2.   

根据我对mason的非常有限的经验,.m文件有点等同于.mc文件,它是一个用于请求的顶级组件。

.mi文件是内部组件,它们带有业务逻辑,可帮助为顶级.m文件准备数据/内容。

  
      
  1. 我可以在.m文件中使用与.mi文件类似的方法并专门调用这些方法吗?
  2.   

是的,您可以在.m文件中定义一个方法,可以像.mi文件一样调用它,例如:

$间 - >可比(' /foo/bar.m:启动&#39)

我已经看到了工作代码。

  
      
  1. 我什么时候应该选择.m文件和.mi文件?
  2.   

我想这是因为.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。是你看过内部组件的例子吗?