требуют загрузки сценариев js из cdn fail

Я новичок в RequireJS, и по какой-то причине я не могу загружать скрипты через CDN.

Мой код:

// site full url
var siteUrl = window.location.protocol+"//"+window.location.host + "/fresh/";

// requirejs config
requirejs.config({
    baseUrl: siteUrl + "assets/js/",
    paths: {
        "plugins": "plugins",
        "scripts": "scripts",
        "jquery": "https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min",
        "jquery-ui": "https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min",
        "bootstrap": "https://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/js/bootstrap.min",
    }
});

require(['jquery', 'jquery-ui', 'bootstrap', 'plugins/chosen'], function($, chosen){

/*
    loading global selectors and variables
*/ 

//chosen for select boxes
$(".chzn-select").chosen();

});

и jQuery не загружается. Я получаю следующие ошибки:

ReferenceError: jQuery is not defined
[Megszakítás ennél a hibánál]   

...h"):this.container.removeClass("chzn-container-single-nosearch")),e="",s=this.re...

chosen.js (1. sor)

ReferenceError: jQuery is not defined


TypeError: $(...).chosen is not a function
$(".chzn-select").chosen();

Может ли кто-нибудь указать, что я делаю неправильно?

P.S: Я определяю URL-адрес сайта, потому что я использую Laravel, без этого определения он включает сегменты URL в базовом URL-адресе.

4

3 ответы

$(document).ready({

   //all your jQuery code should go here
});

want to know why? see this

6
добавлено
Этот ответ не рассматривает использование requirejs вообще
добавлено автор Adi Darachi, источник
спасибо за ответ, по-прежнему та же ошибка
добавлено автор Side, источник

Брэндон прав, хотя я думаю, что прокладка не могла решить проблему

Из RequireJS Doc :

Не смешивайте загрузку CDN с конфигурацией прокладки в сборке. Пример сценария: вы загружаете jQuery из CDN, но используете конфигурацию shim, чтобы загрузить что-то вроде версии с базой, которая зависит от jQuery. Когда вы делаете сборку, обязательно встраивайте jQuery в встроенный файл и не загружайте его из CDN. В противном случае, Backbone будет встроен в встроенный файл, и он будет выполняться до загрузки загруженного CDNQ jQuery. Это связано с тем, что конфигурация прокладки просто задерживает загрузку файлов до загрузки зависимостей, но не выполняет автоматическую упаковку определения. После сборки зависимости уже встроены, конфигурация shim не может отсрочить выполнение кода define() 'd до конца. define() 'd модули работают с загруженным кодом CDN после сборки, потому что они должным образом обертывают свой источник в определении фабричной функции, которая не будет выполняться до загрузки зависимостей. Итак, урок: shim config - это мера стоп-зала для немодульного кода, устаревшего кода. define() 'd модули лучше.

Короче говоря, я считаю, что когда у вас есть модули, которые не требуются, и они зависят от некоторых других модулей (jQuery), вы не сможете использовать jQuery из CDN внутри RequireJS.

В этом случае я согласен с тем, что предложил Брэндон, требуя, чтобы они непосредственно на странице могли быть лучше.

4
добавлено

Это связано с тем, что для выбранной вами библиотеки вам необходимо определить jQuery. RequireJS не загружает зависимости для данного модуля в гарантированном порядке. Он загружает их параллельно. Это по соображениям производительности. Поэтому, если вы хотите сначала загрузить jQuery, вы можете:

  • требуется jQuery непосредственно на странице, поэтому он загружается до запуска любого из файлов AMD.

-или-

  • создайте оберточный модуль вокруг 'selected', который отображает jQuery как зависимость

Лично я выбираю первый выбор. Я не вижу никакой пользы от загрузки jQuery через AMD, так как каждая страница требует его, и от нее зависит много lib. Нет причин для ленивой загрузки того, что вам всегда нужно.

РЕДАКТИРОВАТЬ:

Похоже, вы также можете использовать функциональные возможности RequireJS для этого:

http://requirejs.org/docs/api.html#config-shim

Вам нужно будет определить прокладку для 'selected' и перечислить jQuery и любые другие библиотеки в качестве ее зависимостей.

2
добавлено
JavaScript Jobs — чат
JavaScript Jobs — чат
8 336 участник(ов)

JavaScript Jobs — чат для поиска работы и людей Правила оформления: https://teletype.in/@telegram-ru/r1WQe5F1m См. также: @mobile_jobs, @devops_jobs, @nodejs_jobs, @react_js, @angular_ru, @js_ru

JavaScript.ru
JavaScript.ru
7 932 участник(ов)

Сообщество сайта JavaScript.ru в Slack.

pro.js
pro.js
4 675 участник(ов)

Про JavaScript и NodeJS Invite: https://t.me/joinchat/Be4rsT5Rsgq30DHutjxXgA Правила: http://telegra.ph/ru-chat-rules-06-19 Вакансии только с ЗП, не чаще раза в неделю.

Верстка сайтов HTML/CSS/JS/PHP
Верстка сайтов HTML/CSS/JS/PHP
3 439 участник(ов)

Правила группы: напишите !rules в чате. Группа Вк: vk.com/web_structure Freelancer: @web_fl Веб Дизайн: @dev_design Маркетолог: @topmarkening Автор: @M_Boroda

JavaScript — русскоговорящее сообщество
JavaScript — русскоговорящее сообщество
3 269 участник(ов)

Рекомендуем сразу отключить уведомления Правила: https://rudevs.network/ByaMH6un7 См. также: @js_noobs_ru, @nodejs_ru, @typescript_ru, @react_js, @electron_ru Вакансии и поиск работы: @javascript_jobs

JavaScript Noobs — сообщество новичков
JavaScript Noobs — сообщество новичков
2 484 участник(ов)

Чат для новичков

javascript_ru
javascript_ru
915 участник(ов)

Сообщество любителей самого популярного языка программирования в мире. Чат основан в 2009 году. Логи: https://goo.gl/9EOeM7 Поддержка бота: @chat_linker (ссылка на репу внутри) Вам будут интересны @frontend_ru и @css_ru

jsChat
jsChat
603 участник(ов)

Чат посвященный программированию на языке javaScript Перед отправкой ссылки на Ваш контент посоветуйтесь с админом Все ссылки удаляются ботом автоматически

JavaScript for Zombies Chat
JavaScript for Zombies Chat
492 участник(ов)

Чат про JavaScript для настоящих zombie! Вход строго по приглашениям! Ссылка для строгих приглашений: https://t.me/joinchat/AAMBHz3Uyr0tuZ7VaB029g

All That JS
All That JS
417 участник(ов)

JS на русском