【问题标题】:How to create loading screen for node-webkit?如何为 node-webkit 创建加载屏幕?
【发布时间】:2016-04-16 14:30:18
【问题描述】:

我创建了一个node-webkit 桌面应用程序,但在我单击.exe 后加载需要很长时间。有没有办法显示加载屏幕。我正在为此寻找解决方案,但没有找到。

【问题讨论】:

    标签: javascript node-webkit nw.js


    【解决方案1】:

    这可能是您正在寻找的:

    这是一个小型库,用于在主应用程序加载之前显示启动画面。

    初始屏幕将在单独的进程中运行,因此任何动画 应用加载时会流畅播放。

    https://github.com/nwutils/nw-splasher

    【讨论】:

    • 如果等待时间来自您的代码,那么这将起作用。如果等待时间是从等待 NW.js 加载 chromium/node 开始,那么这个库仍然需要等待 NW.js 加载才能开始显示启动画面。 NW.js 打开时间较长的一个常见原因是人们用它打包了一个压缩版本的应用程序。这样做没有任何好处,它只需要 NW.js 每次在应用程序显示之前解压缩代码。因此,如果您这样做,更改您的应用程序打包方式将解决问题,而无需启动屏幕。
    • @Jaredcheeda 我不知道“人们用它打包了应用程序的压缩版本”,我想知道为什么人们会这样做。显然,如果应用程序的设计适得其反,那么也必须对其进行修复以获得更好的性能。很高兴知道感谢您的意见。
    • @Jaredcheeda 关于 NW.JS 本身引起的等待时间,除了用 C/C++ 或 C# 等语言编写一个完全不同的程序之外,没有办法克服这个问题......而且我'相信很少有人愿意这样做。
    【解决方案2】:

    要在加载主应用程序屏幕时显示加载屏幕或启动屏幕,请考虑以下步骤:

    1. 在主窗口设置为隐藏的情况下启动您的应用程序。
    2. 由于您的主窗口已隐藏,请打开另一个窗口,该窗口将用作启动屏幕或加载屏幕。
    3. 当您的主应用程序完全加载并准备就绪时,关闭初始屏幕窗口并显示您隐藏的主窗口。

    第 1 步在隐藏主窗口的情况下启动您的应用程序:

    manifest 中设置 Window 属性的 show: false

    {
      "main": "index.html",
      "name": "nw-demo",
      "description": "demo app of node-webkit",
      "version": "0.1.0",
      "keywords": [ "demo", "node-webkit" ],
      "window": {
        "title": "node-webkit demo",
        "icon": "link.png",
        "show": false,
        "toolbar": false,
        "width": 800,
        "height": 500,
        "position": "mouse",
        "min_width": 400,
        "min_height": 200
      }
    }
    

    "show": false 属性不会在您的应用程序启动时显示主窗口。

    第 2 步打开加载或启动窗口:

    在您的 index.html 中编写一个脚本,该脚本将打开另一个用作启动屏幕的窗口。

    var guiWin = require('nw.gui');   
    this.splashScreen = guiWin.open('path/to/splash.html', {
                    "transparent": true,
                    'frame': false,
                    "icon": "path/to/icon.png",
                    'position': 'center',
                    'always-on-top': true,
                    "width": 475,
                    "height": 250,
                    "resizable": false,
                    "toolbar": false,
                    "fullscreen": false
                });
    

    第 3 步。应用准备就绪时关闭启动画面并显示主窗口:

    当您的主应用程序完全加载后,您可以通过调用此方法关闭启动窗口并显示主窗口。

    function hideSplash() {
        this._splashScreen.close(true);
        guiWin.get().show();            // get the current window and show
        this.splashScreen = null;            
    }
    

    【讨论】:

    • 谢谢您的回复。!​​!!但它不起作用,因为我的应用程序包含一些近 1GB 的资产文件夹,加载 index.html 本身需要时间我认为之后它才会执行第 2 步。我的包大小很重。由于某些内容安全性,我将资产文件夹保存在 .exe 中。我不知道如何克服这个问题
    • 是您的 index.html 是由 nwjs 加载较晚,还是加载所有资源较晚?您可以尝试在 中编写该脚本,以便它首先打开新窗口然后加载其他资源
    • 启动画面的目标是帮助用户耐心等待,但是你实现它的方式仍然需要一些等待,为此需要一些独立的东西
    猜你喜欢
    • 2014-11-29
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多