亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

Intro

前段時(shí)間聽(tīng)了 Justin 大佬分享的 Blazor 開(kāi)發(fā)瀏覽器擴(kuò)展,覺(jué)得很不錯(cuò),C# 可以做更多有趣的事情了,

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

BlazorBrowserExtension

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

Get Started

如果想要開(kāi)始一個(gè)創(chuàng)建一個(gè)瀏覽器擴(kuò)展,可以基于項(xiàng)目模板來(lái)創(chuàng)建,首先需要安裝一下項(xiàng)目模板,通過(guò)下面的命令來(lái)安裝模板

dotnet new --install Blazor.BrowserExtension.Template

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

dotnet new browserext --name <ProjectName>

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

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

之后我們切換到項(xiàng)目目錄下,使用 dotnet build 來(lái)構(gòu)建項(xiàng)目,build 成功之后就可以在項(xiàng)目的 bin 目錄下看到一個(gè) wwwroot 目錄了,這個(gè)目錄就包含了瀏覽器插件所需的所有文件,此時(shí)我們的瀏覽器插件已經(jīng)完成了。

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


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

我們也可以通過(guò) VS 來(lái)創(chuàng)建項(xiàng)目,可以參考作者提供一個(gè) Gif 演示:


VS demo

Structure

項(xiàng)目結(jié)構(gòu)如下:


可以看到這就是一個(gè) Blazor 項(xiàng)目的項(xiàng)目結(jié)構(gòu),和普通的 Blazor 項(xiàng)目并沒(méi)有太大的差別

項(xiàng)目模板會(huì)自動(dòng)生成幾個(gè) Page,可以根據(jù)自己需要進(jìn)行修改

  • background(后臺(tái)頁(yè)面,通常是后臺(tái)邏輯)
  • index(默認(rèn)入口)
  • options(插件上右鍵時(shí)的“選項(xiàng)”對(duì)應(yīng)的頁(yè)面)
  • popup(插件單擊時(shí)顯示的 Popup 內(nèi)容)

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

運(yùn)行 dotnet build 之后的結(jié)構(gòu)下:


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

Further

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

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

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

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

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


SparkTodo Web Extension

More

可以關(guān)注支持一下這個(gè)基于 Blazor 的瀏覽器擴(kuò)展項(xiàng)目 https://github.com/mingyaulee/Blazor.BrowserExtension

如果想要開(kāi)發(fā)一個(gè)自己的瀏覽器插件,很多時(shí)候可能只是要熟悉一下瀏覽器擴(kuò)展的 API 怎么用,可以參考 Google 提供的一系列 chrome extension 的示例,API 基本上應(yīng)該都是一樣的,而且 C# 的 API 是強(qiáng)類(lèi)型的,可能會(huì)更加友好和方便維護(hù),一些在服務(wù)器端做的事情可以轉(zhuǎn)移到客戶(hù)端去做了,可以使用 C# 在瀏覽器端實(shí)現(xiàn)更多有趣的事情了??烊ビ?C# 開(kāi)發(fā)瀏覽器擴(kuò)展吧~

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

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

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

相關(guān)文章

  • C# 執(zhí)行CMD命令并接收返回結(jié)果的操作方式

    C# 執(zhí)行CMD命令并接收返回結(jié)果的操作方式

    這篇文章主要介紹了C# 執(zhí)行CMD命令并接收返回結(jié)果的操作方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • unity實(shí)現(xiàn)流光效果

    unity實(shí)現(xiàn)流光效果

    這篇文章主要為大家詳細(xì)介紹了unity實(shí)現(xiàn)流光效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C#實(shí)現(xiàn)順序棧和鏈棧的代碼實(shí)例

    C#實(shí)現(xiàn)順序棧和鏈棧的代碼實(shí)例

    今天小編就為大家分享一篇關(guān)于的C#實(shí)現(xiàn)順序棧和鏈棧的代碼實(shí)例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • C#?VB.NET?將Html轉(zhuǎn)為Excel

    C#?VB.NET?將Html轉(zhuǎn)為Excel

    本文介紹通過(guò)C#和VB.NET代碼展示將Html轉(zhuǎn)為Excel文檔的方法。文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定幫助,感興趣的小伙伴可以了解一下
    2022-03-03
  • c# 實(shí)現(xiàn)KMP算法的示例代碼

    c# 實(shí)現(xiàn)KMP算法的示例代碼

    這篇文章主要介紹了c# 實(shí)現(xiàn)KMP算法的示例代碼,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-11-11
  • C#多線(xiàn)程與異步的區(qū)別詳解

    C#多線(xiàn)程與異步的區(qū)別詳解

    多線(xiàn)程和異步操作兩者都可以達(dá)到避免調(diào)用線(xiàn)程阻塞的目的,從而提高軟件的可響應(yīng)性。甚至有些時(shí)候我們就認(rèn)為多線(xiàn)程和異步操作是等同的概念。但是,多線(xiàn)程和異步操作還是有一些區(qū)別的。而這些區(qū)別造成了使用多線(xiàn)程和異步操作的時(shí)機(jī)的區(qū)別
    2017-06-06
  • C#創(chuàng)建一個(gè)可快速重復(fù)使用的項(xiàng)目模板(詳細(xì)過(guò)程)

    C#創(chuàng)建一個(gè)可快速重復(fù)使用的項(xiàng)目模板(詳細(xì)過(guò)程)

    這篇文章主要介紹了C#如何創(chuàng)建一個(gè)可快速重復(fù)使用的項(xiàng)目模板今天給大家介紹的是基于官方的cli donet new 命令創(chuàng)建自己的項(xiàng)目模板,需要的朋友可以參考下
    2024-06-06
  • RabbitMQ的配置與安裝教程全紀(jì)錄

    RabbitMQ的配置與安裝教程全紀(jì)錄

    這篇文章主要給大家介紹了關(guān)于RabbitMQ的配置與安裝的相關(guān)資料,文中通過(guò)示例代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • 小菜編程成長(zhǎng)記(一 面試受挫——代碼無(wú)錯(cuò)就是好?)

    小菜編程成長(zhǎng)記(一 面試受挫——代碼無(wú)錯(cuò)就是好?)

    小菜編程成長(zhǎng)記(一 面試受挫——代碼無(wú)錯(cuò)就是好?)...
    2006-10-10
  • C#通過(guò)子窗體刷新父窗體的實(shí)現(xiàn)方法

    C#通過(guò)子窗體刷新父窗體的實(shí)現(xiàn)方法

    在一些軟件,比如,進(jìn)銷(xiāo)存管理系統(tǒng)中添加銷(xiāo)售單信息時(shí),每個(gè)銷(xiāo)售單都可能對(duì)應(yīng)多種商品,而且在向銷(xiāo)售單中添加商品時(shí),一般都是在新彈出的窗體中選擇商品,這時(shí)就涉及通過(guò)子窗體刷新父窗體的問(wèn)題,本文給大家介紹了C#通過(guò)子窗體刷新父窗體的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2024-04-04

最新評(píng)論