Javascript RequireJS优化器在没有一个“;附件js“;以及依赖于内联模块的模块?
在RequireJS示例中,它显示了您可以从脚本标记引用app.js(或任何您想要调用的启动程序文件),如下所示:Javascript RequireJS优化器在没有一个“;附件js“;以及依赖于内联模块的模块?,javascript,requirejs,Javascript,Requirejs,在RequireJS示例中,它显示了您可以从脚本标记引用app.js(或任何您想要调用的启动程序文件),如下所示: <script data-main="js/app.js" src="js/require.js"></script> 由于我无法控制的原因,我不能这样做。模板层中生成的几个动态变量需要保留。因此,我创建了一个内联的'config'模块,其他模块可以读取 <script type="text/javascript"> def
<script data-main="js/app.js" src="js/require.js"></script>
由于我无法控制的原因,我不能这样做。模板层中生成的几个动态变量需要保留。因此,我创建了一个内联的'config'模块,其他模块可以读取
<script type="text/javascript">
define('config', function() {
return {
markup_id: {
"content": "search",
"page": "index",
"media": "mobile"
},
page_context: {
"siteconfig": {
"mobile_video_player_id": /* */,
"mobile_video_player_key": /* */,
"mobile_ad_site": /* */,
"omniture_mobile_env": /* */,
"searchserver": /* */,
},
"omniture": {
"gn": /* */,
}
}
}
});
</script>
定义('config',函数(){
返回{
标记标识:{
“内容”:“搜索”,
“页面”:“索引”,
“媒体”:“移动”
},
页面上下文:{
“站点配置”:{
“移动视频播放器id”:/**/,
“手机视频播放器按键”:/**/,
“移动广告网站”:/**,
“omniture_mobile_env”:/***/,
“searchserver”:/***/,,
},
“omniture”:{
“gn”:/**/,
}
}
}
});
我所做的是为每个模板放置一个内联require.config。例如(删除了特定路径信息):
/*此代码位于脚本标记内的模板页上*/
require.config({
baseUrl://**,
路径:{
“jquery”:/**/,
“jquery mobilead”:/**/,
“jquery photogalleryswipe”:/**/
},
/*强制执行jQuery插件的排序-这需要jQuery*/
垫片:{
“jquery mobilead”:{
部门:['jquery'],
导出:“jQuery.fn.mobileAd”
},
“jquery photogalleryswipe”:{
部门:['jquery'],
导出:“jQuery.fn.photoGallerySwipe”
},
“画廊”:{
deps:['jquery-photogalleryswipe','jquery-mobilead']
}
},
urlArgs:'buildlife=@buildlife@'
});
需要(['jquery','site','gallery','jquery photogalleryswipe','jquery mobilead'],函数($,site,gallery){
//当所有依赖项
//上面列出的已加载。请注意,此函数可能会
//在加载页面之前调用。
//此回调是可选的。
/*初始化代码*/
$(文档).ready(函数(){
/*站点范围的代码-调用构造函数进行初始化*/
site.init();
/*主页包含对函数的引用-执行函数*/
gallery.initGallery();
});
}
);
我假设优化器无法优化模板中的代码
但是根据RequireJS API文档,我有模块JS文件。/模块/gallery.js /模块/channel.js /模块/site.js /*等等*/
这些模块确实依赖于其他模块,但这些模块依赖于“配置”模块,该模块与模板内联定义。如果我对这些文件运行优化器,优化器会正常工作吗,因为其中一个模块config是模板?我想我通过阅读解决了自己的问题 我已经将模板变量重新构造为require全局对象,并在require.js之前声明了它。现在,模板仍然可以生成这些值,但由于require.config和require代码可以放入外部JS文件中,因此优化器现在应该能够看到这些文件。我还没有试过运行优化器
<script>
/* This script block is in the template */
var require = {
config: {
markup_id: {
"content": "search",
"page": "index",
"media": "mobile"
},
page_context: {
"siteconfig": {
"mobile_video_player_id": /* */,
"mobile_video_player_key": /* */,
"mobile_ad_site": /* */,
"omniture_mobile_env": /* */,
"searchserver": /* */,
},
"omniture": {
"gn": /* */,
}
}
};
</script>
<script data-main="/m/j/main-search" src="/m/j/require.js"></script>
/*此脚本块位于模板中*/
var require={
配置:{
标记标识:{
“内容”:“搜索”,
“页面”:“索引”,
“媒体”:“移动”
},
页面上下文:{
“站点配置”:{
“移动视频播放器id”:/**/,
“手机视频播放器按键”:/**/,
“移动广告网站”:/**,
“omniture_mobile_env”:/***/,
“searchserver”:/***/,,
},
“omniture”:{
“gn”:/**/,
}
}
};
<script>
/* This script block is in the template */
var require = {
config: {
markup_id: {
"content": "search",
"page": "index",
"media": "mobile"
},
page_context: {
"siteconfig": {
"mobile_video_player_id": /* */,
"mobile_video_player_key": /* */,
"mobile_ad_site": /* */,
"omniture_mobile_env": /* */,
"searchserver": /* */,
},
"omniture": {
"gn": /* */,
}
}
};
</script>
<script data-main="/m/j/main-search" src="/m/j/require.js"></script>