如何在Electron中运行express?

2024-03-25

我已经能够通过以下存储库在电子应用程序中成功运行express

https://github.com/theallmightyjohnmanning/electron-express https://github.com/theallmightyjohnmanning/electron-express

https://github.com/frankhale/electron-with-express https://github.com/frankhale/electron-with-express

然而,由于他们施加了 GNU 通用公共许可证,我被建议不要这样做。我正在尝试创建一个可以盈利的商业应用程序。因此,像 MIT 这样的 liscene 可能可以,但 GNU 就不确定了。

无论如何,我一直在尝试遵循他的程序:https://gist.github.com/maximilian-ruppert/a446a7ee87838a62099d https://gist.github.com/maximilian-ruppert/a446a7ee87838a62099d

但遇到了一些问题。 这是我到目前为止所做的。

# Clone the Quick Start repository
$ git clone https://github.com/electron/electron-quick-start

# Go into the repository
$ cd electron-quick-start

# Install the dependencies and run
$ npm install && npm start

然后去取快递

$ express myapp
$ cd myapp

$ npm install
renamed myapp to just app

现在我陷入了需要配置电子的部分main.js文件或/和渲染index.html文件链接到 Express 应用程序并运行它而不是index.html

任何帮助,将不胜感激。

我在 Windows 10 上运行。


用 Electron 封装 Express 应用程序

首先在您的应用程序中安装电子

npm install --save electron

创建一个包含您的 Express 应用程序的 index.html 文件

我们需要一个将在我们的 Express 应用程序中加载的顶级文件。如果您没有使用像 Webpack 这样的模块捆绑器,那么只需将您的应用程序依赖的所有 html、cs 和 js 文件导入到此 index.html 文件中即可。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>QuickMap</title>
    <link href='public/css/boostrap.min.css' rel='stylesheet'>
    <link href='public/css/layout.css' rel='stylesheet'>
  </head>
  <body>
    <div id='root' />
    <script src='public/js/appBundle.js' type='text/javascript'></script>
    <script src='public/js/bootstrap.min.js' type='text/javascript'></script>
    <script src='public/js/jquery-3.1.1.min.js' type='text/javascript'></script>
  </body>
</html>

确保此 index.html 文件导入应用程序运行所需的所有内容 - 即所有必需的 html、css、js 和其他文件。请记住包含您的应用程序需要的任何外部文件,例如我们在上面的示例中加载的 jQuery。

旁白 - 打包使用 Webpack 的 Electron 应用程序

在此示例中,我们的整个 Express 应用程序由一个 Webpack 包表示,该包由 index.html 加载。

请记住,您不需要使用 Webpack 来通过 Electron 打包 Express 应用程序。只需确保 index.html 加载启动 Express 应用程序所需的所有文件即可。

如果您使用 Webpack,您的包应该导入到此 index.html 文件中。

这是一个示例 index.html 文件,它导入包含我们的 Express 应用程序的 webpack 包。

现在在项目根目录中创建电子配置文件,该文件加载包含 Express 应用程序的 index.html

这是电子用来启动自身的主文件。此处包含与电子相关的配置和我们的 Express 应用程序的链接(通过导入 Webpack 包)。

请注意,下面的文件属于我们的根项目目录,主要由 Electron 快速入门指南中的样板文件组成,但上面解释的导入加载整个应用程序的 index.html 文件的行除外。

main.js

const {app, BrowserWindow} = require('electron')
const path = require('path')
const url = require('url')

// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
let win

function createWindow () {
  // Create the browser window.
  win = new BrowserWindow({width: 800, height: 600})

  // and load the index.html of the app.
  win.loadURL(url.format({
    pathname: path.join(__dirname, 'index.html'),
    protocol: 'file:',
    slashes: true
  }))

  // Open the DevTools.
  win.webContents.openDevTools()

  // Emitted when the window is closed.
  win.on('closed', () => {
    // Dereference the window object, usually you would store windows
    // in an array if your app supports multi windows, this is the time
    // when you should delete the corresponding element.
    win = null
  })
}

// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.on('ready', createWindow)

