electron 集成react

1、创建react项目
npx create-react-app 项目名称

2、安装electron
cnpm i electron --save

3、在package.json 中添加
“main”: “main.js”,
“homepage”: “.”,
在这里插入图片描述
4、在package.json的script中添加脚本命令
“electron-dev”: “electron . dev”,
“electron”: “electron .”,

这里一个是使用electron运行开发时候的脚本加了 dev的参数,后面会根据传入的这个参数,在主进程中做一层判断
如果是开发环境的话,那么主进程loadURL就会加载 http://localhost:3000/地址
如果是打包之后的环境就会加载打包文件夹的地址(这里打包是放在build文件夹下,所以会加载’./build/index.html’地址)

5、与package.json同级添加main.js文件

// Modules to control application life and create native browser window
const {app,Menu, BrowserWindow,BrowserView,globalShortcut,ipcMain} = require('electron')
const path = require('path')
const url = require('url');

// 获取在 package.json 中的命令脚本传入的参数,来判断是开发还是生产环境
const mode = process.argv[2];

function createWindow () {
  // Create the browser window.
  const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    //弹出的窗口有无边框,默认为有
    // frame:false,
    show:false,
    backgroundColor:'#586148',
    webPreferences: {
      preload: path.join(__dirname, 'preload.js'),
      nodeIntegration:true,
      webviewTag:true
    },
  })

  // and load the index.html of the app.
  //mainWindow.loadFile('index.html')
  
  //判断是否是开发模式 
  if(mode === 'dev') { 
    mainWindow.loadURL("http://localhost:3000/")
  } else { 
    mainWindow.loadURL(url.format({
      pathname:path.join(__dirname, './build/index.html'), 
      protocol:'file:', 
      slashes:true 
    }))
  }
	
  mainWindow.webContents.on("did-finish-load",()=>{
      
  })
  mainWindow.webContents.on('dom-ready',()=>{
   
  })
  mainWindow.once('ready-to-show',function(){
    mainWindow.show();
  })


}

// 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.whenReady().then(createWindow)
app.on('ready',()=>{

  createWindow();


});

