#项目结构

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.exec(): 衍生一个 shell 并在该 shell 中运行命令,当完成时则将stdout和stderr传给回调函数

#变量说明

__dirname:总是指向被执行 js 文件的绝对路径

__filename:获取当前模块文件的带有完整绝对路径的文件名

#为什么要用dll

需要使用系统 API 操作或扩展应用程序;

需要调用第三方的接口API,特别是与硬件设备进行通信,而这些接口 API 基本上都是通过 C++ 动态链接库(DLL)实现的;

需要调用C++实现的一些复杂算法等。

elctron项目_electron项目结构介绍相关推荐

  1. 【Vue】—项目的目录结构介绍

    [Vue]-项目的目录结构介绍

  2. 六十一、分析Springboot中的项目结构介绍

    @Author:Runsen 来源:尚硅谷 下面建议读者学习尚硅谷的B站的SpringBoot视频,我是学雷丰阳视频入门的. 具体链接如下:B站尚硅谷SpringBoot教程 文章目录 spring项 ...

  3. Java-GUI编程实战之管理系统 Day3【学生管理系统GUI设计、学生管理系统增删改查、项目MVC结构介绍、Java技能图谱】

    视频.课件.源码[链接:https://pan.baidu.com/s/13ffqGDzH-DZib6-MFViW3Q 提取码:zjxs] Java-GUI编程实战之管理系统 Day1[项目开发流程. ...

  4. .NET Core实战项目之CMS 第十三章 开发篇-在MVC项目结构介绍及应用第三方UI

    作为后端开发的我来说,前端表示真心玩不转,你如果让我微调一个位置的样式的话还行,但是让我写一个很漂亮的后台的话,真心做不到,所以我一般会选择套用一些开源UI模板来进行系统UI的设计.那如何套用呢?今天 ...

  5. Django框架学习——1—(虚拟环境搭建、MVC思想与Django的MVT区别、Django项目的创建、运行Django项目、项目结构介绍)

    1.虚拟环境搭建 创建新的Django框架的虚拟环境: 注意:如果没有pipenv指令,需要安装这个支持库,同时需要记住配置它的环境变量,否则虚拟环境会安装在默认文件夹下(一般是C:\Users\Ad ...

  6. 原生Android开发基础项目结构介绍

    原生Android开发基础项目结构介绍 1.软件整体结构 2.具体的页面书写 3.实例分析 4.后续     下面先来总结一下软件的基本目录结构,这一般是开发的关键,只有明白了软件的目录结构,才能更加 ...

  7. web项目结构介绍及创建Maven web项目

    工具:IDEA旗舰版2021.3.1(社区版不太方便,亲测) 一.web项目结构介绍 首先就是这样的结构 projectname src main java                      ...

  8. vue-cli构建SPA项目结构介绍spa完成路由开发及嵌套路由

    目录 一.vue-cli构建SPA项目结构介绍 二.spa完成路由开发 三. 嵌套路由 一.vue-cli构建SPA项目结构介绍 前提:搭建好NodeJS环境    node -v    npm -v ...

  9. Vue项目目录结构介绍(三)

    前言 本章我们会对一个 Vue 项目的目录结构进行讲解,解释各子目录以及文件的作用,前端的模块化,Vue 单文件组件规范等. 1.基础目录和文件介绍 在上一章,我们通过 vue-cli 创建了一个新的 ...

最新文章

  1. 在Windows和Linux上编译gRPC源码操作步骤(C++)
  2. 万航单位换算器 V1.0 绿色版
  3. android+系统屏幕亮度,android 设置系统屏幕亮度
  4. 使用pushMeBaby后台测试远程推送
  5. 如何优化MySQL千万级大表
  6. IDEA无法加载log文件
  7. java中迭代器要导包吗_java 中迭代器的使用方法详解
  8. pku1189 钉子和小球
  9. Notification小案例
  10. Android 学习笔记--android基本
  11. JSP-02动态网页技术基础
  12. KMP扩展KMPManacher算法基础与习题(第二更)
  13. word替换向下箭头符号
  14. 独门秘籍 针式打印机换针小窍门
  15. 数据结构 ADT例子
  16. 阅读《人类简史》-- 1.认知革命
  17. c# AutoCAD 操作交互
  18. 【资源】这款工具让SpringBoot不再需要Controller、Service、DAO、Mapper!
  19. android蓝牙传输文件到mysql_蓝牙opp文件发送过程剖析
  20. 一篇文章教会大家制作小程序,利用小程序创业。

热门文章

  1. 防saq注入_去中心化交易所CYBEX将为区块链ICO注入新的价值观
  2. 电脑word在哪_word是什么?小学生:单词,大学生:论文排版工具
  3. html代码style图片width,HTML Style columnWidth用法及代码示例
  4. js获取数组中最大和最小值
  5. uniapp 用户登录
  6. list和对象数据复制CopyUtil工具类
  7. Intellij IDEA中Mybatis Mapper自动注入警告的6种解决方案
  8. MyBatis-Plus_快速入门0222
  9. powerdesigner逆向工程(sql转pdm)
  10. mybatis plus实现多表分页条件查询