最近miniblink的electron模式开发本来一切顺利,但昨天遇到一个大坑。
提起JavaScript,我们也许经常会想到的是,可以用来写Web页面嘛,又或者,会想起Node.js 这个服务端环境,搞前后端同构。
不像python、lua、java等语言有个专门的、独立的可执行程序,js虚拟机更多的时候是嵌入到某个宿主里头,比如浏览器、nodejs。js虚拟机实现了某个js标准(比如es5、es6),宿主能力也会通过一些api导出给js使用,比如浏览器的dom操作,nodejs的异步io等。
在 2021 年 star 排行榜单中,tauri 一年增长了 18k 排名第五,我们就很好奇,Tauri 有什么优势呢?
这个框架是两个挪威人在1995年创建的,发展至今可以说历史相当悠久,稳定性也很有保障。
经济学中的“有需求就有市场”,在技术领域也不例外,Electron 是应需求而生的,Electron 面世之后,非但满足了现有大部分的开发需求,还创造了大量的新需求,开辟了一个新的生态。
本文会讲 JS 引擎的编译流水线、渲染引擎的渲染流程,然后引入为什么需要 event loop。
项目需求 最近在开发一个 electron 程序,其中有用到和硬件通讯部分;硬件厂商给的是 .dll 链接库做通讯桥接, 第一版本使用 C 写的 Node.js 扩展 😁;由于有异步任务的关系,实现使用了 N-API 提供的多线程做异步任务调度, 虽然功能实现了,但是也有些值得思考的点。 纯 C 编程效率低,木有 trycatch 的语言调试难度也大 (磕磕绊绊的) 编写好的 .node 扩展文件,放在 electron 主进程中运行会有一定的隐患稍有差错会导致软件闪退 (后来用子进程隔离运行) 基于
Node.js (因为 V8)是执行 WASM 代码的天然容器,和浏览器 WASM 是同一运行时,同时 Node.js 支持 WASI。
不知不觉,九月就要过去,由于这个月工作上,被C++折磨得很难受,而且其他时间都在学习,所以没有时间写文章,好在技术提升很大。今天准备好好谈一谈重型应用的架构以及技术选型,为接下来我的正式架构设计做个铺垫。
Motrix 是一款开源免费的下载工具,支持下载 HTTP、FTP、BT、磁力链接、百度云网盘等资源,可以说是非常的全能,而且无广告。
https://juejin.im/post/5d8f3062e51d45782632e363
neovim 是一个专注于可扩展性和易用性的 Vim 分支。 该项目旨在对 Vim 进行积极的重构,以简化维护并鼓励贡献,实现多个开发者之间的工作分离,并使高级用户界面成为可能。 其主要功能、关键特性和核心优势包括:
前阵子将排课系统的一些功能,提供给 solar 编辑器使用,solar 是基于互动课件编辑器 Cocos ICE 进行二次定制和个性化开发的课件制作系统,其底层是 Cocos Creator。而 Cocos Creator 是基于 Electron 进行开发的,所以学习了一些关于 Electron IPC 通信的相关知识,在这里做一个总结。 文章的开始,先让我们来了解下 Electron 是什么。 1. 什么是 Electron? Electron 官网只有一句简单的话: 使用 JavaScript,HTM
React作为日常使用比较频繁的框架,这里就不详细说明了,这里主要是想通过几篇文章让大家快速上手Electron以及与React完美融合。
这个是上周三即12月15日发布的消息了,目前官方透露的信息很少,给了一个简陋的官网:https://zed.dev/
JavaScript从使用开初就一直基于事件循环的单线程运行模型,即使是成功进军后端开发的Nodejs也没有改变这一模型。那么对于计算密集型的应用,我们必须创建新进程来执行运算,然后执行进程间通信实现传参和获取运算结果。否则会造成UI界面卡顿,甚至导致浏览器无响应。 从功能实现来看,我们可以通过新增iframe加载同域页面来创建JSVM进程执行运算从而避免造成界面卡顿的问题。但存在如下问题:
从最开始我开始写文章就讲过Node.js与Java的优缺点,我当时说过,JAVA能做的如果非要使用Node.js最后肯定是能实现的,但是我们会考虑用什么更加适合。说到桌面应用程序,可能更多人会想到使用QT或者JAVA FX去实现,Node.js能实现桌面程序么?可能很多人对这个问题的答案抱着怀疑的态度。实际上Node.js现在生态圈越来越完善,所以用Node.js实际上可以非常轻松的架构一个桌面应用。今天我们来讲讲Node.js是如何构建一个桌面应用。
如果你可以建一个网站,你就可以建一个桌面应用程序。 Electron 是一个使用 JavaScript, HTML 和 CSS 等 Web 技术创建原生程序的开源框架,它负责比较难搞的部分,你只需把精力放在你的应用的核心上即可。
Electron是一个基于Chromium的桌面应用程序框架,它可以让开发人员在不需要熟练掌握Web开发技术的情况下,快速地开发出高质量的桌面应用程序。在Electron中,开发人员可以使用各种各样的数据存储方式,包括文件系统、数据库等。其中,数据库是一种非常常见的数据存储方式,它可以方便地存储和管理各种数据,包括文本、图片、音频、视频等。
1,修复electron模式下,菜单可能创建失败,以及菜单click事件无法响应的bug
1,修复pdf.js 打开文件的一处崩溃。原因是WebBlobRegistryImpl可能在web worker里被析构。要记得加锁
本文由vivo技术团队Yang Kun分享,原题“electron 应用开发优秀实践”,本文有修订。
当你想实现阻止Electron窗口关闭,并弹出询问对话框,提示用户:“文章尚未保存,是否要关闭窗口”这类业务时,那么你99%会碰到这个BUG:
1,完善electron的拖拽。里面细节较多,和wke模式不同的是需要处理多线程逻辑。
在团队中,我们因业务发展,需要用到桌面端技术,如离线可用、调用桌面系统能力。什么是桌面端开发?一句话概括就是:以 Windows 、macOS 和 Linux 为操作系统的软件开发。对此我们做了详细的技术调研,桌面端的开发方式主要有 Native 、 QT 、 Flutter 、 NW 、 Electron 、 Tarui 。其各自优劣势如下表格所示:
写在前面 微信小程序使用了前端技术栈 JavaScript/WXML/WXSS。但和常规的前端开发又有一些区别: JavaScript: 微信小程序的 JavaScript 运行环境即不是 Browser 也不是 Node.js。它运行在微信 App 的上下文中,不能操作 Browser context 下的 DOM,也不能通过 Node.js 相关接口访问操作系统 API。所以,严格意义来讲,微信小程序并不是 Html5,虽然开发过程和用到的技术栈和 Html5 是相通的。 WXML: 作为微信小程序的
大家吼,我是你们的朋友煎饼狗子——喜欢在社区发掘有趣的作品和作者。【每日精选时刻】是我为大家精心打造的栏目,在这里,你可以看到煎饼为你携回的来自社区各领域的新鲜出彩作品。点此一键订阅【每日精选时刻】专栏,吃瓜新鲜作品不迷路! *当然,你也可以在本篇文章,评论区自荐/推荐他人优秀作品(标题+链接+推荐理由),增加文章入选的概率哟~
electron是分主进程和渲染进程的; 渲染进程是主进程启动的; ./out/main.js显然这就是主进程的入口程序; 确实不假 但别着急去分析这个文件; 因为它是在out目录下,明显是什么东西输出出来的; 我们先打扫一遍src目录下的东西; 发现了tsconfig.json
随着现代技术的快速升级迭代及发展,桌面应用开发已经变得越来越普及。然而对于非专业桌面应用开发工程师在面对这项任务时,可能会感到无从下手,甚至觉得这是一项困难的挑战。
背景 在正式进入分享之前,简单介绍一下做这个小程序新框架的背景思路,主要目的有以下几点: 新框架和微信的主客户端解耦,能够独立运行,并且可以同时支持小程序和小游戏。 新框架能去拥抱更多的Web特性,深入到Chromium内核中,去支持更多平台。 还有一个目的就是,通过新框架去拓宽小程序生态的边界,能够在许多非移动端设备,提供微信小程序生态。 ---- 1 小程序和PWA 首先来了解一下小程序和PWA,可以说小程序设计之初,还是吸收了很多Web特性,这也使得小程序和PWA应用的用户体验很接近,包括技术
隋丰蔚,携程无线平台研发部前端工程师,现负责开发者工具NFES Developer Tools的设计与研发。
2,修复electron模式加载keymapping.node崩溃的问题。原因是default uv loop是在主线程最先调用。这个应该在node线程先调用才行。这个bug可能导致以前很多莫名其妙的问题
概述优点:缺点与 Python 前后台的构架对比:环境搭建第一个 electron 程序参考文档
公司有需求需要使用 electron 作为外壳包裹一个已存在的网站作为本地客户端使用,但是希望网站内打开外部应用时使用标签页的形式,如果你也有类似需求可以参考本文。
Electron很出名,很多人可能了解过,知道它是用来开发桌面端的应用,但是一直没有在项目中实践过,缺乏练手的实践项目。
用户把 JSON 数据 POST 给服务器,服务器再把数据中的 msg 取出来,返回给用户
《IMWeb前端月刊》会定期收集每月 IMWeb.io 社区精选好文、前端新闻、版本发布、技术大会,欢迎大家订阅。 IMWeb.io 社区精选好文 从渲染原理到性能优化 或许你正在使用或者了解了React,但你研究过它内部的渲染原理吗?文章详细讲述了react如何根据JSX生成element,element又如何生成真实DOM节点,并通过实际例子,讲解了如何优化组件。 网站性能优化实战 文章详细讲述了浏览器的架构与内核,探究了浏览器渲染机制、事件机制,并由此引出了网站性能优化的方案。 你不知道的 Elect
跨平台是最近几年非常火的主题,因为现在的各种平台简直太多了。Windows、macOS、Linux、Android、iOS、Web、小程序、IoT等等。以后还可能会不断增加。没人希望挨个为每个平台开发应用,所以就希望开发一次,就同时适应各种平台。目前支持跨平台开发的技术非常多。这里先对这些主要的跨平台技术做一个总结,然后再详细谈谈.NET 6 Preview1。
优点就是由于多实例机制,可以保证服务器的容错性,就算出现异常也不会使多个服务器实例同时崩溃。
在向你的应用程序添加一个 Node.js 模块之前,请检查这个模块。 这个模块包含了多少依赖? 简单的一个 require()声明中包含了什么种类的资源? 你可能发现NPM包注册的最多的或者Github上Star最多的模块实际上并不是最简单或者最小可用的模块。
昨晚搬砖回家看到 Peter 发了条朋友圈,腾讯云游戏平台 START 公测发布,他在用 MAC 打 LOL。我紧随其后体验了一波,毕竟 LOL 是我们这代人的青春,工作后很少有时间玩,用上 MAC 后,之前的游戏本也放在箱底很久了。
Electron 在运行时分为主进程和渲染器进程(渲染进程),主进程可以用NodeJS的 api,渲染进程可以用浏览器的 api
Tauri 和 Electron 都是用于开发跨平台桌面应用程序的工具,因为最近使用ChatGPT在国内环境的确不够友好,又没有一个比较轻量简洁的工具可用,如是想自己造个轻量点的轮子,力争做到代码轻量,界面美观简洁,打出的安装包小,请求ChatGPT速度快,会话安全,不被封号。实现玩之后的效果是这样:项目地址在 这里 https://github.com/bravekingzhang/tauri-chat-box
1,修复两处小崩溃,主要是多线程渲染页面时,devtools调试下断点再执行会触发。
昨天给大家介绍了 ElectronEgg 这款开源桌面应用开发框架。那么我们能不能搭配使用Python语言开发一套自己的工具箱呢!
领取专属 10元无门槛券
手把手带您无忧上云