Electron入门宝典(一)

目录

一.Electron介绍

 二.环境搭建

三.搭建electron项目(三种方式)

1.快速启动Demo

2.electron-forge

3.手动搭建

四.在开发工具中集成ESLint

五.Electron运行流程

 六.主进程和渲染进程

1.介绍

2.主进程和渲染进程使用Nodejs及Nodejs第三方模块

(1)主进程中使用Nodejs模块

(2)渲染进程中使用Nodejs模块

3.小实例

七.拖放打开文件功能


一.Electron介绍

 

 

 二.环境搭建

-g是全局安装

三.搭建electron项目(三种方式)

1.快速启动Demo

2.electron-forge

3.手动搭建

新建一个空文件夹,起一个项目名称,用vscode打开此文件夹,在此项目下创建index.html(渲染文件),main.js(主文件),然后在此路径下打开cmd,输入npm init --yes,在此目录下会自动生成package.json文件。

先确保已经像上面那样全局安装,再进行下面的本地安装(全局安装和局部安装的区别戳这里),如果不全局安装的话命令行不识别eletron命令!

然后在项目目录终端下安装electron(在这里安装是为了写electron代码有提示),输入

cnpm install electron --save-dev

编写主文件main.js,编写时注意,在electron中可直接引用nodejs的模块等。

项目结构:

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="./css/base.css">
    <title>Document</title>
</head>
<body>
    <h1>electron项目的渲染文件</h1>
    <p>1111</p>
</body>
</html>

 main.js:

//主文件
const {app,BrowserWindow}=require("electron");
//引入nodejs的path模块,用于合并路径
const path=require("path");

//创建主窗口
const createWindow=()=>{
    //创建主窗口
    const mainWindow=new BrowserWindow({
        width:600,
        height:400
    })
    //加载渲染文件(也可以使用loadURL加载远程渲染文件)
    mainWindow.loadFile(path.join(__dirname,"index.html"));
}

//监听应用的启动事件
app.on("ready",createWindow);

/*监听窗口关闭的事件,关闭的时候退出应用(macos除外)
Macos中点击dock中的应用图标的时候重新创建窗口
因为在mac中关闭窗口不会关闭应用程序,而是隐藏程序*/
app.on("window-all-closed",()=>{
    //如果当前系统不是macOS,则关闭应用程序
    if(process.platform != "darwin"){
        app.quit();
    }
})

app.on("activate",()=>{
    if(BrowserWindow.getAllWindows().length===0){
        //重新创建一个窗口
        createWindow();
    }
})

 base.css:

h1{
    color: red;
}

运行文件,在项目目录下输入:

electron .

输出:

会显示一个窗口如下:

四.在开发工具中集成ESLint

下面的命令运行失败就以管理员身份打开cmd再次输入!

cnpm install -g eslint

然后在项目路径下输入

eslint --init

我执行完上面的操作之后 还是不起作用,所以我又安装了ESlint插件

完成之后即可对错误代码进行智能提示!        

但是有些提示不用去管,比如__dirname和process这种公共变量也会被下划线标出,但没有错。

五.Electron运行流程

先在package.json文件中找到main项,mian对应的文件就是入口文件,然后加载入口文件,即上面的main.js(名字是自己取的,要确保文件名和package.json中main所对应的文件名一致),然后执行入口文件时,会加载渲染文件,即上面例子中的index.html。

 六.主进程和渲染进程

1.介绍

在上面的项目目录下新建一个second.html,随便渲染点东西,比如:

second.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="./css/base.css">
    <title>Document</title>
</head>
<body>
    <h1>这是另一个渲染进程!</h1>
</body>
</html>

 main.js中新增一个窗口:

//创建窗口函数
const createWindow=()=>{
    //创建主窗口
    const mainWindow=new BrowserWindow({
        width:800,
        height:400
    })
    //加载渲染文件(也可以使用loadURL加载远程渲染文件)
    mainWindow.loadFile(path.join(__dirname,"index.html"));

    //创建子窗口
    const secondWindow=new BrowserWindow({
        width:400,
        height:200,
        //此窗口的父窗口是mainWindow
        parent:mainWindow
    })
    //加载渲染文件(也可以使用loadURL加载远程渲染文件)
    secondWindow.loadFile(path.join(__dirname,"second.html"));
}

输出:

2.主进程和渲染进程使用Nodejs及Nodejs第三方模块

(1)主进程中使用Nodejs模块

Electron主进程中无需任何配置就可以使用nodejs模块。

(2)渲染进程中使用Nodejs模块

方式一(preload方式):

即在主进程中通过preload加载过的文件可直接使用nodejs。

例如,在项目目录下创建render文件夹,在里面创建一个preload.js文件,然后在主进程文件中做如下修改,即可使preload.js直接使用nodejs。

preload.js:

const fs=require("fs");

fs.readFile("./package.json",(err,data)=>{
    if(err){
        console.log(err);
        return;
    }
    console.log(data.toString());
})


主文件main.js做如下修改:

添加一个webPreferences来加载渲染进程!

//创建窗口函数
const createWindow=()=>{
    //创建主窗口
    const mainWindow=new BrowserWindow({
        width:800,
        height:400,
        webPreferences:{
            preload:path.join(__dirname,"renderer/preload.js")
        }
        
    })
    //加载渲染文件(也可以使用loadURL加载远程渲染文件)
    mainWindow.loadFile(path.join(__dirname,"index.html"));

    //主进程中直接使用nodejs模块即可
    //参数一是要读取的文件路径
    fs.readFile("package.json",(err,data)=>{
        if(err){
            console.log(err);
            return;
        }
        console.log(data.toString());
    })

}

输出:

主进程的console输出可直接在终端查看,而渲染进程的输出需要在窗口下查看,View->Toggle Developer Tools,如下图,在Console那一栏可看到preload.js的输出。

如果不使用preload加载的js,Electron5.x 之后没法在渲染进程中直接使用nodejs,如果我们想在渲染进程中使用nodejs的话需要进行如下配置。

方式二(在index.html中引入):

示例:

在renderer文件下新创建一个renderer.js,内容和preload.js一致,在index.html中引入,

然后在主进程中添加两个配置参数,如下:

上面那个红框是配置的参数;下面那个红框是开启调试模式,自动展示Toggle Developer Tools窗口,方便查看结果,与使用nodejs配置无关。

3.小实例

先看看效果:

功能就是点击打开按钮,就会将package.json文件的内容输入到div框中。

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="./css/base.css">
    <script src="./renderer/renderer.js"></script>
    <title>Document</title>
</head>
<body>
    <h1>electron项目的渲染文件</h1>
    <button id="button">打开</button>
    <div id="text">

    </div>
</body>
</html>

base.css:

h1{
    color: red;
}

#text{
    width: 400px;
    height: 400px;
    border: 1px solid #666;
}

然后功能实现是renderer.js实现的:

//渲染进程的第二种方法,这个文件在index.html文件里会引入

const fs=require("fs");

window.onload=()=>{
    buttonDom=document.querySelector("#button");
    textDom=document.querySelector("#text");
    buttonDom.onclick=()=>{
        fs.readFile("./package.json",(err,data)=>{
            if(err){
                console.log(err);
                return;
            }
            console.log(data.toString());
            textDom.innerHTML=data.toString();
        })
    }
}

其他文件不变。

七.拖放打开文件功能

Electron调用h5的拖放api结合Nodejs fs模块实现拖放打开文件功能。

不只可以调用文本文件,也可以调用html等文件,会被直接解析出效果。

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="./css/base.css">
    <script src="./renderer/renderer.js"></script>
    <title>Document</title>
</head>
<body>
    <div class="content" id="content">

    </div>
</body>
</html>

base.css:

h1{
    color: red;
}

.content{
    width: 100%;
    height: 400px;
    background-color: orange;
    /* 当内容过多时,自动添加滚动条 */
    overflow: auto;
}

renderer.js:

//渲染进程的第二种方法,这个文件在index.html文件里会引入

const fs=require("fs");

/**
ondragenter.-.当被鼠标拖动的对象进入其容器范围内时触发此事件
ondragover.-.当某被拖动的对象在另一对象容器范围内拖动时触发此事件
ondragleave.-.当被鼠标拖动的对象离开其容器范围内时触发此事件
ondrop.-.在一个拖动过程中,释放鼠标键时触发此事件

 */
