最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用C#開發(fā)瀏覽器擴展的全過程記錄

 更新時間:2021年07月09日 10:37:55   作者:WeihanLi  
做web開發(fā)的同學,經常會用到各種chrome瀏覽器插件,那么我們寄幾怎么開發(fā)一個插件呢(其實是瀏覽器擴展)?這篇文章主要給大家介紹了關于利用C#開發(fā)瀏覽器擴展的相關資料,需要的朋友可以參考下

Intro

前段時間聽了 Justin 大佬分享的 Blazor 開發(fā)瀏覽器擴展,覺得很不錯,C# 可以做更多有趣的事情了,

很多需要在服務器端做的事情可能就可以在客戶端里實現(xiàn)了,而且高度可以復用已有的 C# 代碼,而且在瀏覽器里做很多有趣的事情,所以想寫一篇文章和大家分享一下,讓大家知道 C# 也是可以開發(fā)瀏覽器擴展的

BlazorBrowserExtension

Blazor.BrowserExtension 是一個使用 Blazor 來開發(fā)瀏覽器擴展的開源項目,也是我們要介紹的主角,項目地址是: https://github.com/mingyaulee/Blazor.BrowserExtension,其工作方式是 Blazor WebAssembly 模式來代替 JavaScript 來工作,這個項目依托于作者的另外一個項目 https://github.com/mingyaulee/WebExtensions.Net,WebExtensions.Net 這個項目主要是提供了瀏覽器擴展和瀏覽器進行交互的 C# API,而 Blazor.BrowserExtension 項目則是在其基礎之上將瀏覽器擴展的開發(fā)模式和 Blazor 相結合,并且借助于 MS Build 自動化地生成瀏覽器擴展所必需的資源文件,進一步簡化 C# 開發(fā)瀏覽器擴展的上手難度

Get Started

如果想要開始一個創(chuàng)建一個瀏覽器擴展,可以基于項目模板來創(chuàng)建,首先需要安裝一下項目模板,通過下面的命令來安裝模板

dotnet new --install Blazor.BrowserExtension.Template

然后就可以創(chuàng)建項目了,可以使用下面的命令來基于模板創(chuàng)建項目(替換下面的 <ProjectName> 為自己想要使用的項目名稱)

dotnet new browserext --name <ProjectName>

我創(chuàng)建了一個示例項目,名字是 BlazoreWebExtensionDemo

目前項目模板有一個模板參數(shù),可以通過 -F 來指定項目的 TargetFramework,默認是 net5.0,可以指定為 net6.0 來創(chuàng)建 .NET 6 的項目

之后我們切換到項目目錄下,使用 dotnet build 來構建項目,build 成功之后就可以在項目的 bin 目錄下看到一個 wwwroot 目錄了,這個目錄就包含了瀏覽器插件所需的所有文件,此時我們的瀏覽器插件已經完成了。

