Минималистичный пример двунаправленной связи -javascript ядра IPython

Моя цель — написать интерактивную программу просмотра переменных для IPython, т. е. которая позволяет видеть, скажем, вложенные словари/списки в виде дерева и детализировать (немного подобно console.log в Javascript ).

Я потратил много времени, пытаясь извлечь минималистичный код из примера прямого просмотра в IPython, но до сих пор не могу понять, как все это работает. Мой Python в порядке, но мой опыт работы с jQuery весьма ограничен.

Итак, я разобрал directview.js до следующего

container.show();
var widget = $('<div/>')
element.append(widget);
var output = $('<div></div>');
$(widget).append(output)
var output_area = new IPython.OutputArea(output, false);
var callbacks = { 'output': $.proxy(output_area.handle_output, output_area) };
var code  = 'print 1+1'
var msg_id = IPython.notebook.kernel.execute(code, callbacks, {silent: false}); 

Это работает, когда я загружаю файл directview.ipynb. Однако мне до сих пор не ясно, как сделать его полностью автономным (, т.е. не требовать directview.py и передавать другой обратный вызов, отличный от стандартного handle_outputиз IPython.OutputArea).. Одной из проблем является container.show(), который не работает при автономном вызове.

Я теряюсь в нескольких аспектах:

  • Почему сначала element.append(widget), а затем $(widget).append(output)? Кроме того, почему также необходимо создать файл Ipython.OutputArea. Разве нет способа просто создать <div id=my_output_area>blah</div>, а затем обратный вызов outputзаполнить его соответствующими данными?
  • Что вообще такое.proxy? Я хотел бы создать свой собственный обратный вызов для output, но когда я это делаю и console.log()аргументы передаются обратному вызову, они undefinedили просто бесполезны.

Я ценю то, что авторы записной книжки IPython проделали невероятную работу по созданию такого красивого интерфейса -с использованием jQuery/вебсокетов, и что создание документации для разработчиков, позволяющей таким новичкам, как я, настраивать ее, требует многого, но если кто-то может протяни руку, было бы здорово!

35
задан Perception 26 February 2013 в 18:11
поделиться