// Quit when all windows are closed.
app.on('window-all-closed', function () {
  // 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', function () {
  // 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 (BrowserWindow.getAllWindows().length === 0) 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.

6、和main.js同级添加preload.js

// All of the Node.js APIs are available in the preload process.
// It has the same sandbox as a Chrome extension.
window.addEventListener('DOMContentLoaded', () => {
  const replaceText = (selector, text) => {
    const element = document.getElementById(selector)
    if (element) element.innerText = text
  }

  for (const type of ['chrome', 'node', 'electron']) {
    replaceText(`${type}-version`, process.versions[type])
  }
})

7、启动electron项目
(1)npm start 启动react项目
(2)npm run electron-dev 启动electron应用
修改代码react代码会热更新
(3)如果react打包后,运行 npm run electron 这个时候electron 加载的就是 build/index.html文件
在这里插入图片描述
8、打包react
npm run-script build
此时npm run electron运行的就是打包后的react项目

9、打包electron
(1)安装electron-packager
npm install electron-packager --save-dev
npm install electron-packager -g

(2)在package.json的"scripts"中添加
“pack”: “electron-packager . 此项目名称 --win --out ./打包后名称 --electron-version=8.2.4(版本号)”

(3)复制main.js和package.json文件到打包react后的build文件下

(4)npm run pack打包最后的应用程序

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ElectronReact Native都是用于构建跨平台应用程序的工具,但它们的实现方式和用途略有不同。下面是它们各自的优缺点: **Electron** 优点: - Electron使用Web技术(HTML、CSS、JavaScript等)构建桌面应用程序,因此开发人员可以使用现有的Web开发技能和工具来构建应用程序。 - Electron在多个平台上都能提供相同的用户体验,可以在Windows、macOS和Linux等操作系统上运行。 - Electron具有丰富的第三方库和插件生态系统,可以加速应用程序的开发和扩展。 缺点: - Electron的应用程序相对较大,因为它需要包含应用程序代码和整个Electron框架。 - Electron应用程序可能会出现性能问题,因为它需要在本地运行Web技术,而不是原生代码。 - Electron应用程序在某些方面可能会缺乏操作系统特定的功能或外观。 **React Native** 优点: - React Native使用JavaScript和React构建本机移动应用程序,因此它可以提供与原生应用程序相同的性能和用户体验。 - React Native具有跨平台开发的优势,可以在iOS和Android等操作系统上运行。 - React Native具有活跃的社区和生态系统,有大量的第三方库和插件可用,可以加速应用程序的开发和扩展。 缺点: - React Native相对于原生开发可能会有一些限制或障碍。 - React Native需要针对每个平台进行特定的优化和调整,因为每个操作系统都有不同的约束和要求。 - React Native的性能可能会受到JavaScript运行时的限制,尤其是在处理大量数据或执行复杂操作时。 总的来说,ElectronReact Native都具有各自的优缺点。如果开发人员已经掌握了Web技术并且需要构建桌面应用程序,那么Electron可能是一个不错的选择。如果需要构建本机移动应用程序并且需要更好的性能和用户体验,那么React Native可能更适合。 ### 回答2: ElectronReact Native是两种流行的跨平台应用开发框架,它们分别用于开发桌面应用和移动应用。下面是它们各自的优缺点比较: Electron的优点: 1. 跨平台性强:Electron可以在Windows、Mac和Linux等多种操作系统上运行,开发一次即可在多个平台上使用。 2. 前端技术栈:Electron使用HTML、CSS和JavaScript进行开发,因此熟悉前端开发的人员可以快速上手。 3. 社区活跃:Electron拥有一个庞大的开源社区,提供了丰富的插件和扩展,开发者可以借助这些工具提高开发效率。 4. 高性能:Electron使用Chromium作为渲染引擎,具备出色的性能和良好的用户体验。 Electron的缺点: 1. 资源占用较大:Electron的桌面应用体积较大,占用内存较多,可能导致一些低配置的设备性能下降。 2. 外观不一致:由于Electron开发的应用会使用不同平台上的本地控件,可能导致应用在不同操作系统上的外观不一致。 React Native的优点: 1. 跨平台性强:React Native可以同时开发iOS和Android应用,并且提供了一致的用户界面和用户体验。 2. 性能较好:React Native的底层代码是以原生组件的形式运行,相较于传统的混合应用开发框架,性能更好。 3. 社区支持:React Native具有庞大的开源社区,提供了丰富的组件和工具,开发者可以快速构建功能丰富的移动应用。 4. 热更新:React Native支持热更新,可以在不重新编译应用的情况下进行代码更新。 React Native的缺点: 1. 学习曲线陡峭:相对于Electron,对于不熟悉React和JavaScript的开发者来说,学习React Native可能需要更多的时间。 2. 第三方插件:尽管React Native提供了很多组件和API,但某些特定功能的实现可能需要依赖第三方插件或原生模块。 综上所述,Electron适用于开发跨平台的桌面应用,而React Native适用于开发iOS和Android的移动应用。选择哪种框架取决于项目需求、开发团队的技术栈和资源限制等因素。 ### 回答3: ElectronReact Native是两个流行的跨平台开发框架,各自具有一些优点和缺点。 首先,Electron是一个基于Web技术的框架,使用HTML、CSS和JavaScript来构建桌面应用程序。它的主要优点是具有广泛的兼容性,可以在Windows、macOS和Linux等多个操作系统上运行。由于使用了Web技术,它也具备开发效率高、可扩展性强、前端开发者易于上手等特点。 然而,Electron也有一些缺点。首先,它的应用程序比较占用系统资源,有时候运行速度较慢。其次,由于使用了Web技术,Electron的应用程序在视觉体验方面可能不如原生应用。此外,Electron需要将整个Web引擎和应用程序打包在一起,导致应用文件较大。 相比之下,React Native是一个使用JavaScript构建原生移动应用程序的框架。它的主要优点是可以开发同时运行在iOS和Android平台上的应用,且性能接近原生应用。React Native还具有热重载和热更新的特性,可以在开发过程中实时预览和调试应用。 然而,React Native也有一些缺点。首先,由于需要负责桥接JavaScript和原生代码,React Native的开发学习曲线较陡峭,不太适合没有前端经验的开发者。其次,由于React Native并非直接运行在原生环境中,一些特定的原生功能可能需要使用原生模块或插件进行集成。 综上所述,ElectronReact Native各有优点和缺点。选择哪个框架应该根据具体需求和项目特点来决定,如需开发跨平台的桌面应用,Electron可能更适合;如需开发原生移动应用且性能要求较高,React Native可能更合适。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值