我想知道有没有办法使用data-main参数将参数传递给requireJS.
<script data-main="Main" src="lib/require/require.js"></script>
我可以介绍全局变量:
<script> var mainId = "Main"; var mainTarget = "body"; </script> <script data-main="Main" src="lib/require/require.js"></script>
但我想知道是否有更干净的方式来做到这一点.谢谢!
编辑:
西蒙,这是一个伟大的计划,我认为mainTarget的价值.
require([ 'plugins/load!./'+mainId+'.htm','plugins/load!./'+mainId+'.css' ],function(html,css){ var Main = function(){ this.__proto__ = mainTarget; } new Main(); }
如何将它应用于mainId?
解决方法
实现此目的的一个方法是创建一个全局或通用模块,并将其用作依赖关系:
global.js
define({ foo: 'test',bar: 'red' });
使用全局:
require(['global'],function(global) { console.log(global.foo) // 'test' });
这依赖于保存在JS文件中的全局对象属性.
将数据从服务器端输出到HTML页面中的JS对象也是一种常见的模式.要做到这一点,只需给你的模块一个名字.
<head> <script> define('global',{ mainId: 'Main',mainTarget: 'body' }) </script> </head>
main.js
require(['global'],function(global) { console.log(global.mainId) // 'Main' });
如果定义一个需要全局属性的模块,只需将全局模块设置为依赖关系即可.
您还可以使用优先级配置选项来确保在其他任何事情之前加载全局模块 – http://requirejs.org/docs/api.html#config