Я полагаю, что вариант 1 не используется, потому что стало бы очень трудно управлять и сделать приложение трудным для портирования.
Что касается варианта 2, это теоретически улучшило бы скорость загрузки, потому что цельCDN - это обеспечение близких сетевых путей загрузки для клиента, например, пользователь в Индии будет загружать данные из CDN в Индии, а не загружать их с вашего сервера, например, в Канаде.При этом он также не является оптимальным, поскольку он опирается на несколько HTTP-запросов, если один из них завершается неудачей из-за подключения к Интернету, это влияет на все приложение.
Вариант 3, я считаю, лучше, потому что, как вы упомянули, он обеспечивает мобильностьприложения, а также хороший контроль версий.Еще одним ключевым преимуществом является то, что вы можете предварительно обработать весь код вашей библиотеки, используя Grunt / Webpack / etc.загружая все зависимости во время сборки, минимизируя, уродлив и объединяя весь библиотечный код в один файл, например vendor.js, таким образом уменьшая количество HTTP-запросов до одного и обслуживая этот код в наиболее сжатом формате.Также доступны дополнительные оптимизации, такие как gzip, размещение всего вашего vendor.js на CDN, кэширование, предварительная выборка и многие другие, я уверен.