Javascript 将require config移动到外部文件
现在在我的标题中,我有以下代码:Javascript 将require config移动到外部文件,javascript,requirejs,Javascript,Requirejs,现在在我的标题中,我有以下代码: <script src="/js/libs/requirejs/requirejs.min.js"></script> <script> require.config({ baseUrl: "/js/libs", paths: { jquery: "jquery/jquery-1.11.1.min", jqueryUi: "jquery-u
<script src="/js/libs/requirejs/requirejs.min.js"></script>
<script>
require.config({
baseUrl: "/js/libs",
paths: {
jquery: "jquery/jquery-1.11.1.min",
jqueryUi: "jquery-ui/mapa/js/jquery-ui-1.10.4.custom.min",
portal: "../dev/portal"
},
shim: {
"jqueryUi": {
export:"ui" ,
deps: ['jquery']
}
}
});
require( ["portal"], function(portal) {
portal.config={'var': 'value'};
portal.init();
}
);
</script>
require.config({
baseUrl:“/js/libs”,
路径:{
jquery:“jquery/jquery-1.11.1.min”,
jqueryUi:jqueryUi/mapa/js/jquery-ui-1.10.4.custom.min,
门户:“../dev/portal”
},
垫片:{
“jqueryUi”:{
导出:“ui”,
deps:['jquery']
}
}
});
要求([“门户”],功能(门户){
config={'var':'value'};
init();
}
);
我希望使用data main attr以正确的方式执行此操作:
<script data-main="/js/build/req-init" src="/js/libs/requirejs/requirejs.min.js"></script>
<script>
require( ["portal"], function(portal) {
portal.config={'var': 'value'};
portal.init();
}
);
</script>
要求([“门户”],功能(门户){
config={'var':'value'};
init();
}
);
并将所有require.config
移动到该文件(/js/build/req init.js)
问题是它在根目录中搜索potral.js
文件,因为数据主文件尚未加载,并且不知道路径。如何延迟执行require([“门户”])
?
我需要在HTML中使用
portal.init()
,因为portal.config
-变量将使用php定义。我在html5应用程序中应用了不同的模式,以将requireJS config移动到外部文件
目录结构
{webroot}/
html/
js/
apps/
conf.js
main.js
libs/
jquery-1.11.1.min.js
...
。/js/app/conf.js
var require = {
baseUrl: "../js",
paths: {
app: "../js/app",
libs: "../js/libs",
jquery: "libs/jquery/jquery-1.11.1.min",
jqueryUi: "libs/jquery-ui/mapa/js/jquery-ui-1.10.4.custom.min",
portal: "../dev/portal"
},
shim: {
"jqueryUi": {
export:"ui" ,
deps: ['jquery']
}
}
});
require( ["portal"], function(portal) {
portal.config={'var': 'value'};
portal.init();
}
);
。/js/app/main.js
var require = {
baseUrl: "../js",
paths: {
app: "../js/app",
libs: "../js/libs",
jquery: "libs/jquery/jquery-1.11.1.min",
jqueryUi: "libs/jquery-ui/mapa/js/jquery-ui-1.10.4.custom.min",
portal: "../dev/portal"
},
shim: {
"jqueryUi": {
export:"ui" ,
deps: ['jquery']
}
}
});
require( ["portal"], function(portal) {
portal.config={'var': 'value'};
portal.init();
}
);
内部html
<scrip src="/js/app/conf.js"></script>
<script data-main="app/main" src="/js/libs/requirejs/requirejs.min.js"></script>
我已经在我们的html5应用程序中应用了一种不同的模式,将requireJS配置移动到外部文件 目录结构
{webroot}/
html/
js/
apps/
conf.js
main.js
libs/
jquery-1.11.1.min.js
...
。/js/app/conf.js
var require = {
baseUrl: "../js",
paths: {
app: "../js/app",
libs: "../js/libs",
jquery: "libs/jquery/jquery-1.11.1.min",
jqueryUi: "libs/jquery-ui/mapa/js/jquery-ui-1.10.4.custom.min",
portal: "../dev/portal"
},
shim: {
"jqueryUi": {
export:"ui" ,
deps: ['jquery']
}
}
});
require( ["portal"], function(portal) {
portal.config={'var': 'value'};
portal.init();
}
);
。/js/app/main.js
var require = {
baseUrl: "../js",
paths: {
app: "../js/app",
libs: "../js/libs",
jquery: "libs/jquery/jquery-1.11.1.min",
jqueryUi: "libs/jquery-ui/mapa/js/jquery-ui-1.10.4.custom.min",
portal: "../dev/portal"
},
shim: {
"jqueryUi": {
export:"ui" ,
deps: ['jquery']
}
}
});
require( ["portal"], function(portal) {
portal.config={'var': 'value'};
portal.init();
}
);
内部html
<scrip src="/js/app/conf.js"></script>
<script data-main="app/main" src="/js/libs/requirejs/requirejs.min.js"></script>
诀窍是以稍微不同的格式使用配置,并在主脚本之前加载它。这是在所有情况下加载“外部”配置真正可靠的唯一方法: config.js:
var require = {
baseUrl: "/js/libs",
paths: {
jquery: "jquery/jquery-1.11.1.min",
jqueryUi: "jquery-ui/mapa/js/jquery-ui-1.10.4.custom.min",
portal: "../dev/portal"
},
shim: {
"jqueryUi": {
export:"ui" ,
deps: ['jquery']
}
}
};
req-init.js
require( ["portal"], function(portal) {
portal.config={'var': 'value'};
portal.init();
});
html:
为了进一步优化(因为我看到您有一个构建文件夹),我将把config.js与requirejs.min.js(在require之前配置)连接起来,以丢失一个请求。诀窍是以稍微不同的格式使用您的配置,并在主脚本之前加载它。这是在所有情况下加载“外部”配置真正可靠的唯一方法: config.js:
var require = {
baseUrl: "/js/libs",
paths: {
jquery: "jquery/jquery-1.11.1.min",
jqueryUi: "jquery-ui/mapa/js/jquery-ui-1.10.4.custom.min",
portal: "../dev/portal"
},
shim: {
"jqueryUi": {
export:"ui" ,
deps: ['jquery']
}
}
};
req-init.js
require( ["portal"], function(portal) {
portal.config={'var': 'value'};
portal.init();
});
html:
为了进一步优化(因为我看到您有一个构建文件夹),我会将config.js与requirejs.min.js(在require之前配置)连接起来,以丢失一个请求如果conf.js中已经使用require,然后加载requirejs.min.js,那么这是如何工作的呢?对不起,我在conf.js中调用require(conf)时出错了。我已经修好了。根据文档(配置选项:),您可以在require.js加载之前将config对象定义为全局变量require。哦,好吧,这一点我们并不同意:)如果require已经在conf.js中使用,然后requirejs.min.js被加载,那么这如何工作?对不起,我在conf.js中调用require(conf)时出错了。我已经修好了。根据文档(配置选项:),您可以在加载require.js之前将config对象定义为全局变量require。哦,好吧,我们不同意这个:)