Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微软的混合开发解决方案 WebView2

微软的混合开发解决方案 WebView2

作者头像
程序那些事儿
发布于 2023-03-07 03:42:45
发布于 2023-03-07 03:42:45
1.9K0
举报
文章被收录于专栏:程序那些事儿程序那些事儿

混合开发

我们都知道对于桌面应用开发来说,人们常用的方式就是采用c++或者c#,java等进行开发,然而这些语言开发效率不够高,不如网页开发灵活。因此,人们思考能否采用html+css+js的方式来开发桌面客户端呢,于是人们就提出了混合开发概念,并且开发了electron框架进行桌面开发。

提到electron开发的桌面应用,就不得不提vscode,这个采用css+js+html开发的编辑器从诞生以来就逐渐占据市场的份额,现在几乎绝大部分的前端开发者都采用vscode进行开发,而且也有很多后端开发者逐渐采用vscode进行后端开发,可以说vscode证明了electron也可以开发出优秀的桌面程序。当然,除了vscode之外,whatsapp和twitch还有slack也是采用electron开发的。

webview2

webview2是微软推出的一组控件,它可以让本地应用程序轻松嵌入web技术。WebView2 控件使用Microsoft Edge作为呈现引擎在本机应用程序中显示 Web 内容。使用 WebView2,您可以将 Web 代码嵌入到本机应用程序的不同部分,或在单个 WebView 实例中构建所有本机应用程序。

Webview2 应用程序允许广泛的覆盖范围。作为 Web 开发人员,您可以跨不同平台重用大部分代码。对于要访问本机平台的所有功能,则推荐直接使用本机应用程序。

webview2 由来

之所以称为 WebView2,是因为它取代了 WebView 控件,而后者又取代了 WebBrowser 控件,老派 Win32 开发人员可能还记得。WebView 使用原始的 Edge (Trident) 渲染引擎,是 Windows10 唯一的控件。WebView2 使用较新的 Edge 渲染引擎,并支持更多 Windows 平台。

webview2优点

  • 丰富的网络生态,因为采用web技术,因此丰富的web框架和库都可以拿来直接使用。
  • 迭代和更新变得异常方便
  • 提供了全套访问本地的功能接口。
  • 多个平台的代码可以复用,一套代码多个平台。
  • 微软官方支持开发和维护。
  • 多个版本控制,可以选用不同的chromium进行打包。

webview2使用方式

  • 通过安装开发版的Edge (Chromium),可以支持webview2的开发。
  • 安装独立的WebView2 Runtime,它可以独立下载和升级
  • 将Edge chromium内核嵌入到程序之中。

webview2 vs electron

Electron 为常见的桌面应用程序需求提供 API,例如菜单、文件系统访问、通知等。

WebView2 是一个组件,旨在集成到 WinForms、WPF、WinUI 或 Win32 等应用程序框架中。

Node.js 被集成到 Electron 中。Electron 应用程序可以使用来自渲染器和主进程的任何 Node.js API、模块或 node-native-addon。

WebView2 应用程序支持嵌入到多种编程语言之中。您的 JavaScript 代码必须通过应用程序主机进程代理执行访问操作系统。

Electron 努力保持与 Web API 的兼容性。

Electron 具有可配置的 Web 内容安全模型,从完全访问到完全沙盒。WebView2 内容始终被沙盒化.

webview2未来

