【问题标题】:In perl mason what is the difference between .m file and .mi file?在 perl mason 中 .m 文件和 .mi 文件有什么区别?
【发布时间】:2017-10-20 09:07:01
【问题描述】:

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

根据 mason 组件文档:

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

我可以看到我可以调用写在.mi文件中的特定方法

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

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

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

所以,

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

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

  3. 什么时候选择.m文件,什么时候选择.mi文件?

【问题讨论】:

  • 你试过了吗?或者您在尝试之前是否在评估是否要使用 Mason?
  • 有一个正在执行的现有 .m 文件。它没有任何方法。但是 .mi 文件在哪里有方法,特别是可以单独调用这些方法。 .m 文件中可能吗?我想在尝试之前了解一下。
  • 我没用过Mason,所以不知道。我试图帮助你澄清你的问题。但我的建议是你只需创建一个新的 .m 文件,在其中放入一个 hello world 方法并尝试。 :)
  • 好的,感谢您的帮助。
  • "the mason components docs"你的意思是Mason::Manual::Components的文档吗?

标签: perl mason


【解决方案1】:

我只见过 Mason Perl.mp.mc.mi,梅森组件和梅森内部。但它们是可配置的

如果您从 Mason::Interp 文档中阅读 PARAMETERS TO THE new() CONSTRUCTOR,您会看到您可以为 pure_perl_extensions 指定一个值以更改 .mp 的默认值top_level_extensions 代表 .mc

完全有理由遵守这些标准,除非您正在使用两个相互冲突的标准并且需要一个让路

我不知道是否需要 .mi,但似乎不太可能。而且我不记得曾经见过一个简单的.m。你自己在哪里看到的,不应该是 .mi 文件吗?——即您看到的示例是内部组件吗?

【讨论】:

    【解决方案2】:

    我对 Mason 有点陌生,但之前遇到过类似的问题,我会尽力回答这些问题,但我可能会非常错误......

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

    根据我对 mason 非常有限的经验,.m 文件在某种程度上等同于 .mc 文件,后者是服务于请求的顶级组件。

    .mi 文件是内部组件,承载业务逻辑,帮助为顶级 .m 文件准备数据/内容。

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

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

    $m->comp('/foo/bar.m:start')

    我见过这样的工作代码。

    1. 什么时候选择.m文件,什么时候选择.mi文件?

    我想这与 .m 和 .mi 文件之间的差异有关。

    对于公共逻辑,比如拉图,可以把逻辑放到.m文件中。

    对于业务逻辑或处理敏感信息,在 .mi 文件中进行。

    【讨论】:

    • @Jolta 这看起来是一个完全有效的答案。为什么将其标记为“作为答案发布的不同问题”?
    猜你喜欢
    • 1970-01-01
    • 2011-04-26
    • 2011-03-25
    • 1970-01-01
    • 2020-08-19
    • 2011-05-22
    • 2010-10-26
    • 2011-01-26
    • 2010-10-28
    相关资源
    最近更新 更多