window.onload=()=>{
    //获得div模块对象
    var contentDom=document.querySelector("#content");
    //阻止默认行为
    contentDom.ondragenter=contentDom.ondragover=contentDom.ondragleave=()=>{
        return false;
    }
    contentDom.ondrop=(e)=>{
        //console.log(e);
        //console.log(e.dataTransfer.files[0].path);
        //被拖拽文件的路径
        var path=e.dataTransfer.files[0].path;
        fs.readFile(path,(err,data)=>{
            if(err){
                console.log(err);
                return false;
            }
            contentDom.innerHTML=data;
        })
    }
}

其他文件不变,效果自己试试吧。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Electron 入门指的是学习如何使用 Electron 框架来开发跨平台的桌面应用程序。首先需要了解 Electron 的基本概念和架构,包括主进程和渲染进程、应用程序的生命周期等。然后需要学习如何使用 HTML、CSS 和 JavaScript 来开发界面和逻辑,并且掌握 Electron 提供的 API 来访问操作系统的底层功能,比如文件系统、网络、窗口管理等。最后需要了解如何打包和发布应用程序,以及如何调试和测试应用程序。 ### 回答2: Electron 是一个用于构建跨平台桌面应用程序的开源框架。它使用 HTML、CSS 和 JavaScript 来创建桌面应用程序,并且可以在不同的操作系统上运行,如 Windows、Mac 接来和 Linux。 学习 Electron 入门可以按照以下步骤进行: 1. 准备开发环境:首先要安装 Node.js 和 npm,它们用于安装 Electron。可以在官方网站上下载并安装最新版本的 Node.js。安装完成后,打开终端或命令提示符窗口,运行命令 `npm install -g electron` 安装 Electron。 2. 创建一个新项目:在合适的目录下创建一个新的文件夹作为项目文件夹。在终端或命令提示符中,切换到项目文件夹,并运行命令 `npm init` 创建一个新的 npm 项目。按照提示一步一步地填写项目信息。完成后,会生成一个 `package.json` 文件,用于管理项目依赖和配置。 3. 安装必要的依赖:现在,需要安装 Electron 的依赖。在终端或命令提示符中运行命令 `npm install electron --save-dev` 安装 Electron。 4. 编写主进程代码:在项目文件夹中创建一个新的 JavaScript 文件,作为 Electron 的主进程代码。主进程代码负责启动应用程序并管理窗口。 5. 编写页面代码:创建一个新的 HTML 文件,用于作为应用程序的主页面。 6. 运行 Electron:在终端或命令提示符中,切换到项目文件夹,并运行命令 `electron .` 启动应用程序。应用程序的窗口将会显示出来,同时运行主进程和页面代码。 通过上述步骤,可以快速入门 Electron,并开始构建跨平台桌面应用程序。可以通过学习 Electron 的文档、示例代码和社区资源深入了解和掌握 Electron 的更多特性和功能。 ### 回答3: electron是一种跨平台的开源桌面应用程序框架,可用于构建基于HTML、CSS和JavaScript桌面应用程序。它通过将现代Web技术与Node.js的强大功能相结合,提供了一种简单而又强大的方式来开发可在Windows、Mac和Linux上运行的桌面应用程序。 要入门electron,首先需要安装electron的开发环境。可以通过npm(Node.js的包管理器)来安装所需的工具和依赖项。然后,创建一个新的electron项目,并安装electron所需的依赖包。接下来,可以使用任何常见的Web开发工具(如HTML、CSS和JavaScript)来进行应用程序的开发。 在electron中,应用程序的主进程由一个main.js文件来控制,而渲染进程由HTML和JavaScript文件来控制。通过main.js文件,可以创建一个主窗口并控制窗口的行为。在渲染进程中,可以使用Web技术来构建应用程序的用户界面,例如使用HTML构建页面结构,使用CSS样式化页面,使用JavaScript实现交互和动态效果。 electron还提供了许多API和功能,使开发者能够与底层操作系统进行交互,例如访问文件系统、显示原生对话框、打开外部链接等。此外,electron还支持构建可打包为独立安装包的应用程序,以便更方便地在不同操作系统上分发和部署应用程序。 总的来说,入门electron需要安装开发环境,创建项目,使用常见的Web技术进行开发,并利用electron提供的API和功能来构建强大的跨平台桌面应用程序。由于其简单易用的特点,electron已成为许多开发者喜爱的桌面应用程序开发框架之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深海鱼肝油ya

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值