Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用Vue构建桌面应用程序:Vuido

使用Vue构建桌面应用程序:Vuido

作者头像
知忆
修改于 2021-06-07 02:13:37
修改于 2021-06-07 02:13:37
1.5K0
举报
文章被收录于专栏:linux百科小宇宙linux百科小宇宙

我非常喜欢Vue。这是个优秀的框架,可以帮助我们搭建完美的web应用程序。但真正神奇的地方是你不仅仅可以用它搭建web应用程序,还可以使用Weex或NativeScript-Vue创建本地移动应用程序。你还可以选择Electron或Vuido库,搭建桌面应用程序。在本文中,我将介绍如何使用Vuido库创建本地应用程序。

Vuido是一款基于Vue.js的框架,由Michał Męciński开发,用于创建本地桌面应用程序。使用Vuido开发的应用程序可以运行在Windows、OS X和Linux平台,使用本地的GUI组件,不需要Electron库。

Vuido使用为每款桌面平台提供本地GUI组件的libui库,以及Node.js的libui-node绑定。

我们将搭建什么?

为了便于介绍,我们将开发一款简单的应用程序,用于查看你指定城市的当前天气。我们将使用OpenWeatherMap API获取真实数据。

如果你想查阅完整的代码,请点击这里。

安装

正如Vuido文档所述,要开发桌面应用程序有些预先条件。根据平台的不同,预先条件也不同:

Windows平台

windows-build-tools

Visual Studio 2013的Visual C++ Redistributable

Linux平台

build-essential

GTK+ 3

OSX平台

Xcode

我将使用OSX平台来开发,我已经安装了Xcode了。

同时,你还需要安装vue-cli。(如果你要使用Vue CLI 3,你还需要@vue/cli-init。)

运行以下的命令创建新项目:

vue init mimecorg/vuido-webpack-template my-project

在安装完成之后,你将在src文件夹中发现MainWindow.vue组件,代码如下所示:

Welcome to your Vuido application!

然后运行build和start指令,你将看到非常简单的桌面应用程序窗口:

接下来,我们就可以创建有趣的程序了。

搭建应用程序

首先你需要了解Vuido使用本地组件。因为没有我们熟悉的HTML标签和CSS样式,只有一组本地的GUI组件,可以与不同桌面平台兼容。Vuido搭建的应用程序在每个平台都有原生的感觉。

这有利有弊,因为你不能搭建完全定制化外观的应用程序,但是它比用Electron搭建的应用程序更加轻量级,且速度更快。

内置组件的完整列表可以在Vuido文档的这一部分找到。

我最初想创建一个可以显示用户指定城市天气情况的应用程序,以便我可以测试简单的用户交互和API调用。首先我需要一个有按钮的输入框。同时,我将窗口大小调整为400x150px:

Search

要让输入框和按钮水平对齐,并在它们之间保持点距离,我们需要一个有horizontal和padded属性的容器。Box和HTML的div元素相似,它就像包含组件并对齐组件的包装器。

TextInput是输入框,它的stretchy属性表示它可以根据填充所需的空间拉伸。

现在我们的应用程序看起来是这样的:

现在向组件数据添加query属性,为输入框的该属性设置为v-model。同时,如果没有输入字符串,我们应该禁用按钮。这对我来说很棘手,因为我试了非常熟悉的disabled属性,但实际上在Vuido中应该使用enabled属性。所以我们的输入框现在是这样的:

Search

实现API调用

接下来我们需要根据给定的城市查询字符串来获取当前的天气情况。

我使用OpenWeatherMap API来获取天气数据。它提供了很多内容,但我们只需要Current weather data这一部分。你可以在这里测试JSON响应示例。

所以,要想获得数据,我需要添加axios库:

npm install --save axios

然后导入它,设置好base URL和OpenWeatherMap API key变量:

import axios from 'axios';

axios.defaults.baseURL = 'http://api.openweathermap.org/data/2.5'

