任何可以用 JavaScript 编写的应用程序最终都将用 JavaScript 编写。
——杰夫·阿特伍德
别担心,看起来像这样
明天我们不会谈论 Electron,而是谈论 Proton Nativejavascript应用程序,并使用它来制作一个简单的原生应用程序。
与 Eletron 应用程序不同,使用 Proton Native 构建的应用程序实际上是本机应用程序,而不是基于 Web 的 Chromium。
Proton Native 与 React Native 类似,但更适合桌面应用程序。 开发完成后,它会被编译为本机平台代码,因此它看起来像本机应用程序一样运行。
现在我们知道了这么多,让我们开始吧。
Windows系统
要安装完整的工具javascript应用程序,请使用以下命令:
npm install --global --生产 windows-build-tools
Linux系统
Linux系统下,需要准备以下第三方库:
1. libgtk-3-dev
2.构建必备
苹果系统
Mac用户有这么一点点幸福,他们不需要任何东西,直接运行以下命令即可:
npm install -g 创建质子应用程序
然后运行:
创建质子应用程序我的应用程序
然后开始构建一个新项目。
打开该项目的目录,然后打开您喜欢的任何编辑器。 你会看到项目的目录结构如下所示:
└────node_modules
├────.babelrc
├────index.js
├────package.json
└────package-lock.json
其中index.js是这样的:
看起来很像 React/React Native 文件
就像任何 React 或 React Native 项目一样,我们需要导出相应的库并创建类组件。
App 元素只是窗口和菜单的容器。 表单有三个属性:title(表单标题)、size(包括表单对象的长度和高度)和menuBar(一般设置为false,我们不需要菜单栏)。
接下来我们开始编写代码。 接下来使用 npm 命令安装 crypto。
npm 我加密
我们使用 crypto 的 MD5 算法对一段文本进行哈希处理。
索引.js 文件
从“react”导入 React, { Component };
从“proton-native”导入 { render, Window, App, Box, Text, TextInput };
从“加密货币”导入加密货币;
类示例扩展组件 {
状态 = { 文本: "", md5: "" };
哈希=文本=> {
this.setState({ 文本 });
让 md5 = 加密
.createHash("md5")
.update(文本,“utf8”)
.digest(“十六进制”);
this.setState({ md5 });
};
使成为() {
返回 (
title="质子原生岩石!"
尺寸={{宽:300,高:300}}
菜单栏={假}
this.hash(文本)} />
{这个.state.md5}
);
使成为();
我们首先导出 Text 和 TextInput 组件,以便稍后引用它们。 接下来,将状态对象的 text 和 md5 设置为空字符串。 为此,我们创建一个带有文本参数的哈希函数。
在哈希函数中,我们将状态设置为文本,并声明密文以md5的形式存储。 如下所示:
this.setState({ 文本 });
让 md5 = 加密货币。 创建哈希(“md5”)
.update(text, "utf8").digest("hex");
接下来去设置状态对象来更新md5。
this.setState({md5});
render 方法将返回一些 jsx 元素。 Box 元素就像 React 中的 div,或者 React Native 中的 View 层。 它包含TextInput和Text,因为window元素不允许父元素有多个子元素。
TextInput 有一个 onChange 属性,每次文本更改时也会调用此技巧。 为此,我们将其设为一个胖箭头函数,它接受文本参数并返回我们声明的哈希函数。
因此,每次文本发生变化时,都会通过MD5方法对文本进行加密。 接下来,让我们运行它:
cd 我的应用程序
npm 运行开始
它将显示这样的表单(如果没有,请自行检查):
然后,如果我们输入一些文本,经过 md5 处理的哈希字符串将显示在底部。
想必您会说,“这个窗口看起来真的很难看,让我们添加一些样式”。 嗯,确实如此。 在撰写本文时,Proton Native 仍处于起步阶段,现在它和我们一样正在成长。 从目前来看,Proton Native 不支持样式,但它是一个值得使用的有趣项目。
如果您想为该项目做出贡献,请在 Repo 库中查看:
如果您还有其他问题或建议,或者您也是JavaScript后端高手,欢迎贡献/评论或通过网站联系我们,欢迎点赞!