34
基于Electron Vue的桌面应用开发实践

Electron Vue的桌面应用开发实践 - img.w3ctech.comŸº于Electron-vue的桌应用实战2.pdf赵 帅 前端工程师 @美团点评-到店事业群 负责-度假业务系统程化

  • Upload
    others

  • View
    16

  • Download
    0

Embed Size (px)

Citation preview

  • Electron Vue

  • @-

    -

  • 02

    01

    04Electron Vue03

  • CRUD

    SDK

  • SDK

    DevOpsH5PC

  • IO

    Web

    GUI)

  • 02

    01

    0403 Electron Vue

  • Chromium

    Native

    C++/C#/C+(Windows)

    Objective-C/Swift(Mac)

    Qt: (Windows/Mac)

    NW.js/Electron(Windows/Mac)

    Native

  • Electron

    VS Code POSTMAN

  • 02

    01

    0403 Electron Vue

  • Electron

    Main-process Render-process

  • BrowserWindow

    BrowserWindow BrowserWindow

    1 2

    IDE, IM

    1 2

    Vuex

    Render Process

    Main Process

    Render Process

    Main Process

    IPCRPC

    Render Process

    IPC RPC

    IPC

  • Bridge Node API Native API

    Eggjs

    Cat

    Egg-cors Egg-Script

    Vue Vue-Router Vuex Iview

    Electron Main ProcessRender Process

    SSO Stash

    Electron-builder webpack Gulp etc

    UAC

  • bin jenkins.sh run-test.sh tasks gulp.dev.js gulp.prod.js conf gulpfile.babel.js webpack.dev.conf.js webpack.prod.conf.js postcss.config.js src components pages store router styles App.vue index.js package.json

    bin jenkins.sh upload.sh tasks gulp.dev.js gulp.prod.js release.js conf webpack.renderer.conf.js webpack.main.conf.js release.conf.js src main index.js utils.js renderer components pages store router App.vue index.js package.json

    Electron SWA Web SPA

  • Electron

  • Restart

    webpack DevServer

    htttp://localhost

    Electron Main Process

    webApp (Vue)

    1hotReload

    2

    2

    watch-runwebpack

    3

    Render Process file://static file

    1 3 4

  • App

    vue-devtools

    Electron inspect

    Debugchrome://inspect/#devices

    v8 Inspector

    Node

    WSChrome DevTools

    STDIO

    Electron

    Chrome DevTools Protocol

  • webpack Static fileTarget Electron-Build

    Mac

    Linux

    Window building main process building renderer process code signing building target=electron-demo-X.X.X.dmg

    Electron-Main Electron-Renderer

    Vue

    CDN

    Static File

    Web Native

    ElectronwebApp

  • Git

    Upload CDN

    Electron Build

    Code signing

    Jenkins Job

    Web-Hook

    Electron Build

    Code signing

    Unit Testing

  • Electron

  • #1

    Node Path file

    Stream

    Nativedialog Shell

    TouchBar

    Electron

    Vue Component

    NodeAPI NativeAPI

    Vue Component

    NodeAPI NativeAPI

    bridge

    bad case good case

  • #2

    Index Page

    http Login page

    http SSO Center

    Tiler callback Page

    Cookie

    Electron

    FileHTTP

    App ->registerStandardSchemes tiler://index.html http:// SSO proxy

    RFC3986

  • #3

    IPCMain

    IPCRender

    SendOn

    AutoUpdater

    setFeedURL()

    checkForUpdates

    update-downloaded

    quitAndInstall()

    Squirrel.Server

    Squirrel.Mac

    APP

    electron-osx-sign electron-builder

  • #3

    1.0

    1.2

    1.3

    bug

    SDK

  • #3

  • #4

    Main Process

    Render Process

    Clinet Server

    CrashReporter

    Crash Log

    Crashed

    Crash

    IM

    Crash SDK

  • #4

  • 02

    01

    0403 Electron Vue

  • ElectronWebWeb

    Electron

    html CSS JS Node.js OS API

    html CSS JS

    Mac / Window / Linux Nginx / CDN

    Crash

    DOM

  • Electron

    \

    devtronVue-devtools Electron inspect

    ESLint

    webpack

    DevOps

    Electron-build

    Spectron + Mocha

    SDK

    Electron

    babel

    Node RunTime Native API

    SDK SDK SDK SDK

    Vuex Vue-Router UI Vue

  • Electron

    master

    release-branch

    bugfix-branch

    dev-branch release-branch

    master release-branch

    dev-branch

    CDN

    release-prod

    API

    run release:prod run release:dev

    run dev run prod

    RD2

    RD1

    PR

    PR

    web-hook

    PR

    PR

    release-branch Jenkinsrelease-dev

  • [email protected]

    z416043658