金牛座与电子#137

简介: 金牛座与电子#137

金牛座


什么是 Tauri ?

Tauri 是一个为所有主流桌面平台构建小型、快速二进制文件的框架。开发人员可以集成任何编译成 HTML、 JS 和 CSS 的前端框架来构建他们的用户界面。应用程序的后端是一个 Rust 二进制文件,具有前端可以与之交互的 API。


安装方式

Xcode

$ xcode-select --install


$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

安装过程中如果报错curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused

需要开启代理:

# 7890 和 789 需要换成你自己的代理端口
$ export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:789

要确保 Rust 已成功安装,请运行以下命令

$ rustc --version
$rustc 1.59.0 (9d1b2106e 2022-02-23)


启动一个新的 Tauri

$ yarn create tauri-app

创建项目的时候,如果报错An unexpected error occurred: "https://registry.yarnpkg.com/create-vite: tunneling socket could not be established

同样的,需要开启代理,使用:

$ yarn config set proxy http://username:password@host:port
$ yarn config set https-proxy http://username:password@host:port

按照说明选择您喜欢的 前端框架, 根据您的输入创建模板项目,之后你可以直接去检查Webcreate-tauri-apptauri info


启动

$ yarn tauri dev


打包

$ yarn tauri build


电子


什么是 电子 ?

Electron 框架允许您使用 JavaScript、HTML 和 CSS 编写跨平台的桌面应用程序。它基于Node.js和 Chromium,并被Atom 编辑器和许多其他应用程序使用。


安装方式

创建项目

$ mkdir my-electron-app && cd my-electron-app
$ yarn init

修改 ,"main" 字段为 ,你的 应该是如下样子:package.jsonmain.jspackage.json

{
  "name": "my-electron-app",
  "version": "1.0.0",
  "description": "Hello World!",
  "main": "main.js",
  "author": "Jiang Chen",
  "license": "MIT"
}

Electron

$ yarn add --dev electron

执行 。在 配置字段 ,添加 如下命令Electronpackage.jsonscriptsstart

{
  "scripts": {
    "start": "electron ."
  }
}


根目录新增 main.js

代码如下

// main.js
// Modules to control application life and create native browser window
const { app, BrowserWindow } = require('electron')
const path = require('path')
const createWindow = () => {
  // Create the browser window.
  const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js')
    }
  })
  // and load the index.html of the app.
  mainWindow.loadFile('index.html')
  // Open the DevTools.
  // mainWindow.webContents.openDevTools()
}
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.whenReady().then(() => {
  createWindow()
  app.on('activate', () => {
    // On macOS it's common to re-create a window in the app when the
    // dock icon is clicked and there are no other windows open.
    if (BrowserWindow.getAllWindows().length === 0) createWindow()
  })
})
// Quit when all windows are closed, except on macOS. There, it's common
// for applications and their menu bar to stay active until the user quits
// explicitly with Cmd + Q.
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') app.quit()
})
// In this file you can include the rest of your app's specific main process
// code. You can also put them in separate files and require them here.


根目录新增 index.html

代码如下

<!--index.html-->
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
    <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
    <meta http-equiv="X-Content-Security-Policy" content="default-src 'self'; script-src 'self'">
    <title>Hello World!</title>
  </head>
  <body>
    <h1>Hello World!</h1>
    We are using Node.js <span id="node-version"></span>,
    Chromium <span id="chrome-version"></span>,
    and Electron <span id="electron-version"></span>.
    <!-- You can also require other files to run in this process -->
    <script src="./renderer.js"></script>
  </body>
</html>


根目录新增 renderer.js

代码如下

window.addEventListener('DOMContentLoaded', () => {
  const replaceText = (selector, text) => {
    const element = document.getElementById(selector)
    if (element) element.innerText = text
  }
  for (const type of ['chrome', 'node', 'electron']) {
    replaceText(`${type}-version`, process.versions[type])
  }
})


启动

$ npm run start


打包

添加 Electron Forge 作为应用程序的开发依赖项

$ cnpm install --dev @electron-forge/cli
$ npx electron-forge import

make使用 Forge 的命令创建一个打包

$ yarn run make


两者区别


  1. 大小对比
  • Electron 官方介绍有提到,它基于 Node.js 和 Chromium,很明显的问题,包太大(62.5mb)使用 Chromium 的决定,也是解决 WebView 暂时无法解决的一些兼容性问题
  • Tauri,前端是通过系统的 WebView2,后端使用 Rust,包很小(4.32MB)
  1. 官方文档
  • Electron 官方文档和社区迭代,目前比较稳定,发布了多个版本,可以稳定在生产使用
  • Tauri 作为一款新型桌面端开发框架,1.0.0 版本暂时未出,可以持续关注,尝试做些小工具

总结


Tauri 作为一款新型桌面端开发框架,踩在了 Rust 和 WebView2 的两位巨人的肩膀上,可以说是时代的产物,Rust 近几年非常受欢迎,Deno 采用 Rust,微软拥抱 Rust 等,微软又开始推广 WebView2,天然的优势

