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