首先,我对专业地做这件事不感兴趣.我是一名网络开发人员,我的一位同事最近离开了Spotify,他说他将主要为Spotify桌面应用程序使用JavaScript.他说,它使用"Chrome框架",里面的一切都像一个网络应用程序(HTML/JS/CSS).

作为一个从未为桌面开发过任何东西的web开发人员,这是一个好消息.如果我能够使用我已经知道的技术,并在某种"框架"内实现它们,并且仍然能够构建windows或更好的跨平台应用程序.

我知道我没有提到任何关于数据库的事情,但即使是一个简单的hello world桌面应用程序和网络技术也很好.

那么我们该怎么做呢?我到底需要/需要知道什么?

推荐答案

你可以从Tianium for desktop dev开始,也可以看看100.它基本上是一个基于Chrome的web浏览器控件.

它是用C++编写的,这样你就可以在你的容器应用程序中做所有你想要的低级操作系统(咆哮,托盘图标,本地文件访问,COM端口等),然后在HTML/JavaScript中应用所有的应用程序逻辑和GUI.它允许您拦截任何http请求,以服务本地资源或执行某些自定义操作.例如,对容器http://localapp.com/SetTrayIconState?state=active的请求可以被容器拦截,然后调用C++函数来更新托盘图标.

它还允许您创建可以直接从JavaScript调用的函数.

在CEF中直接调试JavaScript非常困难.不支持像Firebug这样的东西.

您也可以try 100(帮助构建桌面应用程序.对于Linux、Windows和Mac,使用HTML、CSS和JavaScript)

此外,正如@Clint所指出的,100(Adobe)的团队使用Chromium Embedded Framework创建了一个非常棒的shell,这使它更容易入门.它被称为括号shell :github.com/adobe/brackets-shell在这里了解更多信息:clintberry.com/2013/html5-desktop-apps-with-brackets-shell

Javascript相关问答推荐

如何解决(不忽略)reaction详尽的linter规则,而不会在获取数据时导致无限的reender循环

使用typeof运算符获取对象值类型-接收字符串而不是数组

React Native平面列表自动滚动

当在select中 Select 选项时,我必须禁用不匹配的 Select

如何将连续的十六进制字符串拆分为以空间分隔的十六进制块,每个十六进制块包含32个二元组?

Plotly热图:在矩形上zoom 后将zoom 区域居中

在JavaScript中声明自定义内置元素不起作用

Spring boot JSON解析错误:意外字符错误

为什么当我解析一个promise时,输出处于挂起状态?

手机上的渲染错误文本必须在文本组件中渲染,但在浏览器上没有问题<><>

如何从URL获取令牌?

并不是所有的iframe都被更换

创建以键值对为有效负载的Redux Reducer时,基于键的类型检测

我想将Sitecore搜索面过滤器从多个转换为单个

将多个文本框中的输出合并到一个文本框中

如何使用画布在另一个内部绘制一个较小但相同的形状,同时保持恒定的边界厚度?

有没有办法更改Chart.js 3.x.x中主要刻度的字体?

JAVASCRIPT SWITCH CASE语句:当表达式为';ALL';

AG-GRIDreact 显示布尔值而不是复选框

如何使用Reaction路由导航测试挂钩?