加载的脚本没有出现在全局上下文中
loaded script does not appear in global context
我正在尝试在我的一个模型中加载脚本:
attached(){
$.ajax({
type: 'GET',
url: '/lib/zxcvbn/dist/zxcvbn.js',
dataType: 'script',
cache: true
}).done(function(script, textStatus) {
console.log('loaded script');
});
}
触发了 done
回调,但是导出 zxcvbn
在全局上下文中不可用。
在普通 html 页面(即不是 aurelia)中完全相同的代码 运行 工作正常(zxcvbn 是 在全局上下文中可用)
我知道这不是在 aurelia 中加载外部 JS 文件的推荐方式,但是脚本非常大,并且只需要在我的应用程序中的一个位置。
zxcvbn 状态的文档:
zxcvbn detects and supports CommonJS (node, browserify) and AMD (RequireJS). In the absence of those, it adds a single function zxcvbn() to the global namespace.
我的 aurelia 应用正在使用 RequireJS;如果它没有加载到全局命名空间中,它加载到哪里,我如何引用它?
根据您提供的信息,zxcvbn
检测到存在 AMD 加载器 (RequireJS) 并调用 define
将自身注册为 AMD 模块。
由于页面上已经有 RequireJS,您可以将 jQuery 调用替换为对 require
的调用,并传递完整路径:
require(['/lib/zxcvbn/dist/zxcvbn.js'], function (zxcvbn) {
// Do something with zxcvbn ...
});
由于脚本将自身注册为 AMD 模块,因此参数 zxcvbn
将保存模块的值。
请注意,当您传递以正斜杠开头的路径时,RequireJS 按原样使用该路径:这会绕过您的 RequireJS 配置(例如 baseUrl
、paths
、map
未应用等),并且 RequireJS 不添加 .js
扩展名,因此它需要具有扩展名。
我正在尝试在我的一个模型中加载脚本:
attached(){
$.ajax({
type: 'GET',
url: '/lib/zxcvbn/dist/zxcvbn.js',
dataType: 'script',
cache: true
}).done(function(script, textStatus) {
console.log('loaded script');
});
}
触发了 done
回调,但是导出 zxcvbn
在全局上下文中不可用。
在普通 html 页面(即不是 aurelia)中完全相同的代码 运行 工作正常(zxcvbn 是 在全局上下文中可用)
我知道这不是在 aurelia 中加载外部 JS 文件的推荐方式,但是脚本非常大,并且只需要在我的应用程序中的一个位置。 zxcvbn 状态的文档:
zxcvbn detects and supports CommonJS (node, browserify) and AMD (RequireJS). In the absence of those, it adds a single function zxcvbn() to the global namespace.
我的 aurelia 应用正在使用 RequireJS;如果它没有加载到全局命名空间中,它加载到哪里,我如何引用它?
根据您提供的信息,zxcvbn
检测到存在 AMD 加载器 (RequireJS) 并调用 define
将自身注册为 AMD 模块。
由于页面上已经有 RequireJS,您可以将 jQuery 调用替换为对 require
的调用,并传递完整路径:
require(['/lib/zxcvbn/dist/zxcvbn.js'], function (zxcvbn) {
// Do something with zxcvbn ...
});
由于脚本将自身注册为 AMD 模块,因此参数 zxcvbn
将保存模块的值。
请注意,当您传递以正斜杠开头的路径时,RequireJS 按原样使用该路径:这会绕过您的 RequireJS 配置(例如 baseUrl
、paths
、map
未应用等),并且 RequireJS 不添加 .js
扩展名,因此它需要具有扩展名。