精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

我是如何從零學習開發一款跨平臺桌面軟件的

開發 前端
最近一直在學習 Electron 開發桌面應用程序,目的是想做一個桌面編輯器,雖然一直在使用Typore這款神器,但無奈Typore太過國際化,在國內水土不服,無法滿足我的一些需求。

原始沖動

最近一直在學習 Electron 開發桌面應用程序,目的是想做一個桌面編輯器,雖然一直在使用Typore這款神器,但無奈Typore太過國際化,在國內水土不服,無法滿足我的一些需求。

[[283616]]

比如實現本地圖片上傳到云端(mac版可以借助iPic),無法幫我把本地圖片和文章一起發布到博客園、CSDN、SegmentFault、掘金等國內知名博客平臺,要么使用一些免費或付費的圖床,借助類似iPic的工具,把圖片一鍵上傳到云端。

我個人也嘗試過七牛云的免費10G存儲空間,但是說實話,這些免費的空間到最后一定是為了讓你成為付費用戶,各種限制各種吐槽在網上很容易可以搜索到。

免費的圖床如新浪微博等,還算是比較好的圖床工具,相比一些網絡上的壓根不知道啥公司甚至是歸屬個人的免費圖床,新浪應該是比較靠譜的,相對來說可以保證圖片的存活時間,我個人用過一些免費的圖床網站,記得印象深刻的就是服務器出問題,網站掛個公告,曾經的圖片再去訪問就是默認的404。

雖然新浪家大業大不是說倒閉就倒閉的,圖片相對穩定可靠,不過新浪的圖片服務器會檢測訪問來源Referer來防止外部網站引用,造成訪問403。

總結起來就是一句話,圖片還是隨著文章一鍵發布到博客平臺比較好。要丟一起丟~

心理掙扎

緣起這個動機,但是下定決心依舊是困難重重。

我個人是一個Java工程師,雖說搞過Andorid、HTML前端,但對前端深感不適的我果斷放棄了。對于桌面程序開發,我連Swing都不會,造一個Markdown編輯器有點難,何況還要加上這些定制功能。

猶猶豫豫,還是決定去嘗試一下。于是調研寫跨平臺的一些途徑。

先嘗試Swing,不過Swing不好實現我期望的一些功能,改成JavaFX倒是可以,不過說實話,寫起來很累,太過繁瑣,就放棄了。最后把目光瞄向electron,就它了,HTML+Js+Css,聽起來就很簡單,事實證明,無論是測試還是打包都很方便。

決定之后,便開始進行 Electron 的系統學習。

邁出第一步

第一步就是安裝 Electron 的本地開發環境,這也是大多數應用開發的第一步。

你需要安裝 Node.js 在你的本地電腦,Electron 也是依賴于 Node.js 的環境,嚴格來說, Electron 通過將 Chromium 和 Node.js 合并到同一個運行時環境中,并將其打包為Mac,Windows和Linux系統下的應用來實現這一目的。

關于 Electron 的具體開發流程,這里不再贅述,你完全可以在開發中使用Web前端開發的思維,除了在處理多個窗口之間交互的時候,就不得不了解Eelctron的進程機制。

主進程和渲染進程

Electron 運行 package.json 的 main 腳本的進程被稱為主進程。在主進程中運行的腳本通過創建web頁面來展示用戶界面。一個 Electron 應用總是有且只有一個主進程。

由于 Electron 使用了 Chromium 來展示 web 頁面,所以 Chromium 的多進程架構也被使用到。每個 Electron 中的 web 頁面運行在它自己的渲染進程中。

在普通的瀏覽器中,web頁面通常在沙盒環境中運行,并且無法訪問操作系統的原生資源。然而 Electron 的用戶在 Node.js 的 API 支持下可以在頁面中和操作系統進行一些底層交互。

主進程與渲染進程的區別

主進程使用 BrowserWindow 實例創建頁面。每個 BrowserWindow 實例都在自己的渲染進程里運行頁面。當一個 BrowserWindow 實例被銷毀后,相應的渲染進程也會被終止。

