之前公司有个需求在c#写的项目上添加一些功能,这里需要c#和vue通信,c#和js通信我知道,做不了的话估计需要使用原始js来开发
??没有啥不同的。
跟cef无关,跟vue也无关。
没有cef你用普通浏览器就可以调试,至于对方用的是不是vue俺们也不太关心。
所以我现在不清楚你困在哪里?
只能说一般的路子
1.你内置web self host提供web功能,那么他变成一个普通浏览器浏览一个普通web服务器的功能,你可以用rest api,ws,singlr,ajax任何普通网站的技术去交流
2.如果不想用web self host,你就只盯着cef,那就注入脚本呗。至于用不用vue跟项目无关系。vue是web版的mvvm,跟用啥数据源没关系(就好比你用个mvvm的wpf跟你串口交互也没什么必然联系一样)
3.如果cef内置,那么你也可以直接开启cef的远程调试功能,那么cef自己就有个你自己设置的调试端口给你。你用调试端口也可以互相交互(当然这个依旧和vue没必然联系)
这个普通程序员比较少知道,因为那个园子不写文章吹,而且使用这个多半不是neter,而是python,go,Java,安卓的人,所以你可以明白那个园子为啥不吹了。
但是实际项目里用的很多很多。因为只要有devlooptools的浏览器都是支持的。所以我们可以不限制在cef里用。我可以用devlooptools的内置功能和浏览器进行交互的(也就是devlooptools有啥功能,你就可以有啥功能)
前后端分离,C#写api,把数据交给前端去渲染
【以下回答由 GPT 生成】
在C#中使用CefSharp来嵌入网页,可以按照以下步骤进行:
首先,确保你的项目中已经安装了CefSharp的NuGet包。可以通过Visual Studio的NuGet包管理器来进行安装。
在C#代码中,首先引入CefSharp命名空间: csharp using CefSharp; using CefSharp.WinForms;
在你的窗体或控件中,创建一个ChromiumWebBrowser实例来嵌入网页: csharp ChromiumWebBrowser browser = new ChromiumWebBrowser("https://www.example.com");
将ChromiumWebBrowser实例添加到窗体或控件中的布局中: csharp Controls.Add(browser); browser.Dock = DockStyle.Fill;
可选:如果需要在C#和Javascript之间进行通信,可以添加一个JSObject,用于作为C#和网页中的Javascript之间的桥梁: ```csharp public class MyJavascriptObject { public void MyFunction(string message) { // 在这里处理来自Javascript的调用 MessageBox.Show(message); } }
browser.JavascriptObjectRepository.Register("myObject", new MyJavascriptObject(), true); ```
csharp var result = await browser.EvaluateScriptAsync("document.getElementById('myElement').innerHTML"); if (result.Success && result.Result != null) { MessageBox.Show(result.Result.ToString()); }
以上就是使用CefSharp在C#中嵌入网页的基本步骤。具体实现还可以根据你的需求来进行调整和扩展。希望对你有帮助!
注:请先在NuGet包管理器中安装CefSharp系列的相关NuGet包,包括CefSharp.Common、CefSharp.WinForms等。
【相关推荐】
只能后端有#来写直接前后分离,vue是不能和c#通信,除非从底层写一下交互功能