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 - 富页面编辑器在进行更改后不刷新