Как потребовать внешние библиотеки в библиотеке закрытия Google?

У меня есть компонент закрытия Google, который использует внешнюю библиотеку (socket.io.js). Возможно ли требовать внешних библиотек, используя что-то вроде goog.require и goog.addDependency Например, что-то вроде этого:

deps.js:

goog.addDependency('path/to/MyComponent.js', ['MyComponent'], ['goog.events', 'https://cdn.socket.io/socket.io-1.3.5.js']);

МойКомпонент.js:

goog.provide('MyComponent');
goog.require('goog.events');
// I want something like goog.require('https://cdn.socket.io/socket.io-1.3.5.js');
MyComponent = function() {
    var socket = io('http://localhost');
};

person Ildar    schedule 24.07.2015    source источник


Ответы (2)


Попробуйте добавить externs для socket.io

:externs ["externs/socket.io-externs.js"]

Больше информации:

http://swannodette.github.io/2014/03/14/externs-got-you-down/ http://lukevanderhart.com/2011/09/30/using-javascript-and-clojurescript.html https://blog.8thlight.com/taryn-sauer/2014/07/31/clojurescript-faux-pas.html

person edbond    schedule 24.07.2015

socket.io.js несовместим с компилятором закрытия Google, поэтому вы не сможете сделать это, если не адаптируете socket.io.js для работы с закрытием Google, некоторые люди сделали это, например, для jquery, но это явно не жизнеспособное решение, и вы нужно делать это для каждой новой версии blablala...nightmare
Лучше всего использовать --externs, который сообщает компилятору замыкания, что это внешняя библиотека, и поэтому весь код, полученный из этой библиотеки, не будет переименован и будет оставаться «действительным» после компиляции

https://developers.google.com/closure/compiler/docs/api-tutorial3#howto-app

person mahieddine    schedule 24.07.2015