目录
相关文章
|
传感器 存储 监控
常用电子元器件
常用电子元器件的介绍 一、电阻器(Resistor) 电阻器是一种用来限制电流流动的元件,它的主要作用是通过消耗电能将电流限制在一个特定的范围内。电阻器的阻值单位是欧姆(Ω),常用的电阻器有固定电阻器和可变电阻器两种。固定电阻器的阻值是固定不变的,而可变电阻器可以通过调节旋钮或滑动杆来改变其阻值。 二、电容器(Capacitor) 电容器是一种用来存储电荷的元件,它的主要作用是在电路中提供临时的电荷储存和释放功能。电容器的容值单位是法拉(F),常用的电容器有固定电容器和可变电容器两种。固定电容器的容值是固定不变的,而可变电容器可以通过调节旋钮或滑动杆来改变其容值。 三、电感器(Induc
152 0
|
4月前
|
传感器 监控 安全
eFuse电子保险丝
热保险丝作为一种基本的电路保护器件,已经成功使用了150多年。热保险丝有效可靠、易用,具有各种不同的数值和版本,能够满足不同的设计目标。然而,对于寻求以极快的速度切断电流的设计人员来说,热保险丝不可避免的缺点就是其自复位能力,以及在相对较低的电流下的工作能力。对于这些设计人员来说,电子保险丝(通常用eFuse或者e-Fuse表示)是一种很好的解决方案,有时还可以取代热保险丝,但通常是对热保险丝功能的补充。 eFuse基于一个简单概念,即通过测量已知电阻器上的电压来检测电流,然后在电流超过设计限值时,通过场效应晶体管(FET)切断电流。eFuse具有热保险丝无法实现特性、灵活性和功能。 本文
eFuse电子保险丝
|
6月前
|
传感器 监控 安全
eFuse电子保险丝,需要了解的技术干货来啦
电子保险丝(eFuse)作为热保险丝的升级版,提供更快的反应速度(微秒至纳秒级)、低电流操作、可复位功能、反向电流和过压保护等优势。它们常用于需要快速保护的场景,如热插拔、汽车应用、PLC和电池管理。eFuse可以选择锁定或自动重启模式,根据应用需求调整。虽然可以使用分立组件构建基本的eFuse,但完整的IC解决方案更紧凑、稳定且功能丰富,通常包含多种保护特性,并已通过安全认证,适用于USB终端、笔记本电脑、服务器、可穿戴设备等多种应用。
182 4
|
存储 前端开发 JavaScript
完整电子病历源码
这是一套SaaS模式Java语言开发的云HIS系统的子系统云电子病历,本系统采用前后端分离模式开发和部署,支持电子病历四级,纯源码,支持二次开发。
753 1
完整电子病历源码
|
存储 前端开发 JavaScript
电子病历编辑器源码 B/S电子病历系统源码
医生工作站的病历编辑、护士工作站的护理记录录入、报告编辑打印、病案首页、出院小结、病程记录、手术记录、各种知情书、康复及精神学科用的量表、临床路径用表单界面等。 编辑器具备基本样式排版、多媒体资源上传、患者病历信息自动同步、护理表格数据自动计算等功能,让医护人员的操作更简单、灵活,为医护人员提供更好的交互体验。
221 0
电子病历编辑器源码 B/S电子病历系统源码
|
传感器 人工智能 小程序
电子班牌是什么?电子班牌云平台源码开发技术?
电子班牌是一种智能交互终端,电子班牌可以解决“走班教学”考勤管理问题,将大数据、物联网和人工智能等新兴技术和教学管理工作融合,提升学校管理水平和管理效率。
106 0
|
存储 数据管理
电子病历源码 MER医院电子病历系统源码
电子病历系统功能总览 模板制作、样式控制、数据存储、控件管理、表格管理、图片管理、页面布局、打印设置、 病历书写、样式控制、控件输入、病历质控、数据同步、个人模板、病历打印、辅助输入 视图层:数据存储、图片管理、页面布局 字体设置:控件管理、预定义控件、自定义控件、打印模块、常规打印、PDF打印、段落设置 表格管理 病历:辅助输入:当前日期、当前时间、医师签名、单位符号、检验报告、整体复制 逻辑控制层:模板数据上传和下载、控件数据管理服务、配置文件载入、PDF打印、 个人病历模板上传和下载、病历数据上传和下载、数据同步服务、病历质控服务、 人员相关信息管理服务、历史病历数解析
347 0
电子病历源码 MER医院电子病历系统源码
|
前端开发 JavaScript 搜索推荐
电子病历系统源码 EMR电子病历源码 医院电子病历系统 B/S架构 JAVA开发
后端技术选型:SpringBoot框架、Mybatis-Plus、WebSocket、Stomp、Vintage-Engine 前端技术选型:原生HTML、JS、CSS,Jquery、BootStrap、layui、Swf插件、Clipboard剪切板、Echarts、PagedJS打印插件、Prince打印插件、Wkhtmltopdf打印插件等。
470 0
电子病历系统源码 EMR电子病历源码 医院电子病历系统 B/S架构 JAVA开发
|
BI 流计算
“电子“ ”“”哪里有
“电子“ ”“”哪里有此外,为了帮助大家更加深入了解EMR StarRocks,我们推出了EMR StarRocks 白皮书,供各位小伙伴学习参考,免费下载! 白皮书下载:https://developer.aliyun.com/ebook/7585 内容一览表: ? StarRocks 新?代极速全场景 MPP 数据仓库 ? StarRocks 简介 ? StarRocks 架构 ? StarRocks 特性 ? StarRocks ?态与?具 ? 数据迁移 ? 数据摄? ? 湖仓?体 ? StarRocks X Flink ?态 ? StarRocks 场景解决?案 ? 固定报表业务 ?
|
传感器
可随身携带的电子乐队
可随身携带的电子乐队
可随身携带的电子乐队
下一篇
DataWorks