B6高性能拼接Json字符串庫(kù)!
System.text.dll是用社區(qū)版c++為VB6編寫(xiě)的com組件,簡(jiǎn)單幾步即可免注冊(cè)調(diào)用,完全免費(fèi)。經(jīng)測(cè)試,海量字符串拼接時(shí)速度接近c++的性能。
JsonBuilder對(duì)象
說(shuō)明:字符串高性能拼接對(duì)象,接近C++的性能。
示例1
Dim JStrB As JsonBuilder
Set JStrB = New JsonBuilder
With JStrB
.Node_Start
.Node_AddKey "code", 200, True
.Node_AddKey "message", "OK"
.Node_End
Debug.Print .ToString()
End With
Set JStrB = Nothing
結(jié)果:{"code":200,"message":"OK"}
示例2
Dim JStrB As JsonBuilder
Set JStrB = New JsonBuilder
With JStrB
.Node_Start
.Node_AddKey "code", 200, True
.Node_AddKey "message", "OK"
.Son_Begin "Data"
.Son_AddKey "ID", 1, True
.Son_AddKey "Title", "測(cè)試"
.Son_AddKey "Price", "12", True
.Son_Finish
.Node_End
Debug.Print .ToString()
End With
Set JStrB = Nothing
結(jié)果:{"code":200,"message":"OK","Data":{"ID":1,"Title":"測(cè)試","Price":12}}
示例3
Dim JStrB As JsonBuilder
Set JStrB = New JsonBuilder
With JStrB
.Node_Start
.Node_AddKey "code", 200, True
.Node_AddKey "message", "OK"
.Son_Begin "Data"
.Son_AddKey "ID", 1, True
.Son_AddKey "Title", "測(cè)試"
.Son_AddKey "Price", "12", True
.Son_Finish
.Node_End
Debug.Print .ToString()
End With
Set JStrB = Nothing
結(jié)果:{"code":200,"message":"OK","Data":{"ID":1,"Title":"測(cè)試","Price":12}}
Dim JStrB As JsonBuilder
Set JStrB = New JsonBuilder
With JStrB
.Array_Begin
'張三
.Node_Start
.Node_AddKey "Name", "張三"
.Node_AddKey "Age", "22", True
.Node_AddArrayText "Color", """Red"",""Green"""
'..Love
.SonArray_Begin "Love"
.SonArray_Node_Start
.SonArray_Node_AddKey "Name", "閱讀"
.SonArray_Node_AddArrayText "Color", """Red"",""Green"""
.SonArray_Node_End
.SonArray_Node_Start
.SonArray_Node_AddKey "Name", "書(shū)法"
.SonArray_Node_AddArrayText "Color", """Red"",""Green"""
.SonArray_Node_End
.SonArray_Finish
'..Property
.Son_Begin "Property"
.Son_AddKey "Account", "zhangsan"
.Son_AddKey "OrderID", 1, True
.Son_Finish
'..Cart
.SonArray_Begin "Cart"
.SonArray_Node_Start
.SonArray_Node_AddKey "Name", "水滸傳"
.SonArray_Node_AddArrayText "Color", """Red"",""Green"""
.SonArray_Node_End
.SonArray_Node_Start
.SonArray_Node_AddKey "Name", "紅樓夢(mèng)"
.SonArray_Node_AddArrayText "Color", """Red"",""Green"""
.SonArray_Node_End
.SonArray_Finish
'..Payer
.Son_Begin "Payer"
.Son_AddKey "Account", "zhangsan"
.Son_AddKey "PayerID", 1, True
.Son_AddArrayText "Color", """Red"",""Green"""
.Son_Finish
.Node_AddKey "Province", "北京"
.Node_End
'李四
.Node_Start
.Node_AddKey "Name", "李四"
.Node_AddKey "Age", "30", True
.Node_AddArrayText "Color", """無(wú)"""
'..Love
.SonArray_Begin "Love"
.SonArray_Node_Start
.SonArray_Node_AddKey "Name", "音樂(lè)"
.SonArray_Node_AddArrayText "Color", """Red"",""Green"""
.SonArray_Node_End
.SonArray_Node_Start
.SonArray_Node_AddKey "Name", "閱讀"
.SonArray_Node_AddArrayText "Color", """Red"",""Green"""
.SonArray_Node_End
.SonArray_Finish
'..Property
.Son_Begin "Property"
.Son_AddKey "Account", "lisi"
.Son_AddKey "OrderID", 2, True
.Son_Finish
'..Cart
.SonArray_Begin "Cart"
.SonArray_Node_Start
.SonArray_Node_AddKey "Name", "西游記"
.SonArray_Node_AddArrayText "Color", """Red"",""Green"""
.SonArray_Node_End
.SonArray_Node_Start
.SonArray_Node_AddKey "Name", "射雕英雄傳"
.SonArray_Node_AddArrayText "Color", """Red"",""Green"""
.SonArray_Node_End
.SonArray_Finish
'..Payer
.Son_Begin "Payer"
.Son_AddKey "Account", "lisi"
.Son_AddKey "OrderID", 2, True
.Son_AddArrayText "Color", """Red"",""Green"""
.Son_Finish
.Node_AddKey "Province", "上海"
.Node_End
.Array_Finish
Debug.Print .ToString()
End With
Set JStrB = Nothing
結(jié)果:[{"Name":"張三","Age":22,"Color":["Red","Green"],"Love":[{"Name":"閱讀","Color":["Red","Green"]},{"Name":"書(shū)法","Color":["Red","Green"]}],"Property":{"Account":"zhangsan","OrderID":1},"Cart":[{"Name":"水滸傳","Color":["Red","Green"]},{"Name":"紅樓夢(mèng)","Color":["Red","Green"]}],"Payer":{"Account":"zhangsan","PayerID":1,"Color":["Red","Green"]},"Province":"北京"},{"Name":"李四","Age":30,"Color":["無(wú)"],"Love":[{"Name":"音樂(lè)","Color":["Red","Green"]},{"Name":"閱讀","Color":["Red","Green"]}],"Property":{"Account":"lisi","OrderID":2},"Cart":[{"Name":"西游記","Color":["Red","Green"]},{"Name":"射雕英雄傳","Color":["Red","Green"]}],"Payer":{"Account":"lisi","OrderID":2,"Color":["Red","Green"]},"Province":"上海"}]
如感興趣,請(qǐng)關(guān)注“vb6plus”。
序員的工作和日常生活非常的枯燥,這里給大家推薦一些程序員經(jīng)常使用的網(wǎng)站,也是我經(jīng)常上的一些網(wǎng)站,我將會(huì)從多個(gè)角度、多個(gè)層面分別為你整理歸納這些網(wǎng)站和論壇
項(xiàng)目是一個(gè)面試官非??粗氐狞c(diǎn),也是拓展視野、挖掘輪子一個(gè)的地方,下面就為你推薦幾個(gè)程序員都應(yīng)該 mark 的項(xiàng)目類(lèi)網(wǎng)站
作為開(kāi)源代碼庫(kù)以及版本控制系統(tǒng),Github 擁有140多萬(wàn)開(kāi)發(fā)者用戶(hù)。隨著越來(lái)越多的應(yīng)用程序轉(zhuǎn)移到了云上,Github 已經(jīng)成為了管理軟件開(kāi)發(fā)以及發(fā)現(xiàn)已有代碼的首選方法。代碼托管必備。
Github 也有非常多好的項(xiàng)目可以推薦,比如我自己的 github (逃了)
https://github.com/crisxuan/bestJavaer
還有其他非常多優(yōu)秀的 Github ,比如 CS-notes、JavaGuide、mall 商城項(xiàng)目
碼云托管平臺(tái)是中國(guó)的,之所以國(guó)內(nèi)自己開(kāi)發(fā)了一個(gè)碼云平臺(tái),是因?yàn)?github 涉及到 fq,你懂的,而且碼云是開(kāi)源中國(guó)的托管平臺(tái),會(huì)定期評(píng)選一些優(yōu)秀的項(xiàng)目,你不可錯(cuò)過(guò)!
對(duì)于有些人,提到GitHub就會(huì)自然的想到Gitlab,Gitlab支持無(wú)限的公有項(xiàng)目和私有項(xiàng)目。其首頁(yè)截圖如下
程序員必須知道的幾個(gè)Git代碼托管平臺(tái)
談到 coding.net,首先必須提的是速度快,功能與開(kāi)源中國(guó)相似,同樣一個(gè)賬號(hào)最多可以創(chuàng)建 1000 個(gè)項(xiàng)目,也支持任務(wù)的創(chuàng)建等
coding.net
中國(guó)專(zhuān)業(yè)IT社區(qū)CSDN (Chinese Software Developer Network) 創(chuàng)立于1999年,致力于為中國(guó)軟件開(kāi)發(fā)者提供知識(shí)傳播、在線學(xué)習(xí)、職業(yè)發(fā)展等服務(wù)。中國(guó)最大、最具專(zhuān)業(yè)的博客平臺(tái),同時(shí)也是質(zhì)量最高的博客平臺(tái)
這樣一個(gè)不起眼的地方,卻吸引了很多IT技術(shù)精英,把這里當(dāng)作自己的網(wǎng)上家園,每天在這里分享著精彩的原創(chuàng)內(nèi)容,也許他們看重的不是華麗的外表、誘人的虛名,而是純凈、專(zhuān)注、對(duì)技術(shù)人員的理解。
掘金現(xiàn)在被字節(jié)跳動(dòng)收購(gòu)了,內(nèi)容審核變得越來(lái)越嚴(yán)格,也涌現(xiàn)了很多大佬,他們寫(xiě)的文章非常幫,強(qiáng)烈推薦大家每天逛一逛,博客內(nèi)容都是經(jīng)過(guò)層層篩選的,非常值得一看
思否上面有很多大佬,不得不說(shuō)思否的界面做的非常清新,舒服,這就讓人很喜歡這個(gè)博客平臺(tái),目前看來(lái)還是比較小眾,但是上面的開(kāi)發(fā)者的互動(dòng)很多,是一個(gè)很溫馨的地方。s
infoq 是最近興起的一個(gè)技術(shù)社區(qū),界面非常小清新,讓人感覺(jué)很舒服,目前入駐的開(kāi)發(fā)者倒不是很多,但是 infoq 依托極客邦的大流量和資源,做起來(lái)應(yīng)該很快的,我入駐了 infoq ,感覺(jué)里面還是有很多大佬的,推薦大家經(jīng)常瀏覽一波
GitChat 是一個(gè)付費(fèi)學(xué)習(xí)網(wǎng)站,當(dāng)然也支持免費(fèi)模式,因?yàn)楦顿M(fèi)所以相對(duì)文章質(zhì)量比較高,但是免費(fèi)的文章同樣也很不錯(cuò),而且我就在 GitChat 上面寫(xiě)了很多免費(fèi)文章,不應(yīng)該是很多,應(yīng)該是全部免費(fèi),我的 gitchat 主頁(yè)如下 程序員cxuan 的 GitChat
無(wú)論你是在大學(xué)進(jìn)行人生最重要階段的學(xué)習(xí),或者是在中國(guó)的某座城市工作,或者是在外太空的某個(gè)天體如 Sputnik 1 上享受人生,在注冊(cè)進(jìn)入 V2EX 之后,你都可以為自己設(shè)置一個(gè)所在地,從而找到更多和你在同一區(qū)域的朋友。
這個(gè)網(wǎng)站和CSDN一樣是國(guó)內(nèi)最大程序員社區(qū),各種教程、資源、工具、書(shū)籍都是可以找到的。在社區(qū)里,你可以盡情的寫(xiě)博客,發(fā)動(dòng)態(tài),激烈的討論問(wèn)題,只有在這種環(huán)境下才能激起你學(xué)習(xí)的熱情。
簡(jiǎn)書(shū)是一個(gè)不僅僅為程序員提供的創(chuàng)作分享社區(qū),上面充滿(mǎn)了各種各樣精彩的博文,也有很多優(yōu)秀的博主,但是相比較與CSDN個(gè)人認(rèn)為在技術(shù)創(chuàng)作方面就略低一籌了。
有問(wèn)題,上知乎。知乎,可信賴(lài)的問(wèn)答社區(qū),以讓每個(gè)人高效獲得可信賴(lài)的解答為使命。
本是一個(gè)分享各種人生雜談,和一些鮮為人知以及各種大牛的免費(fèi)和付費(fèi)的知識(shí)型網(wǎng)站。由于流量逐步擴(kuò)大,吸引了大批優(yōu)秀的程序員在上面分享自己的技術(shù)創(chuàng)作,也是一個(gè)程序員常去的網(wǎng)站之一,不僅僅是為了學(xué)習(xí)技術(shù)。
SegmentFault 思否是中國(guó)領(lǐng)先的新一代開(kāi)發(fā)者社區(qū)和專(zhuān)業(yè)的技術(shù)媒體。我們?yōu)橹形拈_(kāi)發(fā)者提供純粹、高質(zhì)的技術(shù)交流平臺(tái)以及最前沿的技術(shù)行業(yè)動(dòng)態(tài),幫助更多的開(kāi)發(fā)者獲得認(rèn)知
菜鳥(niǎo)教程提供了編程的基礎(chǔ)技術(shù)教程, 介紹了HTML、CSS、Javascript、Python,Java,Ruby,C,PHP , MySQL等各種編程語(yǔ)言的基礎(chǔ)知識(shí),是個(gè)小白入門(mén),學(xué)習(xí)語(yǔ)言的好地方。
在W3School,你可以找到你所需要的所有的網(wǎng)站建設(shè)教程。從基礎(chǔ)的 HTML 到 CSS,乃至進(jìn)階的 XML、SQL、JS、PHP 和 ASP.NET。從左側(cè)的菜單選擇你需要的教程! 和菜鳥(niǎo)教程十分相似的網(wǎng)站。
易百網(wǎng)是一個(gè)內(nèi)容全面的教程網(wǎng)站,專(zhuān)注于VBScript, MATLAB, EJB, IPv6, IPv4, 電子商務(wù), PostgreSQL, SQLite, SDLC, Assembly, 操作系統(tǒng), JSON, iOS, 設(shè)計(jì)模式, VB.Net, 計(jì)算機(jī)基礎(chǔ)知識(shí)。
期初這個(gè)網(wǎng)站是由游戲玩家視頻火起來(lái)的,尤其LOL骨灰級(jí)玩家遍布其中。bilibili 是國(guó)內(nèi)知名的視頻彈幕網(wǎng)站,通過(guò)動(dòng)漫打出了名聲,最近兩年發(fā)展勢(shì)頭迅猛,里面有不少有創(chuàng)意的 Up 主,不乏一些有趣的程序員。
中國(guó)大學(xué)MOOC(慕課) 是國(guó)內(nèi)優(yōu)質(zhì)的中文MOOC學(xué)習(xí)平臺(tái),由愛(ài)課程網(wǎng)攜手網(wǎng)易云課堂打造。平臺(tái)擁有包括985高校在內(nèi)提供的千余門(mén)課程。在這里,每一個(gè)有意愿提升自己的人都可以免費(fèi)獲得更優(yōu)質(zhì)的高等教育。
慕課網(wǎng)(IMOOC)是IT技能學(xué)習(xí)平臺(tái)。慕課網(wǎng)(IMOOC)提供了豐富的移動(dòng)端開(kāi)發(fā)、php開(kāi)發(fā)、web前端、android開(kāi)發(fā)以及html5等視頻教程資源公開(kāi)課。
網(wǎng)易云課堂,是網(wǎng)易公司打造的在線實(shí)用技能學(xué)習(xí)平臺(tái),主要為學(xué)習(xí)者提供海量、優(yōu)質(zhì)的課程,用戶(hù)可以根據(jù)自身的學(xué)習(xí)程度,自主安排學(xué)習(xí)進(jìn)度。涵蓋實(shí)用軟件、IT與互聯(lián)網(wǎng)、外語(yǔ)學(xué)習(xí)、生活家居、興趣愛(ài)好、職場(chǎng)技能、金融管理、考試認(rèn)證、中小學(xué)、親子教育等十余大門(mén)類(lèi)。
實(shí)驗(yàn)樓這個(gè)網(wǎng)站我直接吹爆,無(wú)需配置繁瑣的本地環(huán)境,隨時(shí)在線使用。
幾乎每個(gè)算法大牛都知道的神奇網(wǎng)站,這個(gè)網(wǎng)站上面有:算法、數(shù)據(jù)庫(kù)、Shell、多線程等多種類(lèi)型供你學(xué)習(xí)。多數(shù)人在上面練習(xí)編程算法,尤其是給想進(jìn)入一線互聯(lián)網(wǎng)公司的技術(shù)人員,提供了一個(gè)免費(fèi)又方便的題庫(kù)。面試前都會(huì)在上面進(jìn)行長(zhǎng)期和充分的刷題,是你的不二選擇。
LintCode領(lǐng)扣上有數(shù)量超過(guò)1000道的算法題目和人工智能題目,通過(guò)刷題熟練掌握數(shù)據(jù)結(jié)構(gòu)和算法。完成各大名企的階梯訓(xùn)練,為你斬獲心儀的offer打下堅(jiān)實(shí)的基礎(chǔ)
洛谷創(chuàng)辦于2013年,致力于為參加noip、noi、acm的選手提供清爽、快捷的編程體驗(yàn)。它擁有在線測(cè)題系統(tǒng)、強(qiáng)大的社區(qū)、在線學(xué)習(xí)功能,也是一個(gè)很好練習(xí)刷題的網(wǎng)站啦
程序員客棧是領(lǐng)先的程序員自由遠(yuǎn)程工作平臺(tái),未來(lái)互聯(lián)網(wǎng)企業(yè)用人方式。提供優(yōu)秀程序員為您進(jìn)行網(wǎng)站建設(shè)制作、測(cè)試運(yùn)維服務(wù)、人工智能AI、大數(shù)據(jù)區(qū)塊鏈、軟件開(kāi)發(fā)等優(yōu)質(zhì)服務(wù)。
碼市是互聯(lián)網(wǎng)軟件外包服務(wù)平臺(tái),意在連接需求方與廣大開(kāi)發(fā)者。讓項(xiàng)目的需求方快速的找到合適的開(kāi)發(fā)者,完成項(xiàng)目開(kāi)發(fā)工作。
猿急送為您提供兼職程序員,兼職工程師信息,猿急送是一個(gè)高級(jí)技術(shù)共享平臺(tái),是優(yōu)質(zhì)的程序員兼職網(wǎng)站,這里匯聚BAT等知名互聯(lián)網(wǎng)公司的技術(shù)開(kāi)發(fā)、產(chǎn)品、設(shè)計(jì)大牛。
開(kāi)源眾包–專(zhuān)業(yè)的軟件眾包平臺(tái),350萬(wàn)+ 優(yōu)質(zhì)開(kāi)發(fā)者為您提供網(wǎng)站、APP、微信/小程序、企業(yè)應(yīng)用等軟件開(kāi)發(fā)服務(wù),有效降低企業(yè) IT 軟件開(kāi)發(fā)成本、解決技術(shù)資源不足等問(wèn)題。
這個(gè)比較高級(jí),是一些知名公司技術(shù)人員兼職的平臺(tái)。我們可以在線約好去其他公司兼職坐班。實(shí)現(xiàn)網(wǎng)為企業(yè)提供BAT等名企背景的、靠譜的開(kāi)發(fā)設(shè)計(jì)兼職人才和自由職業(yè)者,滿(mǎn)足企業(yè)項(xiàng)目外包、駐場(chǎng)開(kāi)發(fā)、遠(yuǎn)程兼職、技術(shù)咨詢(xún)等短期人力需求。
豬八戒網(wǎng)企業(yè)外包服務(wù),中國(guó)領(lǐng)先的靈活用工平臺(tái),其中服務(wù)品類(lèi)涵蓋LOGO設(shè)計(jì)、UI設(shè)計(jì)、營(yíng)銷(xiāo)推廣、網(wǎng)站建設(shè)、裝修設(shè)計(jì)、工業(yè)設(shè)計(jì)、文案策劃、知識(shí)產(chǎn)權(quán)的服務(wù)。
碼易是智網(wǎng)易聯(lián)旗下IT軟件服務(wù)平臺(tái),集軟件商城、企業(yè)應(yīng)用、電商軟件、crm軟件、商務(wù)服務(wù)平臺(tái)于一體的一站式軟件外包開(kāi)發(fā)服務(wù)平臺(tái)。
求職之前,先上??停蜆I(yè)找工作一站解決。這個(gè)網(wǎng)站不像csdn和OSChina以技術(shù)博客論壇為主了。但是在你需要的時(shí)候,卻是相當(dāng)有價(jià)值,里面有面試技巧、各種知名的不知名的互聯(lián)網(wǎng)公司的對(duì)應(yīng)往年校招社招面試題庫(kù),刷到你手軟,一般應(yīng)屆生用這個(gè)比較多。
拉勾招聘是專(zhuān)業(yè)的互聯(lián)網(wǎng)求職招聘網(wǎng)站。致力于提供真實(shí)可靠的互聯(lián)網(wǎng)崗位求職招聘找工作信息,擁有海量的互聯(lián)網(wǎng)人才儲(chǔ)備,互聯(lián)網(wǎng)行業(yè)找工作就上拉勾招聘,值得信賴(lài)的求職。
BOSS直聘是權(quán)威領(lǐng)先的招聘網(wǎng),開(kāi)啟人才網(wǎng)招聘求職新時(shí)代,讓求職者與Boss直接開(kāi)聊、加快面試、即時(shí)反饋,是一個(gè)致力于為招聘者和求職者搭建高效溝通、信息對(duì)等的平臺(tái)
獵聘,2018年香港上市。作為中國(guó)知名中高端人才求職招聘平臺(tái),匯聚56萬(wàn)+知名企業(yè)、16萬(wàn)+認(rèn)證獵頭,為5700萬(wàn)用戶(hù)提供高薪工作崗位??傊?,獵聘還是非常不錯(cuò)的。
希望能對(duì)大家有所幫助呀。
繼微軟拋棄IE瀏覽器全面擁抱Chromium內(nèi)核推出Edge瀏覽器后,一直在關(guān)注那老舊的webbrowser未來(lái)如何發(fā)展。雖然編程語(yǔ)言千千萬(wàn),也有人不看好winform編程,但在當(dāng)前windows依舊占據(jù)相當(dāng)?shù)氖袌?chǎng)份額。在webbrowser中官方支持的是IE內(nèi)核,而IE內(nèi)核又跟你的電腦的安裝版本有關(guān)系,再加上IE對(duì)各種html前端支持的不友好。vuejs都已經(jīng)徹底拋棄了IE瀏覽器,遲遲不敢在生產(chǎn)環(huán)境大量應(yīng)用vueweb應(yīng)用。(有人可能會(huì)說(shuō)可以換webkit或者cesharp內(nèi)核,筆者也嘗試過(guò),但畢竟不是微軟的親生,各種不友好,各種復(fù)雜,webkit都多久沒(méi)更新了,根據(jù)歷史經(jīng)驗(yàn)過(guò)于復(fù)雜的東西一般很難長(zhǎng)久)。
之前關(guān)注過(guò)webview2,但那段時(shí)間剛出支持也不是很友好,無(wú)法很有效繼承,有說(shuō)要安裝edge瀏覽器的,又說(shuō)要安裝別的,而win7可能又不支持等等,而恰好我們的場(chǎng)景用又存在大量的win7,只能暫時(shí)放棄。
最近要應(yīng)用Vue,重新關(guān)注了一下相關(guān)應(yīng)用,很驚喜的發(fā)現(xiàn),webview2有了官方比較好的支持(可能早就有了,但是肯定不會(huì)超過(guò)1年)微軟官方文檔鏈接WebView2 - Microsoft Edge Developer
如果本文有不對(duì)的地方還要以官方文檔為準(zhǔn),研究不深。先說(shuō)體驗(yàn)效果,webview2真的很好,內(nèi)核徹底替換為chromium,Vue項(xiàng)目跑起來(lái)了也不用擔(dān)心各種不兼容了,終于不用為webbrowser擔(dān)憂了。由于項(xiàng)目使用的VB.NET(不要問(wèn)為甚么不是C#,我會(huì)一點(diǎn),但是用不到),因此考慮到系統(tǒng)中的使用還是集成到了VB.NET中,在搜索過(guò)程中發(fā)現(xiàn)webview2的資料不多,一些屬性還沒(méi)有很好的案例,可能與winform的沒(méi)落有關(guān)系吧,而且相關(guān)介紹均是C#的,也包括官方文檔。因此在基本集成以后,通過(guò)這篇文章做簡(jiǎn)單分享與記錄。這里的集成比較簡(jiǎn)單,主要是滿(mǎn)足WEB和客戶(hù)端的混合編程,也是webview2介紹中的重要應(yīng)用之一,畢竟WEB才是管理系統(tǒng)的未來(lái)。
Webview2 加了個(gè)2可能是為了跟安卓的webview區(qū)分吧,畢竟一搜webview出來(lái)的全是安卓的。
Webview2支持win7、win8、win10以及對(duì)應(yīng)的server版本,可以說(shuō)是涵蓋了windows的江山,具體的版本說(shuō)明可以參考官方文檔。如果你說(shuō)還有xp,天就被聊死了,我們不是一路人。
從搜到的帖子看大家對(duì)于webview2還是持肯定態(tài)度的,比webkit,cefsharp的兼容性要好的多,從我的體驗(yàn)來(lái)講它可以完全替代webbrowser控件,正在生產(chǎn)環(huán)境中替代原有webbrowser控件。
Webview2雖然沒(méi)有了IE一堆亂糟糟的版本問(wèn)題,但是Webview2畢竟是依賴(lài)與Edge誕生的產(chǎn)品,它依然需要一定的環(huán)境,微軟提供了2種方案。
這里選擇的是Webview2 runtime畢竟我們是集成環(huán)境,這里可以根據(jù)需要選擇。
官方文檔是C#的比較簡(jiǎn)單,C#er們自行閱覽即可,畢竟在大神面前我只是個(gè)渣渣。
1、引入Webview2
2、關(guān)鍵方法、事件
WebView21.CoreWebView2.Navigate(im_ipurl)
Function installruntime()
Try
Dim v As String = WebView21.Source.ToString
Me.Text = ("Copyright ? 2021-2022 lxfamn, All Rights Reserved " )
Catch ex As Exception
If Environment.Is64BitOperatingSystem Then
MsgBox("系統(tǒng)全面升級(jí)瀏覽器內(nèi)核,接下來(lái)系統(tǒng)將自動(dòng)為您安裝補(bǔ)丁,請(qǐng)?jiān)趶棾龃翱谶x運(yùn)行,64位系統(tǒng)")
Process.Start("\\運(yùn)行組件共享路徑\webruntime\X64.exe")
Else
MsgBox("系統(tǒng)全面升級(jí)瀏覽器內(nèi)核,接下來(lái)系統(tǒng)將自動(dòng)為您安裝補(bǔ)丁,請(qǐng)?jiān)趶棾龃翱谶x運(yùn)行,32位系統(tǒng)")
Process.Start("\\運(yùn)行組件共享路徑\webruntime\X64.exe")
End If
End Try
End Function
Private Sub WebView21_CoreWebView2InitializationCompleted(sender As Object, e As CoreWebView2InitializationCompletedEventArgs) Handles WebView21.CoreWebView2InitializationCompleted
installruntime()
WebView21.CoreWebView2.Navigate(im_ipurl & "/home")
End Sub
事件執(zhí)行流程如下圖所示:
3、最關(guān)鍵、復(fù)雜的流程
webview與主機(jī)程序的交互過(guò)程,在原有的webbrowser中在WebBrowser1_DocumentCompleted事件中通過(guò)對(duì)WebBrowser1.DocumentText的解析可以做進(jìn)行不同的處理。
在webview2中沒(méi)有了上述事件和方法,取而代之的是postMessage,官方案例使用的C#,使用了aysn異步綁定等方式。
簡(jiǎn)單可以理解為,提供了WebView21.CoreWebView2.ExecuteScriptAsync和WebView21.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync方法,向站點(diǎn)注入javasript程序來(lái)實(shí)現(xiàn)相關(guān)功能,這里我只使用了ExecuteScriptAsync方法,在NavigationCompleted事件,在頁(yè)面加載完成后向主機(jī)發(fā)送消息,WebView21_WebMessageReceived 事件中接受發(fā)送的消息。
Private Sub WebView21_NavigationCompleted(sender As Object, e As CoreWebView2NavigationCompletedEventArgs) Handles WebView21.NavigationCompleted
TextBox1.Text = WebView21.Source.ToString()'導(dǎo)航完成后,在標(biāo)題欄中顯示當(dāng)前網(wǎng)址
If (TextBox1.Text.Contains("www.microsoft.com")) Then
WebView21.CoreWebView2.Navigate("https://blog.lxfamn.cn/?cat=101")
End If
WebView21.CoreWebView2.ExecuteScriptAsync("window.chrome.webview.postMessage(document.body.innerHTML);")
End Sub
Private Sub WebView21_WebMessageReceived(sender As Object, e As CoreWebView2WebMessageReceivedEventArgs) Handles WebView21.WebMessageReceived
webdeal(e.WebMessageAsJson.ToString)'根據(jù)接收的消息進(jìn)行邏輯處理
End Sub
4、其他的一些
建議結(jié)合官方文檔進(jìn)行閱覽,理解一些方法和規(guī)則,一些方法和過(guò)程在官方文檔中解釋還是比較清楚的,本文主要是幫助解釋一些在vb.net以及一些邏輯等問(wèn)題的解釋。
附上一些處理url自動(dòng)補(bǔ)充前綴的方法
Function geturl(dealway As String)
Try
Dim urlstr As String = TextBox1.Text
If Not urlstr.Contains("http") Then
Dim re As New Regex("((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}")
Dim Contents As MatchCollection = re.Matches(urlstr)
Dim rea As New Regex("[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?")
Dim Contentsa As MatchCollection = rea.Matches(urlstr)
If Contentsa.Count > 0 Or Contents.Count > 0 Then
urlstr = "http://" & urlstr
Else
If dealway = "百度" Then
urlstr = "https://www.baidu.com/s?wd=" & urlstr
End If
If dealway = "blog" Then
urlstr = "https://blog.lxfamn.cn/?cat=101"
End If
End If
End If
WebView21.CoreWebView2.Navigate((urlstr))
Catch
installruntime()
End Try
End Function
界面布局
有問(wèn)題之處歡迎指正
個(gè)人博客:VB.NET Edge webview2 引入-IT涉獵者
未經(jīng)允許不得轉(zhuǎn)載:https://blog.lxfamn.cn/?p=6698
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。