2015-12-14 89 views
1

我正在嘗試處理scipt的AMD方式,並且我的選擇落在了requirejs上。在這個項目中我使用MDL(前端框架;對於那些還沒有聽說過誰把它看作引導3)應包括:如何使用requirejs包含第三方腳本

<link rel="stylesheet" href="/bower_components/material-design-lite/material.min.css"> 
<script src="/bower_components/material-design-lite/material.min.js"></script> 
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> 

我不感興趣,JS API,這框架正在提供(如果它提供了任何),我只需要這個腳本使UI在我將framwerk特定的類附加到元素時正常工作。

根據requirejs哲學,我只需要一個腳本文件包含在我的頁面上的script標記 - 入口點。我明白在那個主要腳本中我需要依賴關係。而如果是說的jQuery或下劃線即我其實需要庫和我的代碼依賴於,我會寫這樣的:

require(
    ['jquery'], 
    function($) { 
     $('body').append(...); 
    } 
); 

但是我怎麼滾動,如果它不是一個實際的依賴,但我仍然需要它將被加載到我的頁面中,在這種情況下,我需要先加載它。

我該怎麼辦?我的猜測是我從我的head中刪除script標記,並在我的入口點腳本的方括號中指定它(正如我爲上面代碼段中的jquery所做的那樣),但不要使用它。這是對的嗎?

+0

也許這有助於:http:// stackoverflow。com/questions/15592308/using-require-js-with-3rd-party-javascript-libraries – brandelizer

+1

@brandelizer謝謝你,但是你賦予地址的鏈接不同的問題。 – dKab

回答

0

但是,如果它不是一個實際的依賴關係,但我仍然需要將它加載到我的頁面中,並且在這種特殊情況下,我需要先加載它。

RequireJS只保證模塊加載的相對順序。如果一個模塊必須首先被加載,那麼這個依賴關係鏈必須是直接或間接依賴它的一切。 RequireJS不提供一種方法來說「在所有其他情況之前加載它」。你只能通過依賴來獲得這個效果。 (有時候人們認爲deps配置選項可以保證某些模塊會先載入,但不會,或者他們認爲requiredefine調用中依賴關係的順序設置了加載超出的順序依賴關係設置了什麼如果AB沒有自己的依賴關係,然後require(['A', 'B'], ...require['B', 'A'], ...都是免費加載任何順序模塊。)

我該怎麼辦?我的猜測是我從我的頭上刪除腳本標記,並在我的入口點腳本中的方括號中指定它(正如我爲上面代碼片段中的jquery所做的那樣),但不要使用它。這是對的嗎?

理論上這樣做沒有問題。我說「理論上」,因爲我不使用MDL,所以我不知道MDL是否有任何需要阻止它工作。您將MDL與Bootstrap 3進行了比較。您所描述的是我如何使用RequireJS加載Bootstrap。我傾向於使用CommonJS的習慣用法,這樣需要引導模塊是這個樣子:

define(function (require, exports, module) { 
'use strict'; 

require("bootstrap"); 

有沒有必要做這樣var bootstrap = require("bootstrap");東西,因爲該值將undefined無論如何,因爲引導的JS代碼,自行安裝的jQuery插件。

相關問題