Поместить теги src скрипта вверху тела против тегов src внизу тела

C # 7 + Solution заключается в использовании неявного синтаксиса кортежа.

    private async Task<(bool IsSuccess, IActionResult Result)> TryLogin(OpenIdConnectRequest request)
    { 
        return (true, BadRequest(new OpenIdErrorResponse
        {
            Error = OpenIdConnectConstants.Errors.AccessDenied,
            ErrorDescription = "Access token provided is not valid."
        }));
    }

Результат возврата использует имена свойств, определенные сигнатурой метода. например:

var foo = await TryLogin(request);
if (foo.IsSuccess)
     return foo.Result;

1
задан Jennifer Zhou 16 January 2019 в 03:42
поделиться

3 ответа

Браузер «читает» ваш html сверху вниз, и когда он встречает javascript или css, он останавливает рендеринг, пока не обработает его полностью. Вот почему во многих случаях предлагается размещать скрипты внизу. Обычно сценарий не может выполнять свою «работу» до тех пор, пока вся страница не будет отрисована, так почему же блокировать первоначальный рендеринг?

При этом, это лишь косвенная причина поведения, которое вы видите. Общий ответ на ваш вопрос заключается в том, что javascript также «читается» сверху вниз, поэтому любая переменная, не объявленная до ее использования, не определена (существует концепция под названием «Подъем», которая также влияет на это, но не актуальность на данный момент). В вашем случае, в частности, объект angular еще не объявлен (если бы вы открыли консольные инструменты, вы бы увидели это как ошибку), и поэтому вы не можете вызвать ни один из методов, связанных с этим объектом. angular объявлено в angular.js, который включен после вашего сценария в первом примере и (правильно) до во втором.

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

0
ответ дан Leroy Stav 16 January 2019 в 03:42
поделиться

Очень просто. Все угловые функции, обработчики, компоненты & amp; директивы инициализируются в скрипте angulatjs. Когда вы загрузите angularjs внизу. Браузер загрузит скрипт после загрузки HTML. Так что в начале нет angular, поэтому он не будет захватывать {{value}}, так что это просто обычный текст для браузера, Браузер покажет {{value}} напрямую.

При загрузке сверху. Угловой будет загружен. Так что угловой умеет обращаться {{value}}. Так что это будет связывать значение для {{value}}.

0
ответ дан Banujan Balendrakumar 16 January 2019 в 03:42
поделиться

Поместите свой скрипт в заголовок.

Эта рекомендация помещать его непосредственно перед закрывающим тегом, чтобы браузер сначала загружал содержимое страницы, а затем пользователь мог видеть что-то во время загрузки javascript. Если тег script находится вверху, то пользователь будет немного дольше смотреть на белую страницу, пока javascript не завершит загрузку, а затем контент начнет рендериться.

В вашем случае кажется, что вы не хотите, чтобы пользователь видел какой-либо контент перед запуском javascript ({{value}} raw html), поэтому имеет смысл полностью игнорировать эту рекомендацию.

0
ответ дан Hugo Silva 16 January 2019 в 03:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: