2013-03-14 56 views
2

我刚刚获得Foundation 4与Yeoman一起使用Require.js。我用于Require.js main.js的要点是在这里:https://gist.github.com/lkbgift/5164200如何使用Requirement中的Foundation 4中的Zeptos和Yeoman中的Grunt

基金会4的index.html的调用的Zepto这个脚本:

<script> 
    document.write('<script src=' + 
    ('__proto__' in {} ? 'js/vendor/zepto' : 'js/vendor/jquery') + 
    '.js><\/script>') 
</script> 

在require.js,你声明jQuery的路径好像有:

paths: { 
    jquery: '../components/jquery/jquery' 
}, 

集成zepto代码的正确方法是什么?

ps:有史以来最令人费解的标题。

回答

2

如果您使用的是require,我认为使用require加载所有脚本可能是有意义的,如果只是为了一致性。

您发布的Foundation 4代码加载了Zepto浏览器,支持原型属性和其他人的jQuery(基本上只有根据this page的IE)。

如果你很乐意将Zepto推送给所有人(也许你不需要支持IE),那么你可以更新你从需要配置中发布的代码,指向Zepto而不是jQuery。或者,你可以推出jQuery给大家。当我看着Zepto时,都是简单的,它似乎并没有提供很多关于jQuery的内容(参见性能测试here)。

如果你想在你的需求配置中保留Foundation 4的逻辑,在this require.js github issues page上有一个例子,它演示了如何有条件地加载文件。

2

在您要配置require的main.js函数中,创建一个名为isModern的新函数或类似的东西。有此函数返回原型评估(布尔)的结果。就像这样:

function isModern() { return (__proto__ in {}); } 

在你的路径配置中,将'jquery'路径配置更改为'libdom'或类似的东西。配置libdom这样的:

paths: { 
    'libdom': (isModern()) ? 'your path to zepto' : ' your path to jquery' 
}, 

... ...

现在,而不是通过 'jQuery的' 到要求({...});,你会通过 'libdom',这根据isModern的结果,它们可能是Zepto或jQuery。

相关问题