R.js不能正确编译模糊脚本
r.js not compiling shimmed scripts properly
我能够成功地通过Grunt的需求任务编译我的JS模块,但我得到未定义的任何shim脚本。这是我的配置
requirejs.config({
"baseUrl": "../../../components/",
"paths": {
"less": "less.js/dist/less-1.3.3",
"datepicker": "jquery-ui/ui/jquery.ui.datepicker",
"jquery": "jquery/jquery",
"jqueryui": "jquery-ui/ui/jquery-ui",
"spectrum": "spectrum/spectrum",
"class": "class/class",
"underscore": "underscore-amd/underscore",
"d3": "d3/d3",
"nv": "nvd3/nv.d3",
"dataTables": "datatables/dataTables"
},
shim: {
less: {
exports: "less"
},
jqueryui: {
exports: "jqueryui"
},
spectrum: {
exports: "spectrum"
},
class:{
deps: [ 'jquery'],
exports: "class"
}
}
})
这是我的需求配置从我的Gruntfile:
requirejs: {
dist: {
options: {
mainConfigFile: 'src/scripts/main.js',
out: '<%= yeoman.dist %>/scripts/main.js',
paths:{
"main" : "../final/src/scripts/main"
},
include:['main'],
preserveLicenseComments: false,
useStrict: true,
wrap: true
}
}
}
现在当我运行grunt requirejs:dist
时,它编译得很好,并且确实包含了我的shimmed文件。但是,每当我尝试运行编译后的JS时,对任何加载脚本的访问都是未定义的。
不确定您所说的"对我的任何闪烁脚本的访问是未定义的"是什么意思。您需要确保以正确的顺序包含隐藏脚本。此外,您可以尝试为该脚本定义假模块。在你构建JS的配置中添加:
onBuildRead: function (moduleName, path, contents) {
if (moduleNam === 'spectrum'){
contents += '; define(' + moduleName + ', function(){ return window.spectrum; });';
}
return contents;
}
你需要理解,导出是做什么的。加载脚本后,它将在全局命名空间中查找该变量。我不认为有"jqueryui"命名空间。所以它总是未定义的,因为它必须在jQuery之后加载,它只是扩展了jQuery,所以模块不能返回任何有用的东西。
相关文章:
- 模糊事件的Javascript测试
- 将事件聚焦/模糊在可编辑内容的元素上
- AngularJS指令出错-无法读取属性'编译'的未定义
- 如何使用ViewCompiler手动编译DOM的一部分
- 预编译的车把模板使文件大小加倍
- Mocha react本地路由器编译错误
- Babel编译错误:找不到模块核心js/library/fn/get迭代器
- 如何像模糊图像一样模糊iframe
- 在编译阶段后创建新的DOM树,或者继续使用原始修改的DOM
- 如何在Windows中将Javascript文件编译成二进制文件
- 奇怪的日期选择器行为,与模糊有关
- 浏览器是否持久缓存脚本元素的编译版本
- GWT:有没有一种方法可以修改GWT在编译中使用的Cast.java文件
- 使用脚本#编译代码(独立)
- 是否可以使用有角度的HTML文档进行$编译
- 角度ui选择标记模糊时丢失文本输入
- 使用Gulp手柄部分编译为单个HTML文件
- AngularJS:带有HTML和angular表达式的指令;编译”;具有外部范围的内容
- Javascript赢得'不能在IE上编译,但可以在Chrome上运行
- R.js不能正确编译模糊脚本