2014-10-07 4 views
2

Я понимаю, что определение используется для определения модуля, а функция - анонимная функция, но что аргумент «требует» в функции hold ?Что именно определяет (function (require) {...}) в JavaScript

Если я напишу что-нибудь в define(function(require){...}), когда это будет называться? Как позвонить его анонимной функции?

Пожалуйста, помогите, я новичок в продвинутых JS.

+2

Вы пытались узнать больше о том, как это работает в документации RequireJS? –

+1

Я, я читал о RequireJS, но там они используют require() как функцию, а не как аргумент. Я понимаю, что когда он передан как аргумент 'function (require)', то что действительно передается в require? – Pepper

+1

Возможный дубликат [Что определяется в Javascript (кроме очевидного)] (http://stackoverflow.com/questions/10331305/what-is-define-used-for-in-javascript-aside-from- the-visible) –

ответ

2

Это часть requireJs api, это не ваниль JS.

Вы можете увидеть все документы здесь: http://requirejs.org/docs/api.html#define

«требуют» в приведенном выше примере, на самом деле «требует» кода, эта модель позволяет требовать JS и, чем только при загрузке JS завершена, загрузите еще одну зависимость, но сделайте это в объеме ранее требуемого файла.

В целом этот шаблон позволяет разбить приложение на несколько небольших JS-файлов и загрузить их по-разному, чтобы ускорить процесс загрузки веб-страниц.

Некоторые утверждают, что это все будет менее необходимо, если SPDY и HTTP2 будут использоваться более широко. В любом случае, это, безусловно, способствует лучшей модульности в разработке кода.

+0

'define (function (require) { var angular = require ('angleular'); var html = require ('text! ./ productPage.html'); var css = require ('css! ./productPage '); var productDesc = require (' ./../ productDesc/productDesc '); }); ' Это код, здесь, в' function (require) ', это то же самое, что' require (some text) '? И когда будет вызываться эта конкретная функция со страницы html? – Pepper

+0

Это не то же самое. требование является обратным вызовом, поэтому вызывается только тогда, когда внутренняя реализация require готова называть это. если вы только что это сделали, требуйте (некоторый текст), это означает, что метод вызывается немедленно, код requireJs может быть или не быть готовым к вызову в этой точке. –

+0

Я попробовал выполнить печать в console.log, я получил следующее: 'function localRequire (deps, callback, errback) { var id, map, requireMod; if (options.enableBuildCallback && callback && isFunction (callback)) { callback .__ requireJsBuild = true; } если (TypeOf DEPS === 'строка') { если (isFunction (обратный вызов)) {// Недопустимый вызов возврата } ' – Pepper