2013-03-14 50 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。

相關問題