const apiKey = process.env.API_KEY;

之后,我们要添加一些天气数据的新属性,以及从API获取数据的方法:

export default {

data() {

return {

query: '',

error: false,

city: '',

country: '',

weatherDescription: '',

temp: null,

tempMin: null,

tempMax: null,

humidity: null,

};

},

methods: {

exit() {

this.$exit();

},

showWeather() {

axios

.get(

`/weather?q=${this.query}&units=metric&&appid=${apiKey}`,

)

.then(response => {

this.city = response.data.name;

this.country = response.data.sys.country;

this.weatherDescription = response.data.weather[0].description;

this.temp = response.data.main.temp;

this.tempMin = response.data.main.temp_min;

this.tempMax = response.data.main.temp_max;

this.humidity = response.data.main.humidity;

this.error = false;

})

.catch(() => {

this.error = true;

this.city = '';

});

},

},

};

现在需要给按钮添加新的方法,改变模板,展示所有的数据,或在输入的字段不能匹配任何现有城市的时候给出报错信息。

Search

There is no such city in the database

{{city}}, {{country}}

{{temp}}°C

{{weatherDescription}}

Min: {{tempMin}}°C

Max: {{tempMax}}°C

Humidity: {{humidity}}%

正如你所看到的,第一个框是我们在前面创建的输入容器。下面是Separator,一条分割不同部分的水平线。接下来是Group,这是个有边框的内容容器。

在Group中你将会看到组合好的许多组件:包含简单文字内容的Text,作为容器的Box以及Separator。现在你的应用程序看起来是这样的:

封装

我认为封装Vuido应用程序最简单最好的方式是库作者推荐的一个方法。他建议使用他自己的LaunchUI和LaunchUI Packager库来封装,并分发应用程序给最终用户。

我已经安装了LaunchUI Packager:

npm install --global launchui-package

之后我要在应用程序root文件夹运行以下指令:

launchui-packager weather-app 1.0 dist/main.min.js

上面的指令中,weather-app是应用程序名称,1.0是版本信息,dist/main.min.js是绑定文件的路径。

下面是我的应用程序的文件夹,大小是39Mb,这比作者所说的要多(文档中说最多20Mb),但也没多得太离谱。

如果你试着运行,你会发现它启动得非常快(0.1秒左右)。

总结

优点:

容易搭建

和Electron应用程序相比,封装后的大小非常小

文档很完善

缺点:

外观不好看

还没有正式发布(当前版本是0.2.0)

如果你需要搭建基础外观的小型快速应用程序,Vuido是一个很好的选择。它有非常清晰的文档,可能之后内置的组件会变得更多。

本文作者

Natalia Tepluhina

是热爱VueJS的前端开发人员。她还是Vue Vixens的CTO,Noob大会的讲师。

查看英文原文

:Building a Desktop App with Vue: Vuido

本文系转载,前往查看

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