主進程管理所有的web頁面和它們對應的渲染進程。每個渲染進程都是獨立的,它只關心它所運行的 web 頁面。

在頁面中調用與 GUI 相關的原生 API 是不被允許的,因為在 web 頁面里操作原生的 GUI 資源是非常危險的,而且容易造成資源泄露。如果你想在 web 頁面里使用 GUI 操作,其對應的渲染進程必須與主進程進行通訊,請求主進程進行相關的 GUI 操作。

主進程與渲染進程通信

那么進程間如何通訊?

Electron為主進程( main process)和渲染器進程(renderer processes)通信提供了多種實現方式,如可以使用ipcRenderer 和 ipcMain模塊發送消息,使用 remote模塊進行RPC方式通信。

你還可以用 Electron 內的 IPC 機制實現。將數據存在主進程的某個全局變量中,然后在多個渲染進程中使用 remote 模塊來訪問它。

  1. // 在主進程中 
  2. global.sharedObject = { 
  3.   someProperty: 'default value' 
  4. // 在第一個頁面中 
  5. require('electron').remote.getGlobal('sharedObject').someProperty = 'new value' 
  6. // 在第二個頁面中 
  7. console.log(require('electron').remote.getGlobal('sharedObject').someProperty) 

使用Electron的API

Electron在主進程和渲染進程中提供了大量API去幫助開發桌面應用程序, 在主進程和渲染進程中,你可以通過require的方式將其包含在模塊中以此,獲取Electron的API

  1. const electron = require('electron'

所有Electron的API都被指派給一種進程類型。許多API只能被用于主進程或渲染進程中,但其中一些API可以同時在上述兩種進程中使用。每一個API的文檔都將聲明你可以在哪種進程中使用該API。

Electron中的窗口是使用BrowserWindow類型創建的一個實例, 它只能在主進程中使用。

  1. // 這樣寫在主進程會有用,但是在渲染進程中會提示'未定義' 
  2. const { BrowserWindow } = require('electron'
  3.  
  4. const win = new BrowserWindow() 

因為進程之間的通信是被允許的, 所以渲染進程可以調用主進程來執行任務。Electron通過remote模塊暴露一些通常只能在主進程中獲取到的API。為了在渲染進程中創建一個BrowserWindow的實例,我們通常使用remote模塊為中間件:

  1. // 這樣寫在渲染進程中時行得通的,但是在主進程中是'未定義' 
  2. const { remote } = require('electron'
  3. const { BrowserWindow } = remote 
  4.  
  5. const win = new BrowserWindow() 

使用Node.js的API

Electron同時在主進程和渲染進程中對Node.js 暴露了所有的接口。這里有兩個重要的定義:

1)所有在Node.js可以使用的API,在Electron中同樣可以使用。在Electron中調用如下代碼是有用的:

  1. const fs = require('fs'
  2.  
  3. const root = fs.readdirSync('/'
  4.  
  5. // 這會打印出磁盤根級別的所有文件 
  6. // 同時包含'/''C:\'。 
  7. console.log(root) 

正如您可能已經猜到的那樣,如果您嘗試加載遠程內容, 這會帶來重要的安全隱患。您可以在我們的 安全文檔 中找到更多有關加載遠程內容的信息和指南。

2)你可以在你的應用程序中使用Node.js的模塊。選擇您最喜歡的 npm 模塊。npm 提供了目前世界上最大的開源代碼庫,那里包含良好的維護、經過測試的代碼,提供給服務器應用程序的特色功能也提供給Electron。

例如,在你的應用程序中要使用官方的AWS SDK,你需要首先安裝它的依賴:

  1. npm install --save aws-sdk 

然后在你的Electron應用中,通過require引入并使用該模塊,就像構建Node.js應用程序那樣:

  1. // 準備好被使用的S3 client模塊 
  2. const S3 = require('aws-sdk/clients/s3'

有一個非常重要的提示: 原生Node.js模塊 (即指,需要編譯源碼過后才能被使用的模塊) 需要在編譯后才能和Electron一起使用。

絕大多數的Node.js模塊都不是原生的, 在650000個模塊中只有400是原生的。當然了,如果你的確需要原生模塊,可以查詢如何重新為Electron編譯原生模塊(很簡單)。

最終產品殺青落地

終于搞明白了 Electron 的應用架構,那么接著就要進入產品的開發階段。比較慶幸的是,ELectron 的UI完全由CSS+HTML組成,這部分可用的框架太多了,我選擇了又老又知名的 BootStarp 框架搭建界面UI,還引用了JS框架JQuery。選擇了 electron-store 作為本地存儲文件,至于最關鍵的Markdown語法解析,對比了一番主流解析框架,最終選擇了 markdown-it。貼一下效果圖:

這款軟件我給他起名為 JustWrite,意思就是現在就寫,也是在督促自己吧,畢竟猶豫徘徊,等于白來。

現在軟件的功能除了包含一鍵發布本地文章加本地圖片到博客園、CSDN、SegmentFault、掘金、開源中國等平臺,我還打算將他打造為一個體驗不錯的Markdown寫作軟件?,F在你閱讀的這篇文章,就是我使用 JustWrite 書寫的,使用的字體是我個人喜歡的幼圓體,除此之外,還有六款風格迥異的字體可以切換使用。字號也是可以動態放大或者縮小,還可以關閉右側預覽,專注于寫作,如下圖所示:

這些截圖是我截屏后使用快捷鍵Ctrl+V一鍵粘貼的,圖片會自動放到當前md文件所在目錄下的picture文件夾內。

關于 JustWrite 從構思到實踐的心路歷程大致就以上這些了,這次開發 JustWrite 也讓我過了一把產品經理的癮,基本已經滿足了我的日常需求。如果你有更好的想法和創意也可以告訴我,說不定第二天就會實現了。

Github:https://github.com/yueshutong/JustWrite

 

責任編輯:武曉燕 來源: 薛勤的博客
相關推薦

2013-05-27 09:47:33

Java開發Java跨平臺

2013-10-31 16:31:19

2021-08-26 05:15:22

圖片編輯器 H5-DooringMitu-Doorin

2022-08-31 08:32:22

數據可視化項目nocode

2021-09-11 21:03:09

可視化搭建框架

2015-08-10 11:41:00

SQL注入SQL注入工具Sqlmapi

2015-07-29 09:15:43

Dukto開源工具

2009-05-11 15:12:03

網管軟件產品摩卡軟件

2018-04-16 16:31:56

前端開發從零開始

2022-04-18 19:02:53

chrome擴展瀏覽器

2021-09-26 16:31:18

滑動驗證碼開發組件設計

2021-09-26 05:00:11

Vscode插件

2014-03-17 15:16:02

移動開發iOS應用

2021-09-28 20:19:54

APKAndroid流程

2015-08-28 08:44:43

web移動開發轉行

2022-05-27 10:00:06

C++游戲引擎

2023-08-22 21:45:05

Warp開源安全文件

2022-02-12 00:00:00

架構

2021-01-18 05:59:21

開發桌面版應用技術熱點

2019-11-11 08:00:00

Doppler遠程監測工具Linux
點贊
收藏

51CTO技術棧公眾號

6080国产精品一区二区| 丰满人妻一区二区| 中文字幕在线观看播放| 国产精选一区| 972aa.com艺术欧美| 日韩一二三在线视频播| 无码专区aaaaaa免费视频| 一级黄色片视频| 在线一级成人| 亚洲超碰97人人做人人爱| 91在线视频一区| 亚洲精品激情视频| 国产黄大片在线观看画质优化| 久久一本综合频道| 日韩电影中文字幕一区| 久草视频国产在线| 亚洲第一视频在线播放| 亚洲成人三区| 欧美日韩国产影片| 日韩精品大片| 久久精品无码av| 欧美久久精品| 午夜国产不卡在线观看视频| 日本在线一区| 欧美一区二区三区黄片| 精品av久久久久电影| 欧美成人a视频| 国产高清不卡无码视频| 国产成人久久精品77777综合| 日韩国产在线| 欧美精品第1页| 一区二区三区|亚洲午夜| 中文区中文字幕免费看| 激情综合网站| 日韩精品免费综合视频在线播放| 成人性生交视频免费观看| 成码无人av片在线观看网站| 91视频免费看| 国产精品27p| 五月激情四射婷婷| 性欧美video另类hd尤物| 国产精品国产三级国产专播品爱网| 国产精品偷伦免费视频观看的| 欧美激情 一区| 国内毛片久久| 色噜噜狠狠成人网p站| 亚洲高清资源综合久久精品| 一卡二卡三卡在线观看| 久久综合影视| 国内精久久久久久久久久人| 亚洲av无码一区二区三区网址| 625成人欧美午夜电影| 国产欧美日本一区视频| 成人免费黄色网| 精品无码一区二区三区电影桃花 | 欧美日韩一区二区三区四区不卡| 欧美一级欧美一级在线播放| 美女黄色片网站| 亚洲精品福利网站| 国产福利一区二区三区视频| 97在线视频国产| 国产又黄又粗的视频| 九九视频精品全部免费播放| 欧美精品电影在线播放| 国产精品区在线| av电影免费在线看| 国产午夜精品美女毛片视频| 国产欧美最新羞羞视频在线观看| 天天看片中文字幕| 精品一区免费| 亚洲小视频在线观看| 手机在线免费毛片| 精品91久久| 在线免费一区三区| 女人帮男人橹视频播放| 丁香花在线电影| 中文一区一区三区高中清不卡| 99国产在线视频| 国产成人av免费| 伊人激情综合| 青青a在线精品免费观看| 精品欧美一区二区久久久久| 欧美福利在线播放网址导航| 亚洲女人天堂av| 精品国产免费久久久久久婷婷| 日韩一级二级| 日韩欧美视频一区二区三区| 警花观音坐莲激情销魂小说| 亚洲91av| 1024国产精品| 亚洲精品乱码视频| www久久日com| 黄色精品在线看| 久久手机在线视频| 成人福利片网站| 天天免费综合色| 搡女人真爽免费午夜网站| 男人久久天堂| 亚洲午夜久久久久久久久久久| 中文字幕在线亚洲三区| 国产黄在线看| 久久久精品tv| 蜜桃成人在线| 色资源在线观看| 成人av午夜影院| αv一区二区三区| 国产一区精品| 国产午夜精品久久久久久久 | 国产精品高清在线观看| 日本最新中文字幕| 国产精品v一区二区三区 | 牛牛在线精品视频| 亚洲图片激情小说| 在线观看日韩片| 天堂√8在线中文| 性做久久久久久久久| 麻豆三级在线观看| 色综合天天色| 亚洲成人aaa| 91亚洲一线产区二线产区| 欧洲乱码伦视频免费| 亚洲性无码av在线| 国产乱码久久久久久| 久久超级碰视频| 91手机视频在线观看| 飘雪影院手机免费高清版在线观看| 亚洲人精品一区| 国产又大又黄又猛| 免费一区二区三区视频导航| 欧美精品18videos性欧| 国产无遮挡裸体免费视频| 在线视频观看日韩| 清纯唯美亚洲综合| 亚洲第一页综合| 亚洲日本韩国一区| 欧美wwwwwww| 欧美精美视频| 91国内在线视频| 欧美bbbbbbbbbbbb精品| 久久一日本道色综合久久| 国产精品大全| 青青草视频在线观看| 亚洲国产综合91精品麻豆| 999热精品视频| 99九九热只有国产精品| 九九精品在线播放| 日韩av在线播放观看| 国产精品一区二区黑丝| 国产在线精品一区二区三区》| 清纯唯美亚洲色图| 精品福利一区二区| 日本丰满少妇裸体自慰| 日韩精品一区二区三区免费观看| 国产成人精品av在线| 免费一级在线观看播放网址| 成人欧美一区二区三区1314 | 亚洲免费福利| 亚洲美女自拍视频| 国产三级精品三级在线观看| 久久在线观看免费| 在线观看日韩羞羞视频| 国产亚洲欧美日韩精品一区二区三区 | www成人在线| 久久女同互慰一区二区三区| av动漫在线看| 福利精品在线| 亚洲第一男人天堂| 日韩久久久久久久久| av一区二区三区四区| 亚洲综合第一| 电影91久久久| 国产亚洲精品高潮| 波多野结衣日韩| 丁香婷婷综合色啪| 一区视频二区视频| 国产精久久一区二区| 九九久久国产精品| 熟妇高潮一区二区三区| 亚洲欧美综合网| 秋霞午夜鲁丝一区二区| 成人三级视频| 456亚洲影院| 亚洲av无码乱码国产麻豆| 亚洲午夜免费视频| 国产一二三四五区| 亚洲精品日韩久久| 欧美综合激情| 免费高潮视频95在线观看网站| 亚洲乱码av中文一区二区| 精品乱码一区内射人妻无码 | 久视频在线观看| 91麻豆swag| 日本高清久久久| 色橹橹欧美在线观看视频高清| 久久久www成人免费精品| 色老头在线视频| 91视频.com| 自拍偷拍一区二区三区四区| 欧美成人嫩草网站| 成人免费高清完整版在线观看| av手机免费在线观看| 一区二区三区视频在线| 丁香六月婷婷综合| 成人免费视频一区二区| 欧美激情精品久久久久久小说| 色综合久久中文| 91香蕉国产在线观看| 国产精品迅雷| 欧美精品电影免费在线观看| 国产高清一区在线观看| 亚洲成人在线网| 国产女人高潮的av毛片| 国产精品网站一区| 黄色录像a级片| 国产美女在线观看一区| 亚洲人成77777| 高潮按摩久久久久久av免费| 成人av.网址在线网站| 亚洲性色av| 欧美情侣性视频| 91在线高清| 欧美日韩精品系列| 91视频免费网址| 亚洲一区免费在线观看| 一本色道久久88| 激情综合色综合久久综合| 中文字幕99| 国产欧美高清视频在线| 狠狠色噜噜狠狠狠狠色吗综合| av中文字幕在线看| 欧美成人精品一区二区| 懂色av成人一区二区三区| 欧美日韩亚洲综合| 神马午夜精品91| 国产成人精品亚洲777人妖| 男操女免费网站| 美女网站久久| 亚洲精品无人区| 深爱激情久久| 久久久久久久久久久久久9999| 永久免费毛片在线播放| 久久久久久成人精品| 超碰在线免费公开| 日韩一区二区三区在线播放| 国产女主播在线直播| 亚洲欧美一区二区激情| 日韩专区一区二区| 精品调教chinesegay| 亚洲一级片免费看| 亚洲va欧美va人人爽| 成人观看免费视频| 亚洲欧美激情插 | 欧美一区免费看| 欧美日韩中国免费专区在线看| 久久草视频在线| 日本一区二区三区久久久久久久久不| 性久久久久久久久久久| 日韩电影在线一区二区三区| 日本福利视频网站| 亚洲午夜极品| 福利视频一二区| 青青草综合网| 在线看视频不卡| 久久精品亚洲人成影院| 久久观看最新视频| 国产免费av一区二区三区| 日韩欧美在线电影| 日韩在线欧美| 91视频 - 88av| 国产偷自视频区视频一区二区| 中文字幕中文字幕在线中一区高清| 欧美aaaa视频| 欧美精品久久| 国产成人高清精品免费5388| 国产一区二区三区无遮挡| 亚洲人成网站77777在线观看| 欧美一区二区三区四区夜夜大片| 欧美艳星介绍134位艳星| 一本一道久久久a久久久精品91| 91精品国产自产拍在线观看蜜| 日韩精品久久一区二区| 99精品视频免费观看视频| 欧美xxxx吸乳| 亚洲五月婷婷| 看欧美ab黄色大片视频免费| 国产真实精品久久二三区| 国产香蕉精品视频| 国产在线视频一区二区三区| 久久久久无码国产精品一区李宗瑞 | 国产精品成人免费视频| www 久久久| 国产精品观看在线亚洲人成网| 99精品美女视频在线观看热舞| 国产98在线|日韩| 国产亚洲欧美日韩在线观看一区二区| 免费看av软件| 色综合天天爱| 激情五月婷婷六月| 日韩精品一级二级| 乳色吐息在线观看| 久久久久久日产精品| 日本青青草视频| 色婷婷综合激情| 亚洲欧美综合自拍| 日韩一区二区免费高清| 男人天堂亚洲二区| 欧美日韩aaaa| 国语自产精品视频在线看抢先版结局| 国产伦视频一区二区三区| ccyy激情综合| 精品国产_亚洲人成在线| 日本不卡免费一区| 欧美 日韩 亚洲 一区| 国内精品不卡在线| jizz中文字幕| 国产农村妇女毛片精品久久麻豆| 久久精品www人人爽人人| 亚洲一区二区在线观看视频 | 欧美二区乱c少妇| 日韩在线免费播放| 色综合导航网站| 久久青草免费| 三区精品视频观看| 日韩欧美视频在线播放| 日韩在线综合网| 东方欧美亚洲色图在线| 午夜免费激情视频| 在线播放91灌醉迷j高跟美女| 黄网在线免费| 欧美性受xxxx白人性爽| 国产精品自在| 欧美一区二区三区综合| 国产麻豆一精品一av一免费| 四季av中文字幕| 色噜噜夜夜夜综合网| 青青久草在线| 欧美亚洲国产精品| 人体久久天天| 欧美 日韩 国产在线观看| av在线不卡网| 97免费在线观看视频| 亚洲精品97久久| 国产三级在线免费| 国产98色在线| 日韩精品中文字幕吗一区二区| 国产精品夜夜夜一区二区三区尤| 亚洲精品久久| 色男人天堂av| 一区二区在线电影| 人人草在线观看| 亚洲欧美日韩中文在线| 日本不卡一二三| 91香蕉视频在线下载| 欧美人与物videos另类xxxxx| 欧美女人性生活视频| 精品一区二区三区蜜桃| 三级黄色录像视频| 欧美日韩国产一中文字不卡| 亚洲午夜激情视频| 色婷婷综合久久久久| 日韩av影片| 日韩av一级大片| 免费美女久久99| 国产激情视频网站| 欧美日韩国产专区| 国外av在线| 成人观看高清在线观看免费| 亚洲二区三区不卡| 久久国产劲爆∧v内射| 精品久久久久久中文字幕| 日夜干在线视频| 国产噜噜噜噜久久久久久久久| 欧美电影免费播放| 亚洲欧洲国产视频| 一本色道久久综合狠狠躁的推荐| h网站视频在线观看| 高清一区二区三区日本久| 色婷婷久久久| www.久久av.com| 亚洲福利国产精品| 国产视频第一页| 久久久久久久久中文字幕| 亚洲人成伊人成综合图片| 黄色手机在线视频| 亚洲国产精品一区二区久久| 欧美日本网站| 亚洲一区二区三区四区视频 | 欧美日韩在线成人| 成人爱爱电影网址| 成年人av网站| 欧美精品少妇videofree| 全球av集中精品导航福利| 久热精品在线观看视频| 一区二区三区在线视频观看| 牛牛影视精品影视| 亚洲最大的av网站| 美女精品在线观看| 欧美精品乱码视频一二专区| 亚洲图片在线综合| 成人免费在线电影网|