這篇文章帶給大家的內容是淺談.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#程式碼裡呼叫Node.js,也就是JavaScript程式碼。
想要了解如何使用該類別庫,可以從官網上的範例入手:
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
。
然後,使用EdgeJs中Edge類別的Func靜態方法。此方法需要傳入Node.js中使用的程式碼,並且必須傳回一個JavaScript函數。此函數有一個用於外部傳入資料的參數,以及一個回呼函數參數。此回呼函數中的第一個參數為JavaScript中的異常訊息,第二個是傳回值。
Edge.Func方法回傳的是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(); } }
使用這種方法比直接翻譯JavaScript程式碼的解決方案要更加節省工時,而且可以避免許多在翻譯語言過程中可能會產生的Bug。而與第二種建立Node.js Restful API的方式相比,又少了額外佈署服務的工作。所以綜合考慮下來,是十分適合實際需求的一種方案。
唯一令人遺憾的是,Edge.js目前在.NET程式碼呼叫Node.js程式碼方面還不支援.NET Core。希望官網所述的coming soon能夠儘早到來。
以上是淺談.NET Core開發日誌中Edge.js是什麼?如何用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

C#和.NET運行時緊密合作,賦予開發者高效、強大且跨平台的開發能力。 1)C#是一種類型安全且面向對象的編程語言,旨在與.NET框架無縫集成。 2).NET運行時管理C#代碼的執行,提供垃圾回收、類型安全等服務,確保高效和跨平台運行。

要開始C#.NET開發,你需要:1.了解C#的基礎知識和.NET框架的核心概念;2.掌握變量、數據類型、控制結構、函數和類的基本概念;3.學習C#的高級特性,如LINQ和異步編程;4.熟悉常見錯誤的調試技巧和性能優化方法。通過這些步驟,你可以逐步深入C#.NET的世界,並編寫高效的應用程序。

C#和.NET的關係是密不可分的,但它們不是一回事。 C#是一門編程語言,而.NET是一個開發平台。 C#用於編寫代碼,編譯成.NET的中間語言(IL),由.NET運行時(CLR)執行。

C#.NET依然重要,因為它提供了強大的工具和庫,支持多種應用開發。 1)C#結合.NET框架,使開發高效便捷。 2)C#的類型安全和垃圾回收機制增強了其優勢。 3).NET提供跨平台運行環境和豐富的API,提升了開發靈活性。

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

C#和.NET通過不斷的更新和優化,適應了新興技術的需求。 1)C#9.0和.NET5引入了記錄類型和性能優化。 2).NETCore增強了雲原生和容器化支持。 3)ASP.NETCore與現代Web技術集成。 4)ML.NET支持機器學習和人工智能。 5)異步編程和最佳實踐提升了性能。

c#.netissutableforenterprise-levelapplications withemofrosoftecosystemdueToItsStrongTyping,richlibraries,androbustperraries,androbustperformance.however,itmaynotbeidealfoross-platement forment forment forment forvepentment offependment dovelopment toveloperment toveloperment whenrawspeedsportor whenrawspeedseedpolitical politionalitable,

C#在.NET中的編程過程包括以下步驟:1)編寫C#代碼,2)編譯為中間語言(IL),3)由.NET運行時(CLR)執行。 C#在.NET中的優勢在於其現代化語法、強大的類型系統和與.NET框架的緊密集成,適用於從桌面應用到Web服務的各種開發場景。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6
視覺化網頁開發工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

禪工作室 13.0.1
強大的PHP整合開發環境