目前的webview2还只是支持windows的各个版本预览,未来,webview将会支持UWP 预览 ,macOS 预览,Xbox 预览,HoloLens 预览,Linux 预览,总之,webview2未来可期。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序那些事儿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
阿里问题定位神器 Arthas 的骚操作,定位线上BUG,超给力!
公司有个渠道系统,专门对接三方渠道使用,没有什么业务逻辑,主要是转换报文和参数校验之类的工作,起着一个承上启下的作用。
程序员小强
2020/03/23
1.3K0
阿里问题定位神器 Arthas 的骚操作,定位线上BUG,超给力!
Spring MVC介绍(二)之 Spring MVC 执行流程解析
此时启动容器,访问 http://localhost:8080/spring_mvc/beanName ,可以看到显示的是我们control返回的数据。
zoro
2019/04/11
5220
Spring MVC介绍(二)之 Spring MVC 执行流程解析
聊聊springboot tomcat的maxHttpFormPostSize
本文主要研究一下spring boot tomcat的maxHttpFormPostSize参数
code4it
2023/08/17
6880
原理解读:Spring MVC统一异常处理
当前,Spring统一异常处理机制是Java开发人员普遍使用的一种技术,在业务校验失败的时候,直接抛出业务异常即可,这明显简化了业务异常的治理流程与复杂度。值得一提的是,统一异常处理机制并不是Spring Boot提供的,而是Spring MVC,前者只是为Spring MVC自动配置了刚好够用的若干组件而已,具体配置了哪些组件,感兴趣的读者可以到spring-boot-autoconfigure模块中找到答案。
程序猿杜小头
2022/12/01
1.3K1
原理解读:Spring MVC统一异常处理
chaos-monkey-spring-boot小试牛刀
chaos-monkey-spring-boot是专门为Spring Boot打造的Chaos Monkey
code4it
2018/09/17
1K0
springboot之mvc原理(一)-请求处理
springboot出现以后,我们搭建spring应用的复杂度大大降低,仅仅需要简单的注解和若干配置类就能构建简单的应用,这些都依赖于springboot默认集成了一整套的spring核心组件,比如在新版本的springboot的中,web和aop能力是完全不用配置和注解开始就能直接使用,这也是springboot设计和存在的初衷,尽可能大的程度上降低spring应用搭建和配置成本,将研发人员的主要精力尽可能投入在业务开发中。
叔牙
2020/11/19
2.9K0
springboot之mvc原理(一)-请求处理
.MysqlDataTruncation: Data truncation: Data too long for column 'content' at row 1
版权声明:本文为博主原创文章,欢迎转载。 https://blog.csdn.net/chengyuqiang/article/details/89037174
程裕强
2019/07/02
1.6K0
.MysqlDataTruncation: Data truncation: Data too long for column 'content' at row 1
还在使用kill -9 pid结束spring boot项目吗?那你已经落伍了!
kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或jobs指令查看(这段话来自菜鸟教程)。
肉眼品世界
2021/01/25
9130
还在使用kill -9 pid结束spring boot项目吗?那你已经落伍了!
URL 解析与鉴权中的陷阱 —— Spring 篇
在上一篇文章中介绍了 Java Web 应用中 URL 解析与鉴权认证中的常见陷阱,但主要针对 Servlet 容器进行分析。前文末尾也提到了,当前 Web 应用多是使用 Spring 全家桶进行开发,其路由匹配方式又与传统 Web 容器有所差异,因此本文就对其进行分析。
evilpan
2023/10/17
1.5K0
URL 解析与鉴权中的陷阱 —— Spring 篇
spring(错误一) spring mvc上传多张图片,报错:java.lang.NoSuchMethodException解决方案
出现这个错误的原因是 在方法里面 MultipartFile[] files没有加入@RequestParam;
Java架构师必看
2021/05/31
5070
IDEA 新建 Spring MVC 工程项目与 SpringMVC 运行流程
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ajianyingxiaoqinghan/article/details/80727200
剑影啸清寒
2019/05/29
3.9K0
聊聊springcloud的serviceRegistryEndpoint
本文主要研究一下springcloud的serviceRegistryEndpoint
code4it
2018/09/17
1.4K0
springboot2.0配置多数据源出错HikariPool-1 - jdbcUrl is required with driverClassName.
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
suveng
2019/09/18
3.4K0
初学Spring Cloud踩坑之org.springframework.web.client.HttpClientErrorException: 400 null
初学Spring Cloud踩坑之org.springframework.web.client.HttpClientErrorException: 400 null
Java架构师必看
2021/05/14
1.7K0
springBoot系列教程07:异常捕获
发生异常是很正常的事,异常种类也是千奇百怪,发生异常并不可怕,只要正确的处理,并正确的返回错误信息并无大碍,如果不进行捕获或者处理,分分钟服务器宕机是很正常的事
肖哥哥
2018/08/02
8910
springBoot系列教程07:异常捕获
springcloud踩坑
直到我看见了 服务提供方的报错 一下子我就明白了 我数据库服务没开!!!!!!!!!!! 这里只是想分享以下踩坑经验 希望大家不要像我一样粗心
暴躁的程序猿
2022/03/24
3590
Spring Cloud Config Server迁移节点或容器化带来的问题
为了说明下面的内容,我们可以先尝试重现一下问题:在一个测试环境中,将Spring Cloud Config的配置中心迁移到另外一个节点上,即配置中心的IP地址发生了变化。在完成迁移之后,我们会发现该环境下各个微服务应用的健康状态会变得时好时坏,并且在日志中会出现类似下面的报错:
程序猿DD
2018/07/31
1.3K0
Spring Cloud Config Server迁移节点或容器化带来的问题
Swagger-ui在文件上传时报错net::ERR_CONNECTION_RESET
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
yingzi_code
2019/08/30
2K0
feign.FeignException$MethodNotAllowed: status 405 reading xxx#yyy(Integer)
使用feign 调用异常 feign.FeignException$MethodNotAllowed: status 405 reading ConsumerService#findById(Integer)
时间静止不是简史
2020/07/27
2.2K0
feign.FeignException$MethodNotAllowed: status 405 reading xxx#yyy(Integer)
SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after
SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30001ms.
二十三年蝉
2018/10/11
7.4K0
SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after
推荐阅读
相关推荐
阿里问题定位神器 Arthas 的骚操作,定位线上BUG,超给力!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档