我刚刚使用Require.js让基础4与Yeoman一起工作。我在Require.js中用于main.js的要点是:https://gist.github.com/lkbgift/5164200
Foundation 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:有史以来最令人费解的头衔。
答案 0 :(得分:2)
如果您正在使用require,我认为使用require加载所有脚本可能是有意义的,只是为了保持一致性。
您发布的Foundation 4代码为支持 proto 属性的浏览器加载了Zepto,为其他人提供了jQuery(根据this page只支持IE)。
如果您乐意将Zepto推送给所有人(可能您不需要支持IE),您只需将您从require配置发布的代码更新为指向Zepto而不是jQuery。或者你可以把jQuery推送给每个人。当我看到Zepto时,简而言之,它似乎并没有真正提供jQuery(参见性能测试here)。
如果要在require配置中保留Foundation 4逻辑,可以在this require.js github issues page上找到一个示例,演示如何有条件地加载文件。
答案 1 :(得分:2)
在您正在配置require的main.js函数中,创建一个名为isModern的新函数或类似的函数。让此函数返回 proto 评估(bool)的结果。像这样:
function isModern() { return ( __proto__ in {} ); }
在你的路径配置中,将'jquery'路径配置更改为'libdom'或类似的东西。像这样配置libdom:
paths: {
'libdom': (isModern()) ? 'your path to zepto' : ' your path to jquery'
},
... ...
现在,不是将'jquery'传递给require({...});而是传递'libdom',它将是Zepto或jQuery,具体取决于isModern的结果。