Как использовать один код для ActionScript3 и JavaScript

У меня есть сложная логика для Node.js и Flash (ActionScript3). Как объединить код в единое решение без копирования, кроме использования генераторов оберток или кроссплатформенных языков вроде Haxe?

Я пробовал решать такую задачу через разделение логики и использования внешнего интерфейса. Например, можно создать общий модуль на JS и подключать его из Flash через ExternalInterface. Конечно, бывают моменты, когда приходится подгонять типы и учитывать особенности каждой платформы, но по моему опыту это решаемый вопрос. Не скажу, что это идеальное решение, но оно избавляет от копипаста и помогает держать код в одном стиле. Надеюсь, мой опыт будет полезен.

Попробовал такой подход — разделил логику от платформы. Общий модуль пишешь на базовом стандарте ECMAScript и подключаешь через специальные адаптеры для Flash и Node.js. Это не всегда тривиально, но позволяет избежать дублирования кода. Плюс, такие адаптеры выносишь в отдельные файлы, и обновление логики оказывается гораздо проще в перспективе.

Можно попробовать вынести общую логику в отдельный модуль и через легкие обертки адаптировать для каждой платформы. Такой подход может быть эффективным, но как по-твоему, возможно ли сделать обертки достаточно гибкими для поддержки сложной логики?

Я уже сталкивался с подобной задачей. Я даже пробовал вынести основную бизнес-логику в отдельный модуль, чтобы потом адаптировать её под разные платформы. Конечно, на первом этапе пришлось написать свои спецобертки для Flash и Node.js, но в итоге это сильно упростило дальнейшую поддержку и развитие кода. Мне нравится подход, когда логика отстрелена от интерфейса и каждой платформе дается своя адаптация, что избавляет от постоянного копирования и ошибок.

Мой опыт подсказывает, что можно попробовать свести все к одному ядру. Я использовал подход с написанием общей логики на чистом JavaScript и обертками для каждой платформы. Для интеграции с AS3 приходилось применять ExternalInterface, а в Node.js – просто модульную систему. Такой подход расширим и позволяет добавлять новые платформы без копипаста кода, главное – уделить внимание тщательной абстракции.