接著我們來使用一下我們的瀏覽器擴展,我們需要在瀏覽器擴展程序頁面(chrome 可以直接訪問chrome://extensions/)啟用開發(fā)者模式才能直接加載本地的瀏覽器插件,然后點擊 “加載已解壓的擴展程序”,然后選擇我們上面的 wwwroot 目錄就可以加載我們的插件了


BlazoreWebExtensionDemo 就是我們前面創(chuàng)建的瀏覽器插件項目,加載好之后,默認項目的行為是會打開一個 Tab ,如下圖所示:

我們也可以通過 VS 來創(chuàng)建項目,可以參考作者提供一個 Gif 演示:


VS demo

Structure

項目結構如下:


可以看到這就是一個 Blazor 項目的項目結構,和普通的 Blazor 項目并沒有太大的差別

項目模板會自動生成幾個 Page,可以根據自己需要進行修改

  • background(后臺頁面,通常是后臺邏輯)
  • index(默認入口)
  • options(插件上右鍵時的“選項”對應的頁面)
  • popup(插件單擊時顯示的 Popup 內容)

然后就是 wwwroot 目錄下的 manifest.json 文件,這個文件定義了插件的名稱、介紹以及插件所需要的權限以及頁面配置等信息,關于 manifest.json 的詳細信息可以參考文檔:https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json

運行 dotnet build 之后的結構下:


  • BrowserExtensionScripts: 和瀏覽器擴展交互的一些 js
  • WebExtensionsScripts:WebExtensions 用來和 js 交互的一些 js
  • framework:Blazor 項目依賴,包括依賴的dotnet webassembly 環(huán)境和一些程序集

Further

如果想要做進一步的開發(fā),需要怎么做呢?

如果要在代碼里使用瀏覽器擴展的插件,只需要注入 IWebExtensionsApi 即可,這是在自動生成的 Program.cs 中 AddBrowserExtensionService 方法中注冊的,詳細可以參考: https://github.com/mingyaulee/Blazor.BrowserExtension/blob/main/src/Blazor.BrowserExtension/Extensions/ServiceCollectionExtensions.cs#L25

builder.Services.AddBrowserExtensionServices(options =>
{
    options.ProjectNamespace = typeof(Program).Namespace;
});

具體的瀏覽器擴展 API 可以參考 MDN 和 Chrome 瀏覽器擴展的 API 文檔以及 Google 提供的 samples https://github.com/GoogleChrome/chrome-extensions-samples

我也嘗試做了一個簡單的瀏覽器插件,做了一個簡單的 todo 提醒,只用到了一個 notification 的 API,數(shù)據的管理是基于 EF Core In Memory 來實現(xiàn)的,和之前的 API 實現(xiàn)了一些簡單的代碼共享,有需要的可以參考 https://github.com/WeihanLi/SparkTodo/tree/master/SparkTodo.WebExtension,功能演示可以參考下圖:


SparkTodo Web Extension

More

可以關注支持一下這個基于 Blazor 的瀏覽器擴展項目 https://github.com/mingyaulee/Blazor.BrowserExtension

如果想要開發(fā)一個自己的瀏覽器插件,很多時候可能只是要熟悉一下瀏覽器擴展的 API 怎么用,可以參考 Google 提供的一系列 chrome extension 的示例,API 基本上應該都是一樣的,而且 C# 的 API 是強類型的,可能會更加友好和方便維護,一些在服務器端做的事情可以轉移到客戶端去做了,可以使用 C# 在瀏覽器端實現(xiàn)更多有趣的事情了。快去用 C# 開發(fā)瀏覽器擴展吧~

Justin 大佬最近在做的瀏覽器擴展項目地址是 https://github.com/newbe36524/Amazing-Favorites,感興趣的可以關注一下,另外大佬之前的分享示例代碼可以參考https://github.com/newbe36524/Newbe.Demo/tree/master/src/BlogDemos/Newbe.Blazor。

到此這篇關于利用C#開發(fā)瀏覽器擴展的文章就介紹到這了,更多相關C#開發(fā)瀏覽器擴展內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

References

  • https://github.com/mingyaulee/Blazor.BrowserExtension
  • https://github.com/newbe36524/Amazing-Favorites
  • https://github.com/mingyaulee/WebExtensions.Net
  • https://github.com/WeihanLi/SparkTodo/tree/master/SparkTodo.WebExtension
  • https://github.com/WeihanLi/SamplesInPractice/tree/master/BlazorSample/BlazorWebExtensionDemo
  • https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Build_a_cross_browser_extension
  • https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions
  • Chrome Extensions API Reference
  • https://github.com/GoogleChrome/chrome-extensions-samples

相關文章

  • C#.NET獲取撥號連接的寬帶連接方法

    C#.NET獲取撥號連接的寬帶連接方法

    這篇文章主要介紹了C#.NET獲取撥號連接的寬帶連接方法,實例演示了一個C#封裝的ADSL撥號連接類及其使用方法,需要的朋友可以參考下
    2015-06-06
  • C#實現(xiàn)兩接口中同名方法實例分析

    C#實現(xiàn)兩接口中同名方法實例分析

    這篇文章主要介紹了C#實現(xiàn)兩接口中同名方法,涉及C#接口與方法的相關操作技巧,需要的朋友可以參考下
    2015-05-05
  • UGUI實現(xiàn)隨意調整Text中的字體間距

    UGUI實現(xiàn)隨意調整Text中的字體間距

    這篇文章主要為大家詳細介紹了UGUI實現(xiàn)隨意調整字體間距的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • 關于c#中枚舉類型支持顯示中文的擴展說明

    關于c#中枚舉類型支持顯示中文的擴展說明

    需求?。骸∶杜e類型在界面顯示的時候可以顯示相應的中文信息, 這樣界面對用戶友好 . 場景?。骸≡谝恍I(yè)務中涉及到審核功能的時候, 往往有這幾個狀態(tài)?。何此蛯?, 審核中 ,審核通過, 駁回?。∵@個時候我們會定義一個枚舉類型來描述 :
    2013-03-03
  • 積累Visual Studio 常用快捷鍵的動畫演示

    積累Visual Studio 常用快捷鍵的動畫演示

    在代碼開發(fā)過程中,頻繁的使用鍵盤、鼠標操作非常麻煩,影響程序的開發(fā)效率。如何操作能用鍵盤來操作,那就節(jié)省時間了。下面小編把我平時積累的有關visul studio 常用快捷鍵的動畫演示分享給大家,僅供大家參考
    2015-10-10
  • C#中的匿名函數(shù)、lambda表達式解讀

    C#中的匿名函數(shù)、lambda表達式解讀

    這篇文章主要介紹了C#中的匿名函數(shù)、lambda表達式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • C# OleDbDataReader快速數(shù)據讀取方式(3種)

    C# OleDbDataReader快速數(shù)據讀取方式(3種)

    這篇文章主要介紹了C# OleDbDataReader快速數(shù)據讀取方式(3種),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • Unity實現(xiàn)汽車前后輪倒車軌跡計算

    Unity實現(xiàn)汽車前后輪倒車軌跡計算

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)汽車前后輪倒車軌跡計算,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • .NET WinForm實現(xiàn)在listview中添加progressbar的方法

    .NET WinForm實現(xiàn)在listview中添加progressbar的方法

    這篇文章主要介紹了.NET WinForm實現(xiàn)在listview中添加progressbar的方法,結合實例形式簡單分析了進度條控件的添加與使用方法,需要的朋友可以參考下
    2017-05-05
  • 解析Silverlight調用WCF/Rest異常的解決方法

    解析Silverlight調用WCF/Rest異常的解決方法

    本篇文章對Silverlight調用WCF/Rest異常的解決方法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05

最新評論

轮台县| 玉环县| 卫辉市| 布尔津县| 连平县| 东乌珠穆沁旗| 钟山县| 留坝县| 喀喇| 新巴尔虎左旗| 蓬莱市| 岢岚县| 西宁市| 乌苏市| 本溪| 施秉县| 福州市| 仙居县| 库尔勒市| 攀枝花市| 南陵县| 镇沅| 剑河县| 阳信县| 宜兴市| 博客| 丰宁| 比如县| 恩施市| 左贡县| 南和县| 北碚区| 铜陵市| 内黄县| 永福县| 上虞市| 宜兴市| 永泰县| 将乐县| 内黄县| 遂平县|