Совместное использование кода JavaScript между рабочим столом .NET и браузером

У меня есть набор основных сложных структур / классов данных JavaScript, которые я хотел бы использовать как в браузере как JavaScript, так и запускать на рабочем столе с .NET 3.5. Можно ли скомпилировать удобный для Интернета JavaScript в сборки, к которым мой код C# может получить доступ?

  • Управляемый JScript - есть ли для этого компилятор, который будет создавать что-то, что может работать на настольной среде CLR? Я видел только выпущенные примеры для среды выполнения Silverlight. Не похоже, что он официально доступен для настольных ПК, но я хочу попробовать что-то менее удачное, например, могу ли я скомпилировать с помощью инструментов Silverlight, а затем запустить CLR на настольном компьютере?
  • JScript .NET - Похоже, у него достаточно настраиваемых языковых расширений, и запустить тот же код в браузере было бы очень сложно, но, может быть, есть способ ...?

Если ни один из этих вариантов не сработает, я думаю, что у меня есть следующие варианты:

  • У меня есть версия C# и версия JavaScript, которые я должен синхронизировать (фу).
  • Напишите своего рода препроцессор, который запускается во время компиляции, чтобы превратить мой JavaScript в JScript .NET или что-то, что я могу скомпилировать в сборки .NET.
  • Сценарий №: Похоже, это превращает код C# в код JavaScript. Не очень хорошо, так как я бы предпочел иметь возможность напрямую настраивать код JavaScript, но это может сработать.

У кого-нибудь есть успех с любым из этих вариантов?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
648
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Как насчет другого варианта:

  • Разместите приложение javascript в своем настольном приложении с помощью элемента управления Winforms WebBrowser?

Это возможно?

Вы также можете получить доступ к DOM из элемента управления WebBrowser, но не все, что вам нужно, полностью поддерживается.

Ответ принят как подходящий

JScript.Net на самом деле в основном совместим с EMCAScript3. Пока вы относитесь к своему коду как к библиотеке обработки (только если он выполняет хруст и т. д. - используйте обратные вызовы для взаимодействия с программой), все должно быть в порядке. Я делаю нечто подобное, используя javascript в качестве основной библиотеки синтаксического анализа, а затем использую его в python, dotnet и php.

Проблема, с которой я столкнулся с этим (с использованием JScript.NET), заключается в том, что, хотя можно вызывать функции и классы, определенные в JScript.NET, из других языков, похоже, нет способа получить доступ к переменным и запустить определенный код " на верхнем уровне ». Кроме того, если функции или методы пытаются получить доступ к объектам, инициализированным в глобальной области видимости, эти значения не инициализируются. Если у вас есть другой опыт, я хотел бы услышать об этом!

James Hugard 02.06.2009 02:55

Управляемый JavaScript (IronJScript), похоже, убит. См. этот ответ:

Другие вопросы по теме