이 문서에서는 .NET Core 개발 로그에 있는 Edge.js에 대해 간략하게 설명합니다. 사용하는 방법? 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
저는 최근 한 프로젝트에서 기존 시스템의 비즈니스 로직 일부를 새로운 자동화 프로세스 도구에 통합해야 하는 필요성을 느꼈습니다. 개발 중인 자동화 도구는 C# 언어를 사용하는 반면, 기존 시스템의 비즈니스 로직은 AngularJS를 사용하여 프런트 엔드에 구축됩니다. 따라서 초기 고려 사항에는 두 가지 솔루션이 있습니다. 하나는 통합을 위해 원본 JavaScript 코드를 C# 코드로 다시 작성하는 것이고, 다른 하나는 필요한 코드를 추출하여 Node.js를 통해 구축된 RESTful API에 배치하는 것입니다. C# 코드의 HttpClient.
그런데 흥미로운 클래스 라이브러리 Edge.js를 발견하고 다른 선택이 있었습니다.
Edge.js의 역할은 Node.js와 .NET의 두 세계를 연결하는 것입니다. 이를 통해 개발자는 Node.js 프로세스에서 .NET 코드를 호출하거나 .NET 프로세스에서 Node.js 코드를 호출할 수 있습니다.
요구 사항에 따라 여기서는 C# 코드, 즉 JavaScript 코드로 Node.js를 호출해야 합니다.
이 클래스 라이브러리를 사용하는 방법을 알고 싶다면 공식 웹사이트의 예제부터 시작해 보세요:
class Program { static void Main(string[] args) { var func = Edge.Func(@" return function (data, callback) { callback(null, 'Node.js welcomes ' + data); } "); Console.WriteLine(func(".NET").Result); Console.Read(); } }
먼저 Nuget, Install-Package Edge.js. <code>Install-Package Edge.js
。
然后,使用EdgeJs中Edge类的Func静态方法。该方法需要传入Node.js中使用的代码,并且必须返回一个JavaScript函数。该函数有一个用于外部传入数据的参数,以及一个回调函数参数。此回调函数中的第一个参数为JavaScript中的异常信息,第二个是返回值。
Edge.Func方法返回的是Func68d31b413303a3884e3527e85fefc23d>
Func<object>></object>
대리자 개체를 반환합니다. 이는 반환된 콘텐츠가 .NET에서 비동기적으로 처리될 수 있음을 의미합니다. 다음으로 실제 엔지니어링에 가까운 예를 살펴보겠습니다. 다음 코드는 AngularJS에서 일반적으로 사용됩니다. 현재 계획은 sayHello 함수의 논리를 C# 코드에 넣고 호출하는 것입니다. app.controller('myCtrl', function($scope) { $scope.name = "World"; $scope.sayHello = function(data) { $scope.greeting = 'Hello ' + $scope.name + ' ' + data + '!'; }; });해결해야 할 첫 번째 단계는 $scope를 처리하는 방법을 고려하는 것입니다. 본질적으로 객체이기 때문에 전역 객체 변수로 정의하면 됩니다. 두 번째 단계는 핵심 코드를 Edge의 Func 메소드 매개변수로 옮기는 것입니다.
var func = Edge.Func(@" var $scope = {}; $scope.name = 'World'; $scope.sayHello = function(data) { $scope.greeting = 'Hello ' + $scope.name + ' ' + data + '!'; }; ");세 번째 단계는 반환 메서드를 추가하고 JavaScript 코드에서 발생할 수 있는 예외를 캡처하는 것입니다.
var func = Edge.Func(@" var $scope = {}; $scope.name = 'World'; $scope.sayHello = function(data) { $scope.greeting = 'Hello ' + $scope.name + ' ' + data + '!'; }; return function (data, callback) { var exception = null; try { $scope.sayHello(data); } catch(err) { exception = err; } callback(exception, $scope.greeting); } ");전체 코드를 실행하면 예상한 결과를 얻을 수 있습니다.
class Program { static void Main(string[] args) { var func = Edge.Func(@" var $scope = {}; $scope.name = 'World'; $scope.sayHello = function(data) { $scope.greeting = 'Hello ' + $scope.name + ' ' + data + '!'; }; return function (data, callback) { var exception = null; try { $scope.sayHello(data); } catch(err) { exception = err; } callback(exception, $scope.greeting); } "); Console.WriteLine(func(".NET").Result); Console.Read(); } }
그러나 위의 .NET 코드는 JavaScript에서 발견될 수 있는 예외를 처리할 수 없습니다. 예를 들어, sayHello 함수에 예외 발생 문을 추가하면 코드가 실행될 때 예상되는 오류가 발생합니다.
$scope.sayHello = function(data) { $scope.greeting = 'Hello ' + $scope.name + ' ' + data + '!'; throw 'there is an error!'; };따라서 더 나은 접근 방식은 .NET 코드에 해당 예외 처리를 추가하는 것입니다.
class Program { static void Main(string[] args) { try { var func = Edge.Func(@" var $scope = {}; $scope.name = 'World'; $scope.sayHello = function(data) { $scope.greeting = 'Hello ' + $scope.name + ' ' + data + '!'; throw 'there is an error!'; }; return function (data, callback) { var exception = null; try { $scope.sayHello(data); } catch(err) { exception = err; } callback(exception, $scope.greeting); } "); Console.WriteLine(func(".NET").Result); } catch (Exception ex) { // 处理异常 } Console.Read(); } }
위 내용은 .NET Core 개발 로그에서 Edge.js가 무엇인지에 대해 간략히 설명합니다. 사용하는 방법?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!