【发布时间】:2014-03-17 12:32:57
【问题描述】:
我有一个项目,其中前端是使用 dojo 1.3.1 开发的,并且有大约 100 多个自定义小部件和 dojo 文件。
我的任务是将所有代码从 Dojo 1.3.1 迁移到 Dojo 1.9.3(最新版本)。
我尝试用 1.9.3 替换 Dojo 1.3.1 源,但一切都中断了,我在 UI 上看不到任何东西。显然这是因为两个版本之间的主要语法差异,特别是定义模块和包含模块的语法变化。
这是我必须更改所有 100 多个文件中的语法并检查功能 + UI 是否正常工作的唯一方法吗?或者可能有另一个更好的解决方法?
编辑:
我使用 dojo-amd-converter 将自定义模块从 pre-AMD 转换为 AMD。有一个文件转换如下:
旧代码:
dojo.provide("myModule.objects");
dojo.require("dojo._base");
myModule.objects.psCookie = (
function () {
// Default Values
var defaultArgs = {
ident: "",
email: ""
}
return function(args) {
return myModule.objects.cleanArgs(args, defaultArgs);
}
}
)();
转换后的代码:
define([
"dojo/_base",
"dojo/_base/lang"
], function (_base, lang) {
myModule.objects.psCookie = (
function () {
// Default Values
var defaultArgs = {
ident: "",
email: ""
}
return function(args) {
return myModule.objects.cleanArgs(args, defaultArgs);
}
}
)();
现在,我在转换后面临几个问题:
GET http://localhost:8080/td/js/dojo-release-1.9.3/dojo/_base.js 404 (Not Found)
Uncaught TypeError: Cannot set property 'psCookie' of undefined /td/js/myModule/objects.js:6
知道如何解决这些问题吗?
【问题讨论】:
-
虽然 Dojo 1.7+ 支持 AMD,但它也继续支持旧的 API,所以事情不应该完全中断。如果没有一些您遇到的错误类型的具体示例,这个问题就太宽泛了,无法解决。您可能需要查看每个 Dojo 版本的 release notes 以获取线索。
-
我同意@KenFranqueiro。如果没有代码和/或错误,我们根本无法帮助您。
-
@KenFranqueiro 我已经更新了我的问题,请看看你能不能帮我解决这个问题。
标签: javascript dojo migration