2016-04-25 4 views
0

Рассмотрим следующий пример:Confused о требуют JS

var ExampleFunction = function(param1, param2) { 
    this.helloWorld = function() { 
     console.log('hello world' + param1 + param2); 
    } 
} 

Когда я что-то вроде:

require(['https://path/to/example_function.js'], function(exampleFunction){ 
    console.log(exampleFunction); 
}); 

Я вижу:

define(function() { return function(param1, param2) { 
    this.helloWorld = function() { 
     console.log('hello world' + param1 + param2); 
    } 
} }); 

Как придать зависимостей этого функционировать? Кажется, я не могу создать экземпляр функции, которую я сам вводить им по вызову.

Также при загрузке на месте я могу сделать:

var exampleFunction = new ExampleFunction(someParam, someOtherParam);

Но при загрузке дисков сервера я не могу.

Идеи?

+0

у вас есть пример_function.js, завернутый в define()? – Ozrix

+0

Нет, я не предполагаю, что для этого требуется выполнение js. Код, который я написал выше, является точным кодом на сервере. Требуется ли js обертывать его в определении? – TheWebs

ответ

2

Если вы используете скрипты, которые не в формате RequireJS (завернутые в определении()), вы должны Призонной шайба их в ваших требуют конфигураций, так что они могут быть загружены правильно:

require.config({ 
    paths: { 
     "exampleFunction": "https://path/to/example_function.js" 
    }, 

    shim: { 
     "exampleFunction":  { 
      exports: "exampleFunction" 
     } 
    } 
}); 

Затем используйте их как так

require(["exampleFunction"], function(exampleFunction){ 
    new exampleFunction(param1, param2); 
}); 

Еще по теме http://requirejs.org/docs/api.html#config-shim

+0

Могу ли я все-таки создать экземпляр ExampleFunction, чтобы передать в параметрах в стороне обратный вызов для запроса? – TheWebs

+0

вы должны быть в состоянии сделать «новый примерFunction()», если это то, что вы имеете в виду – Ozrix

+1

да, это спасибо. – TheWebs

1

Если вы хотите использовать внешний файл в качестве модуля, используйте paths config. Путь к файлу должен быть неограниченным. Вот an example from the docs:

requirejs.config({ 
    //To get timely, correct error triggers in IE, force a define/shim exports check. 
    enforceDefine: true, 
    paths: { 
     jquery: [ 
      'http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min', 
      //If the CDN location fails, load from this location 
      'lib/jquery' 
     ] 
    } 
}); 

//Later 
require(['jquery'], function ($) { 

}); 
+0

Я не следую, вы можете привести пример? – TheWebs

+0

Хорошо, как бы то ни было, если моя функция, как показано выше, принимает аргументы. Могу ли я создать экземпляр, чтобы передать эти аргументы? – TheWebs