微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

主要参数为requireJS和data-main

我想知道有没有办法使用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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