2013-07-27 81 views
1

我正在瀏覽file upload plugin的javascript代碼。此代碼庫中定義的函數'define'在哪裏?

有一個piece of code用來檢查是否定義爲一個函數,並宣佈一些依賴我猜

(function (factory) { 
    'use strict'; 
    if (typeof define === 'function' && define.amd) { 
     // Register as an anonymous AMD module: 
     define([ 
      'jquery', 
      'jquery.ui.widget' 
     ], factory); 
    } else { 
     // Browser globals: 
     factory(window.jQuery); 
    } 
} 

的意見只是上面的代碼定義說是全球性的。但是我沒有在使用angularjs構建的應用程序中使用它。

我搜索了代碼庫的聲明define。 BUt找不到任何。我搜索了AMD,我可以再次看到定義爲used here

我的問題是'define'的定義在哪裏?

+0

閱讀http://addyosmani.com/writing-modular-js/和https://github.com/amdjs/amdjs-api/wiki/AMD – elclanrs

回答

2

define是一個功能,其功能由the Asynchronous Module Definition spec­if­i­cat­ion定義。 AMD只是一個規範;有多個實現,其中RequireJS就是其中之一。你可以看到RequireJS如何實現它,但是請記住RequireJS的define並不是唯一的define

+1

我會通過鏈接。還有一個問題。 https://github.com/blueimp/jQuery-File-Upload中定義的'define'在哪裏。據我探討,我無法在該代碼庫中找到requirejs。只有兩個插件。該代碼庫中的xdr-transport和postmessage.transport。 –

+0

@ R.A.J:我猜測它*沒有被定義 - 只存在於檢測你是否已經擁有像AMD這樣的RequireJS實現的代碼存在,並且如果你這樣做的話,它會自動運行。如果你已經沒有AMD實現,它什麼都不會做。 (它需要'if'的其他分支) – icktoofay

+0

謝謝。這就說得通了... :) –

相關問題