// Quit when all windows are closed.
app.on('window-all-closed', () => {
  // On macOS it is common for applications and their menu bar
  // to stay active until the user quits explicitly with Cmd + Q
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

app.on('activate', () => {
  // On macOS it's common to re-create a window in the app when the
  // dock icon is clicked and there are no other windows open.
  if (win === null) {
    createWindow()
  }
})

// In this file you can include the rest of your app's specific main process
// code. You can also put them in separate files and require them here.

以下行加载我们之前创建的index.html,它将我们的电子实例指向应用程序的入口点。

mainWindow.loadURL(`file://${__dirname}/index.html`)

更改 package.json 中的启动脚本以启动 Electron

 "scripts": {
    "start": "ENV=development electron .",
   },

现在当我们跑步时

npm start

Electron 会自动在我们的项目根目录中查找并运行 main.js 文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Electron中运行express? 的相关文章

随机推荐

  • 亚马逊 S3 URL 编码

    如果我有一个文件名 a d1 tttt sq jpg 当它上传到 Amazon S3 时 它会转换为这样 a d1 22 tttt 22 sq jpg 因此双引号被 URL 编码并且文件名本身被更改 必须使用编码的 URL 来获取文件 a
  • 如何杀死一个pid不断变化的进程?

    我知道我可以使用这个技巧if fork exit 0 改变当前进程的pid 因此 下面的程序的 pid 变化很快 如何杀死这样的进程 有没有比执行大量更好的方法killall procname直到一个人能够奔跑kill 在分叉之前 我知道这
  • 当图像大小不同时,如何格式化图像数据以进行训练/预测?

    我正在尝试训练对图像进行分类的模型 我遇到的问题是 它们的尺寸不同 我应该如何格式化我的图像 或模型架构 你没有说你在说什么架构 既然你说你想对图像进行分类 我假设它是一个部分卷积 部分完全连接的网络 如 AlexNet GoogLeNet
  • 使用匿名方法有任何开销吗?

    我想知道创建后台工作人员时使用匿名方法是否会产生任何开销 例如 public void SomeMethod BackgroundWorker worker new BackgroundWorker worker DoWork sender
  • 算术溢出相当于模运算吗?

    我需要在 C 中进行模 256 算术 那么我可以简单地做吗 unsigned char i i 代替 int i i i 1 256 不 没有什么可以保证unsigned char有八位 使用uint8 t from
  • 向 Apache Fop 添加注释

    我正在使用渲染 PDF阿帕奇 福普 我正在制作 XSLT 模板 用于将 xml 转换为 PDF 我想使用以下方法在输出 PDF 中添加注释阿帕奇 福普 我一直在搜索 它说 iText 支持向 pdf 添加注释 是否可以在 Apache Fo
  • wpf手动生成TreeViewItem容器

    我正在运行时创建一个 TreeView 它有几个节点 TreeViewItem 每个节点都有一个名称 最初它是崩溃的 单独的组合框显示所有 TreeViewItem 的名称 我必须根据所选名称突出显示 TreeViewItem 我正在使用递
  • 使用 scala 将 Spark 中的 DataFrame 单行转置为列

    我在这里看到这个问题 使用 scala 在 Spark 中转置数据帧而不进行聚合 https stackoverflow com questions 49392683 transpose dataframe without aggregat
  • 如何从 Javascript 调用 Objective-C?

    我有一个 WebView 我想从 JavaScript 调用 Objective C 中的视图 有人知道我该怎么做吗 我的 ViewController 中有这段代码 BOOL webView UIWebView webView2 shou
  • 在 Swift 中,如何停止所有进程,直到从 UICOLLECTIONVIEW 中的 parse.com 检索到数据

    在 CollectionView 中 我显示来自 parse com 的数据 成功找回 但无法在单元格中显示 我收到数组出站错误 我发现了错误 解析是异步运行的 但是 在解析结束之前 集合视图会被加载 所以我无法在单元格中显示值 它抛出一个
  • 使用Firebug发送表单数据

    是否可以使用 URL 中没有的参数发送 AJAX 数据 我有一个从表单获取信息的脚本 服务器使用 POST 而不是 GET 我注意到 FireBug 可以仅在 URL 中发送参数 如果不可能 是否有其他程序可以帮助我 https addon
  • 我怎样才能只显示card.column值与angular2中的column.id匹配的结果?

    我有下面的代码 它工作正常 它的作用是 ngFor Repeat 为列对象中的每一列创建一个列 目前 它显示每列中卡片对象中的每张卡片 我想要它做的是仅显示列中的卡片 其中column id card column 我该如何修改我的代码来做
  • 使用 ElementTree 解析 XML 时使用命名空间

    这是以下问题使用 ElementTree 修改 XML https stackoverflow com questions 25068629 modify a xml using elementtree 我现在在 XML 中有命名空间并尝试
  • 为什么 jq 打印记录冗余且不匹配以及如何修复?

    我有一个 json 文件 其中包含六个 发票 对象 每个对象有 140 多行值 我只想查看六个对象中每个对象的几个值 jq似乎是一个有前途的解决方案 我在用着jq version 1 5 1 a5b5cbe可以通过以下方式获得apt的常用存
  • 使用CSS模块如何定义多个样式名称

    我正在尝试使用 css 模块为一个元素使用多个类 我该怎么做呢 function Footer props const route props return div div p this site was created by me p d
  • 如何在 MATLAB 中可视化如图所示的体积数据?

    我的问题非常简单 我有一堆矩阵 所有矩阵都相互堆叠起来 这样我就有了大量的数据 我想可视化这些数据 如下图所示 在我看来 需要一定程度的透明度 这可能与每个体素的值有关 也就是说 值越高 体素对其后面的事物越不 透明 我不知道如何开始 这是
  • 如何在 SwiftUI 中使用 URLSession 请求后呈现视图?

    我想在收到请求的数据后呈现一个视图 如下所示 var body some View VStack Text Company ID TextField companyID textFieldStyle roundedBorder URLSes
  • 根据从下拉列表中选择的值显示文本框[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案
  • 如何使用多个相互调用的自定义过滤器?

    大家好 我正在使用 Spring Security 3 0 2 我有一个自定义过滤器 它的顺序是最后一个 我想在该过滤器之后添加另一个过滤器 以下配置正确吗
  • 如何在Electron中运行express?

    我已经能够通过以下存储库在电子应用程序中成功运行express https github com theallmightyjohnmanning electron express https github com theallmightyj