2

我刚刚使用 Require.js 让 Foundation 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:有史以来最复杂的标题。

4

2 回答 2

2

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

您发布的 Foundation 4 代码为支持proto属性的浏览器加载 Zepto,为其他浏览器加载 jQuery(根据此页面基本上只有 IE )。

如果您乐于向所有人推出 Zepto(也许您不需要支持 IE),您可以只更新您从 require 配置中发布的代码以指向 Zepto 而不是 jQuery。或者,您可以将 jQuery 推送给所有人。当我查看 Zepto 时,无论是简短的,它似乎并没有真正提供超过 jQuery 的全部功能(请参阅此处的性能测试)。

如果你想在你的 require 配置中保留 Foundation 4 逻辑,这个 require.js github 问题页面上有一个示例,它演示了如何有条件地加载文件。

于 2013-03-15T00:01:39.667 回答
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”传递给 require({...});,而是传递“libdom”,这将是 Zepto 或 jQuery,具体取决于 isModern 的结果。

于 2013-04-24T19:14:27.550 回答