本文系转载,前往查看

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用 Vanilla JavaScript 框架创建一个简单的天气应用
大家好,不知道大家听说过 Vanilla JavaScript 这款 框架吗?最近我在浏览国外的一些技术网站时,这个词出现的频率实在是在太高了,好多框架都宣称自己是基于 Vanilla JavaScript。那到底什么是 Vanilla JavaScript 呢?
前端达人
2020/02/27
1.8K0
使用 Vanilla JavaScript 框架创建一个简单的天气应用
【愚公系列】《循序渐进Vue.js 3.x前端开发实践》054-案例:天气预报应用
随着科技的快速发展和移动互联网的普及,天气预报应用成为了日常生活中不可或缺的一部分。无论是计划出行、安排户外活动,还是关注气候变化,准确的天气信息都能帮助我们做出更明智的决策。在这个背景下,我们将通过一个具体的案例,深入探讨如何开发一款功能丰富、用户友好的天气预报应用。
愚公搬代码
2025/06/02
830
【愚公系列】《循序渐进Vue.js 3.x前端开发实践》054-案例:天气预报应用
用 Node.js 的 16 行代码创建一个简单的天气 App
- Node.js : 如果没有安装 Node,请到官网 Node.js website 下载并安装。如果这样的项目你感兴趣并且你也在寻找 Node 更深入的教程请查看另一篇文章 Top Three Node.js courses
疯狂的技术宅
2019/03/28
2.2K0
用 Node.js 的 16 行代码创建一个简单的天气 App
前端Demo|在vue里用axios发送网络请求获取异步数据|适合学习vue框架的同学
在了解异步请求之前,我们先了解一下他的“兄弟”--同步请求。在同步请求中,浏览器是直接向服务器发送请求,并直接接收、处理服务器响应的数据的。在服务器处理响应请求期间,浏览器是无法完成其他工作的。就像我们有时候无法一心二用一样。
微笑的小小刀
2022/04/12
1.5K0
前端Demo|在vue里用axios发送网络请求获取异步数据|适合学习vue框架的同学
Android 天气APP(十九)更换新版API接口(更高、更快、更强)
近段时间,和风天气上线了新的API版本,并且给所有的和风开发者发送了邮件,好像是7月10号,哪个时候我去看了一下,发现改动还是有的,和风天气V7版开发API文档,并且提到之前的版本也就是和风天气S6版开发API文档这个S6的版本会在2020年12月31日下线且不再提供技术支持,我相信之前看到文章的朋友都是用的S6的API接口,虽然离下线还比较早,但是尝试新鲜的API也是极好的,本来之前就想写关于API改动变化的,但是天不随人愿,工作上增加了任务,无法抽身,文章也是利用碎片时间来写的OK,话不多说了,进入正题吧。
晨曦_LLW
2020/09/25
3.3K0
Flutter开发多端天气预报App:一场奇妙的编程之旅
在启程前,我们需要搭建好我们的开发环境。这可能有些复杂,特别是当你想要搭建一款 Android、Windows 等多端应用时,除了安装我们所必须的 Flutter 与 IDEA,还需要安装 Android Studio、Visual Studio 等中可以将软件编译到各种平台的编译环境。这些环境的官方文档中有详细的安装教程,简单明了,小白也能轻松上手。
繁依Fanyi
2024/03/20
3091
Flutter开发多端天气预报App:一场奇妙的编程之旅
Flutter 开发多端天气预报App:一场奇妙的编程之旅
在这个信息爆炸的时代,我们渴望获取最新的天气信息,以便更好地规划我们的生活。而作为程序员的我们,又怎能错过用技术手段打造一款个性化、便捷的天气预报App呢?在本篇博客中,我将带你踏上一场奇妙的编程之旅,使用Flutter框架开发一款支持多端的天气预报App。
繁依Fanyi
2024/01/18
5940
鸿蒙eTS版《坚果天气》
默认支持https,如果要支持http,在entry下的config.json中deviceConfig字段下配置
徐建国
2022/12/05
9650
鸿蒙eTS版《坚果天气》
前端构造桌面级应用(QQ音乐)
https://blog.csdn.net/weichuang_1/article/details/48849335
念念不忘
2019/03/29
2.9K0
前端构造桌面级应用(QQ音乐)
vue 打包桌面应用 并发布
版权声明:原创不易,多多珍惜 https://blog.csdn.net/wonaixiaoshenshen/article/details/88744534
我乃小神神
2019/07/02
1.5K0
vue 打包桌面应用 并发布
使用Electron创建跨平台桌面应用
开发和维护一个桌面应用是比较复杂的,所以可以理解现在的公司门为何推动WEB应用或者各种跨平台版本,在过去的十几年里,已经有了很多尝试,Flash、Air、Java和Sliverlight,他们都各自取得了不同程度的成功
疯狂的技术宅
2019/03/27
1.6K0
使用Electron创建跨平台桌面应用
Node.js实现桌面应用
从最开始我开始写文章就讲过Node.js与Java的优缺点,我当时说过,JAVA能做的如果非要使用Node.js最后肯定是能实现的,但是我们会考虑用什么更加适合。说到桌面应用程序,可能更多人会想到使用QT或者JAVA FX去实现,Node.js能实现桌面程序么?可能很多人对这个问题的答案抱着怀疑的态度。实际上Node.js现在生态圈越来越完善,所以用Node.js实际上可以非常轻松的架构一个桌面应用。今天我们来讲讲Node.js是如何构建一个桌面应用。
创译科技
2019/05/30
8.8K0
electron 构建跨平台桌面应用
昨日(2016.09.13)本文发表后,获得了一定的阅读和转发量,但经部分网友反馈和仔细审核后发现,在与 NW.js 对比的环节,言辞欠妥,且数据的真实性有待考究,特此将争议部分删除,同时借此诚挚地向 NW.js 的作者以及各位读者反馈表示感谢,期待更多深入的交流和分享,修订后的版本如下: Stack Overflow 联合创始人 Jeff Wood 曾说过,任何一个能用 JavaScript 编写的应用系统,最终都必将使用 JavaScript 实现。 简介 Electron 是一款可以通过 Web前端技
QQ音乐技术团队
2018/01/31
3.8K0
electron 构建跨平台桌面应用
Electron快速上手并将网站直接生成桌面应用
Atom、Postman、Notion、Vscode等都是用Electron开发的
游魂
2021/11/24
2.8K1
Electron快速上手并将网站直接生成桌面应用
Go每日一库之208:wails(使用 Go 和 Web 技术构建桌面应用程序)
Wails 提供了一种不同的方法:它提供了将 Go 代码和 Web 前端一起打包成单个二进制文件的能力。
luckpunk
2025/01/13
3610
Go每日一库之208:wails(使用 Go 和 Web 技术构建桌面应用程序)
Electron+Vue3+AI+云存储--实战跨平台桌面应用|果fx
如何使用 Electron 和 Vue 3 创建一个跨平台的桌面应用,并集成简单的 AI 功能和云存储。我们将构建一个基本的应用框架,使用一些示例代码来帮助你入门。
baikeu电抗
2025/01/07
6260
如何使用 Flutter 创建桌面应用程序[Flutter专题7]
开发人员可以选择编写多种类型的应用程序:控制台应用程序、移动应用程序、Web 应用程序和桌面应用程序。
徐建国
2021/11/30
5.1K0
如何使用 Flutter 创建桌面应用程序[Flutter专题7]
前端开发人员的桌面应用神器 Electron
曾经的 JavaScript 脆弱、简陋、甚至有被边缘化的危险,不过 JavaScript 在经过了两次飞跃后(以 V8 为首的 JavaScript 引擎和 Node.js 的问世),不再受人欺负,早已升级为绿博士(复仇者联盟 4 中班纳博士和绿巨人的合体,强大而充满智慧)。
CSDN技术头条
2019/05/09
3.8K0
前端开发人员的桌面应用神器 Electron
新技术栈实现天气查询应用
上一篇介绍了前端工程化的一些东西,说要从vue开始学习,那么相比理论,直接进行开发实例能够更好的理解工程化带来的便利。说说今天要做的小应用,上一篇介绍了轮播图,这次就是查询天气卡片显示。
希里安
2023/10/30
2720
新技术栈实现天气查询应用
Vue 3.x全面升级指南:Composition API深度探索
Vue 3.x 的全面升级引入了 Composition API,这是对 Vue 2.x 传统 Options API 的一个重大改进,它提供了更加灵活和模块化的代码组织方式.
天涯学馆
2024/05/16
2810
推荐阅读
相关推荐
使用 Vanilla JavaScript 框架创建一个简单的天气应用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档