【问题标题】:Titanium: require a module inside a commonjs moduleTitanium:在 commonjs 模块中需要一个模块
【发布时间】:2012-07-09 15:38:54
【问题描述】:

我发现我们可以创建 CommonJS 模块而不是原生或 Web 模块(查看您的 Titanium 文件夹并搜索 ti.cloud 模块)。但是我找不到可以解释它的文档...

所以,我尝试在 Titanium 文件夹“commonjs”中添加自己的 CommonJS 模块,并使用“require”将其导入我的应用程序。它运行起来就像一个魅力。

现在,我想在我的 CommonJS 模块中添加一些其他文件,并使模块在模块内相互引用。

例如在我的应用中,我有:

  • main.js
  • 用户界面
    • CommonView.js

在这个结构中,main.js 是我的主模块,并且有一个方法 createCommonView() 尝试要求模块 CommonView (require('./ui/CommonView')) 但编译器抱怨找不到该模块.

如何创建一个包含多个相互引用的模块的 CommonJS 模块?

确切地说,我不想在我的项目中复制这些模块。我想将它们保存在 Titanium 文件夹中,以便所有项目都可以使用它。

【问题讨论】:

    标签: android ios module titanium commonjs


    【解决方案1】:

    这是来自 Appcelerator 的一篇关于 CommonJS 模块的博文:http://developer.appcelerator.com/blog/2011/12/commonjs-module-guide-for-1-8.html

    这是来自 Appcelerator 的指南/文档:https://wiki.appcelerator.org/display/guides/CommonJS+Modules+in+Titanium

    现在,所有模块引用都是相对于应用程序根目录的:

    • 在 app.js 中,require('main');
    • 在 main.js 中,require('ui/CommonView')
    • 在 CommonView.js 中,require('ui/SpecificView')

    并且打包的 CommonJS 模块(例如 ti.cloud,安装在你的应用程序或 Application Support 的“modules”目录中)仅支持单个 JavaScript 文件。

    提示:我只需在 Google 中输入“Appcelerator CommonJS”即可找到这些指南。我不确定您使用什么方法来查找文档。 Titanium Mobile 文档的“全局”对象中也大量记录了“require”: http://docs.appcelerator.com/titanium/2.1/index.html#!/api/Global

    【讨论】:

    • 谢谢,但我知道所有这些指南。我的问题是关于在打包的 commonjs 模块中使用 require 。正如您所指出的,它似乎只使用一个 javascript 文件,我们无法引用该文件中的其他文件。这是我的问题的目标;)
    • 正确,现在每个 CommonJS 模块只能有一个文件。但是您可以有多个模块相互引用。我的回答很彻底,因为在您进入最后一句话之前,您的问题相当模糊。
    • 根据docs:如果路径字符串没有以./、../或类似前缀作为前缀,则假定模块被相对于资源引用目录。 但是,在我的测试中,./ 和 ../ 似乎 不 工作,因为它与 Resources 相关!哇?!
    • 作为阻力最小的路径,我倾向于做与资源相关的所有事情,而不考虑平台。如果您不能使用相关要求,这是一个错误,您应该向 Appcelerator 报告,并提供一个很好的简短代码示例和特定平台/Ti Mob SDK -- wiki.appcelerator.org/display/guides/How+to+Submit+a+Bug+Report
    猜你喜欢
    • 2014-05-30
    • 2017-06-21
    • 2017-01-27
    • 1970-01-01
    • 2016-05-05
    • 2019-07-26
    • 2016-10-22
    • 2019-11-19
    • 1970-01-01
    相关资源
    最近更新 更多