나만의 JavaScript 런타임 생성 경험 - #1
4682 단어 csharpjavascriptruntimenode
현재 개발 저장소는 여기accessed일 수 있습니다.
하지만 왜? 나는 순수한 취미로 이 프로젝트를 시작하기로 결정했으며, 프로젝트를 시작한 주된 이유는 다음과 같습니다.
첫 번째 단계
MelonRuntime은 Microsoft ASP.NET 팀의 소프트웨어 개발자인 Sébastien Ros가 만든 JavaScript 인터프리터인 Jint을 기반으로 합니다. Melon은 외부 입력(명령
npx melon new
으로 생성된 기본 프로젝트와 함께 제공되는 다른 패키지에서 제공) 및 내장 도구와 함께 이 인터프리터에 삽입된 바인딩 및 기능에서 작동합니다.첫날은 매우 즐거웠습니다. 엔진에 기능을 주입하는 방법(C#과 JavaScript 바인딩)과 코드 내에서 기능을 호출하는 방법을 배워야 했습니다. 이를 위해 CLI.NET 이라는 직접 만든 라이브러리를 사용하여 명령 인터페이스를 빠르게 만들 수 있었습니다.
팁: 프로덕션에 CLI.NET을 사용하는 것을 권장하지 않습니다. Nuget 패키지가 없으며 몇 가지 최적화를 수행해야 했습니다. 원래 리포지토리에 주의가 필요합니다
첫 번째 바인딩은 기본
console
도구를 구현하는 것이었고 첫 번째 기능은 분명히log
였습니다.구현이 엉망이었지만(여전히 생각합니다) 마음에 들었고 점점 더 개선해야 합니다. 현재 구현이 있습니다.
public static void Write(object obj, int color)
{
CLNConsole.Write("< ", ConsoleColor.Red);
try
{
JsonSerializerOptions options = new()
{
ReferenceHandler = ReferenceHandler.IgnoreCycles,
WriteIndented = true
};
var serialized = JsonSerializer.Serialize(obj, options);
CLNConsole.Write(serialized, color);
}
catch
{
CLNConsole.Write(obj.ToString() ?? "null", color);
}
Console.WriteLine();
}
그 후 다음과 같이 오류를 더 읽기 쉽게 만드는 데 집중했습니다.
아직 갈 길이 멀다.
Reference
이 문제에 관하여(나만의 JavaScript 런타임 생성 경험 - #1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/victoriarose/the-experience-of-creating-my-own-javascript-runtime-1-4h9j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)