Worklight 6.1 和外部 dojolib,使用 AMD 加载自定义模块

Posted

技术标签:

【中文标题】Worklight 6.1 和外部 dojolib,使用 AMD 加载自定义模块【英文标题】:Worklight 6.1 and external dojolib, loading custom modules with AMD 【发布时间】:2014-05-06 15:46:01 【问题描述】:

我已将我们的项目从 506 迁移到 61。作为迁移的一部分,我将 dojo 代码切换为使用新的 dojo 服务器实现。

我现在遇到的问题是我使用 require(AMD) 加载的自定义 js 文件现在失败了,因为它正在寻找新的 dojo 服务器以获取 js 文件。有没有办法让dojo在应用程序js目录而不是dojolib项目中查找我的自定义js文件?

例如

require(["js/custom/controllers/categories"], function(cat)
     //do stuff
)

回来了

http://192.168.1.144:9988/dojo19Lib/projectName/appName/common/js/custom/controllers/categories.js 404 (Not Found) 

【问题讨论】:

Dojo 库服务器应该检查您的应用程序的 common 目录中除了 dojolib 项目之外的模块。你的模块在这个目录下吗?我使用 Dojo 类向导在 appName/common/js/custom 下创建了一个名为 controller 的模块。当我预览应用程序时,对服务器的请求是http://localhost:9988/dojo19Lib/projectName/appName/common/js/custom/controller.js,最终得到解决。 出于某种原因我不得不放入包:[ name: 'js', location: location.pathname.replace(/\/[^/]+$/, '') + ' /js' ]" 让它工作。我会拿出来再试一次 删除了我的dojo.js上的包并再次得到404错误::192.168.1.144:9988/dojo19Lib/projectName/appName/common/js/…404 (Not Found) 您正在使用具有非标准目录布局的 AMD 功能,因此您需要配置您的加载程序,以便它知道在哪里可以找到模块。这就是当您需要将 packages 属性添加到 dojoConfig 时它起作用的原因。详情在这里解释:dojotoolkit.org/reference-guide/1.9/loader/amd.html#the-amd-api @IdanAdar - 最终使用 dojo 包结构让 dojo 为我的自定义文件引用我的本地 js。 【参考方案1】:

我必须在 djconfig.js 文件夹中添加一个包映射。没有 100% 确定在最终构建中是否仍然需要它,因为似乎在最终构建中,dojo 目录被复制到公共根目录中。

 packages: [ 
      name: 'js', 
      location: location.pathname.replace(/\/[^/]+$/, '') + '/js' 
      ]" 

【讨论】:

以上是关于Worklight 6.1 和外部 dojolib,使用 AMD 加载自定义模块的主要内容,如果未能解决你的问题,请参考以下文章

IBM Worklight 6.1 - 富页面编辑器在进行更改后不刷新

Worklight 6.1 和 Cordova 3 插件

IBM Worklight 6.1 - 构建和部署不可用?

Worklight 6.1:如何将 EULA 添加到混合应用程序

Worklight 6.1 未连接到生产服务器

Worklight 6.1 - Android 推送通知到达时没有声音