electron项目结构介绍


#项目结构

my-project
├─ .electron-vue(webpack配置文件)
│  └─ build.js(生产环境构建代码)
│  └─ dev-client.js(热加载相关)
│  └─ dev-runner.js(开发环境启动入口)
│  └─ webpack.main.config.js(主进程配置文件)
│  └─ webpack.renderer.config.js(渲染进程配置文件)
│  └─ webpack.web.config.js ├─ build(是文件打包使用的) │ └─ win-unpacked
/
│  │  ├─ locales(地区语言资源包)
│  │  ├─ resources(地区语言资源包)
│  │  ├─ *.dll(动态链接库) ├─ dist(打包后的文件资源) │ ├─ electron/ ├─ node_modules/(依赖目录) ├─ src(源码) │ ├─ main(主进程) │ │ ├─ index.dev.js(捆绑index.js) │ │ └─ index.js(主进程的进程JS) │ ├─ renderer(渲染进程)
│  │  ├─ assets/(放置静态资源,如图片,视频,静态配置)
│ │ ├─ components
/(放置vue页面) │ │ ├─ router/(放置页面路由) │ │ ├─ store/(放置公共模块,如vuex) │ │ ├─ App.vue │ │ └─ main.js │ └─ index.ejs ├─ static/(静态文件) ├─ test │ ├─ e2e │ │ ├─ specs/ │ │ ├─ index.js │ │ └─ utils.js │ ├─ unit │ │ ├─ specs/ │ │ ├─ index.js │ │ └─ karma.config.js │ └─ .eslintrc
#全局配置文件 ├─ .babelrc ├─ .eslintignore ├─ .eslintrc.js ├─ .gitignore ├─ package.json └─ README.md

 

#语法规范

require 是 AMD规范引入方式

require是运行时调用,所以require理论上可以运用在代码的任何地方

require是赋值过程,其实require的结果就是对象、数字、字符串、函数等,再把require的结果赋值给某个变量

 

import是es6的一个语法标准,如果要兼容浏览器的话必须转化成es5的语法

import是编译时调用,所以必须放在文件开头

import是解构过程,但是目前所有的引擎都还没有实现import,我们在node中使用babel支持ES6,也仅仅是将ES6转码为ES5再执行,import语法会被转码为require

 

#模块功能说明

  • electron.app:负责管理Electron 应用程序的生命周期
  • electron.BrowserWindow:负责创建窗口
  • globalShortcut:模块可以在操作系统中注册/注销全局快捷键, 以便可以为操作定制各种快捷键
  • Menu:创建原生应用菜单和上下文菜单
  • ipcMain:当在主进程中使用时,它处理从渲染器进程(网页)发送出来的异步和同步信息。 从渲染器进程发送的消息将被发送到该模块
  • Notification:创建OS(操作系统)桌面通知
  • fs:在 NodeJS 中,所有与文件操作都是通过 fs 核心模块来实现的,包括文件目录的创建、删除、查询以及文件的读取和写入,在fs 模块中,所有的方法都分为同步和异步两种实现,具有 sync 后缀的方法为同步方法,不具有 sync 后缀的方法为异步方法
  • path:Node.js path 模块提供了一些用于处理文件路径的小工具
  • screen:检索有关屏幕大小、显示器、光标位置等的信息
  • shell:提供与桌面集成相关的功能
  • webContents:渲染以及控制 web 页面
  • ffi(Foreign Function Interface):node调用动态链接库(.so/.dll文件),解决NodeJS的本地调用问题,其流程就相当于Windows下的LoadLibrary()和GetProcAddress(),亦可以理解为NodeJS下的平台调用。
  • sql.js:sqlite的Webassembly版,使用上和sqlite基本没有区别,一个开箱即用的sql库
  • child_process:提供了衍生子进程的能力
  • child_process.exec(): 衍生一个 shell 并在该 shell 中运行命令,当完成时则将 stdout 和 stderr 传给回调函数

 

#变量说明

  • __dirname:总是指向被执行 js 文件的绝对路径
  • __filename:获取当前模块文件的带有完整绝对路径的文件名
 
#为什么要用dll
  • 需要使用系统 API 操作或扩展应用程序;
  • 需要调用第三方的接口API,特别是与硬件设备进行通信,而这些接口 API 基本上都是通过 C++ 动态链接库(DLL)实现的;
  • 需要调用C++实现的一些复杂算法等。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM