zoukankan      html  css  js  c++  java
  • Electron实现第一个应用 "hello world"

    一. 什么是Electron? 它和NW.js的区别是什么?

    Electron是GitHub开发的桌面应用开发框架,它支持使用HTML、CSS、JavaScript来构建跨平台的桌面应用。

    Electron和NW.js(NW.js是什么可以百度下)的区别是:

    1. 整合Chromium 和 Node.js的方式不同。

    在NW.js中,Chromium是直接被打补丁打进去的。因此 Node.js 和 Chromium 共享了同一个javascript上下文。

    在Electron中,它不是以补丁的形式将Chromium整合进去的。而是通过Chromium的Content API 以及使用了 Node.js的node_bindings。

    在NW.js中它维护一个共享的javascript上下文。而在 Electron中它有多个独立的javascript上下文(比如:它有一个后端的main进程,作用是负责启动运行应用的视窗,另一个是renderer进程,它是负责具体的应用视窗)。

    2. 入口文件不同。

    NW.js 一般是使用HTML作为入口文件,而Electron使用的是javascript作为入口文件。Electron将加载的应用视窗的职责委派给javascript。

    二. Electron的应用场景有哪些?

    1. Slack: 它是一款企业沟通协作工具,那么我们可以使用 Electron来做这方面的事情。并且可以支持音频或视频功能等。
    2. Light Table: 它是一款代码编辑器,我们也可以使用Electron做代码编辑器的桌面应用程序。
    3. Game Dev Tycoon: 它是一款模拟类游戏,也可以使用做游戏相关的产品。
    4. Gitter: 它是一种服务,它为GitHub上的开源项目提供聊天室的功能。它可以让用户使用其Github账号登录,然后访问项目或组织的聊天室。
    5. Macaw: 他是一款创新的所见即所得的web设计工具。它可以让web设计师直接为他们的网站做视觉设计,在以前,他们都要先在图片编辑软件中做好,然后再生成对应的HTML和CSS代码,现在我们可以使用该工具直接生成网站代码。省去了将视觉设计稿转成网站这一步。但是它和我们以前的Dreamweaver不同的是,它可以直接生成语义化的HTML和CSS代码。

    三. 使用Electron先来实现一个简单的 "hello world" 应用程序

    要使用 Electron的话,首先我们需要安装该插件包,我们可以使用npm来安装它,安装命令如下:

    npm install -g electron

    如上安装完成后,我们来看看 一个 electron应用需要包含如下三个文件:

    |------ electron-demo
    |  |--- index.html
    |  |--- main.js
    |  |--- package.json

    package.json 基本代码如下:

    {
      "name": "hello-world",
      "version": "1.0.0",
      "description": "",
      "main": "main.js",
      "scripts": {
        "test": "echo "Error: no test specified" && exit 1"
      },
      "author": "",
      "license": "ISC"
    }

    如上 在electron中入口文件就是main.js, 默认是以js文件作为入口文件的,它以NW.js的区别是:NW.js 是以html文件作为入口的。

    main.js 代码如下:

    'use strict';
    
    // 引入 electron模块
    const electron = require('electron');
    
    // 创建 electron应用对象的引用
    
    const app = electron.app;
    const BrowserWindow = electron.BrowserWindow;
    
    // 定义变量 对应用视窗的引用 
    let mainWindow = null;
    
    // 监听视窗关闭的事件(在Mac OS 系统下是不会触发该事件的)
    app.on('window-all-closed', () => {
      if (process.platform !== 'darwin') {
        app.quit();
      }
    });
    
    // 将index.html 载入应用视窗中
    app.on('ready', () => {
      /*
       创建一个新的应用窗口,并将它赋值给 mainWindow变量。
      */
      mainWindow = new BrowserWindow();
    
      // 载入 index.html 文件
      mainWindow.loadURL(`file://${__dirname}/index.html`);
    
      // 当应用被关闭的时候,释放 mainWindow变量的引用
      mainWindow.on('closed', () => {
        mainWindow = null;
      });
    });

    index.html 代码如下:

    <html>
      <head>
        <title>Hello World</title>
      </head>
      <style>
        body {
          background-image: linear-gradient(45deg, #ead790 0%, #ef8c53 100%);
          text-align: center;
        }
        button {
          background: rgba(0, 0, 0, 0.40);
          box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.5);
          border-radius: 8px;
          color: white;
          padding: 10px 20px;
          border: none;
          font-family: 'Roboto', sans-serif;
          font-size: 14px;
          position: relative;
          top: 40%;
          cursor: pointer;
          outline: none;
        }
        button:hover {
          background: rgba(0, 0, 0, 0.3);
        }
      </style>
      <body>
        <button onclick="sayHello()">Say Hello</button>
        <script type="text/javascript">
          function sayHello() {
            alert('Hello world');
          }
        </script>
      </body>
    </html>

    如上代码编写完成后,我们现在就可以来通过命令运行该应用程序了。我们先进入我们项目中的根目录下,然后执行如下命令即可:

    electron .

    如下图所示:

    运行完成后,会打开一个视窗口,当我们单击应用程序中的按钮时候,会弹出窗口,如下图所示:

    Electron还有如下特性:

    1. 支持创建多视窗,而且每个视窗都有自己独立的javascript上下文。
    2. 通过shell和screen API 整合了桌面操作系统的特性。
    3. 支持获取计算机电源状态。
    4. 支持阻止操作系统进入省点模式。(对于演示文稿比较有用)
    5. 支持创建托盘应用。
    6. 支持创建菜单和菜单项。
    7. 支持为应用更新来自动更新应用代码。
    8. 支持汇报程序崩溃。
    9. 支持自定义Dock菜单项。
    10.支持操作系统通知。
    11.支持为应用创建启动安装器。

  • 相关阅读:
    AVFrame与Mat
    conda警告
    MS COCO数据集格式
    ubuntu卡在工作区切换界面
    C++编程便捷口
    Anaconda相关问题
    处理memory output
    ajax 上传form表单
    元类 metaclass
    小菜一碟
  • 原文地址:https://www.cnblogs.com/tugenhua0707/p/11070243.html
Copyright © 2011-2022 走看看