最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用JavaScript開發(fā)跨平臺的桌面應用詳解

 更新時間:2017年07月27日 08:10:18   投稿:jingxian  
下面小編就為大家?guī)硪黄褂肑avaScript開發(fā)跨平臺的桌面應用詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

任何可以使用JavaScript來編寫的應用,最終會由JavaScript編寫。--Atwood定律

Atwood's Law是Jeff Atwood在2007年提出的:“any application that can be written in JavaScript, will eventually be written in JavaScript.”。據(jù)說,這只是當時開的一個玩笑。不過,這個玩笑似乎漸漸變成了現(xiàn)實。從各種華麗的網(wǎng)頁框架,到功能強大的庫,到了現(xiàn)在的機器學習,服務器開發(fā),都有JavaScript的身影。從JavaScript也衍生出了一些語言,例如TypeScript。而使用JavaScript制作游戲也變得方便起來,可以使用CocosCreator。Html5的橫空出世,也將之前JavaScript在網(wǎng)頁的輔助地位提升到了主力地位,nodejs的出現(xiàn)更是讓其實現(xiàn)了所謂的“全?!遍_發(fā),現(xiàn)在JavaScript甚至可以做手機應用。但是,在移動端、瀏覽器、服務器端有需求,在桌面應用上也會有需求。能不能使用JavaScript來開發(fā)可以跨平臺的應用程序呢?答案是:可以。使用Electron即可方便的使用JavaScript進行桌面應用開發(fā)??梢钥吹?,很多大名鼎鼎的程序都是由它直接或間接開發(fā)而成,例如Atom,VSCode等。

需要注意的是,目前使用Electron開發(fā)桌面應用程序有一些限制條件。首先,我們無法調(diào)用復雜的系統(tǒng)API(或者說不能直接做到),這就導致我們無法開發(fā)更加復雜的企業(yè)級應用。其次,它的性能目前仍然不能與原生應用相提并論。我們可以認為,Electron就是一個套著瀏覽器外殼的包裝盒,這個包裝盒給我們讀寫文件的能力,我們開發(fā)好web應用程序,調(diào)試完成后使用它來進行封裝,給我們的web應用程序加一個瀏覽器內(nèi)核。這樣,我們的js代碼就可以脫離傳統(tǒng)瀏覽器模式,獨立運行了。然而它和傳統(tǒng)的瀏覽器模式道理是一樣的,所以有極高性能需求時,還是需要使用C++、Java等開發(fā)。但大多數(shù)的應用程序根本不需要那么高的性能要求,所以使用Electron開發(fā)是沒有問題的。接下來,我們嘗試著從零開始,一步一步的使用Electron來開發(fā)Windows桌面應用,當然Mac和Linux也適用此方法。

首先,我們進入Electron的官網(wǎng):https://electron.atom.io/。進入后,發(fā)現(xiàn)全英文,不要緊,實際上大多數(shù)都可以不看。我們直接來到首頁的這里:

如圖所示,官方給出的安裝方法是使用git和npm,但我們可以不使用git。然而,npm是必要的。npm是nodejs的包管理工具,新版本的nodejs已經(jīng)集成了npm,安裝nodejs后直接附帶npm。然而,一些舊版本的nodejs,或者從一些非官方處下載的不可靠的nodejs,可能不帶npm,所以我們在使用它之前必須先安裝nodejs和npm。網(wǎng)上有很多教程,這里不再演示。需要注意的是,第三個命令npm install && npm start中,我們可以只輸入npm install,因為后面附帶的指令很可能導致控制臺“死機”的情況,一直卡住且無法成功安裝Electron。所以,我們只要進入我們指定的目錄,然后執(zhí)行以下命令即可(這些命令各個系統(tǒng)通用):

如此一來,我們就安裝好了Electron。文件夾中:

打開來看,文件的目錄結(jié)構(gòu)是這樣的:

目錄看似復雜,其實,我們甚至可以不管這些文件!main.js可以相當于我們的配置文件,里面有一些配置信息,默認情況下,我們的應用程序會直接打開這個目錄下的index.html。我們可以通過修改main.js中的參數(shù)來更改入口文件。當然,package.json也有用,之后都會講到。

首先,我們可以使用electron.exe直接運行應用。在我的目錄中,electron.exe在E:\electron-quick-start\node_modules\electron\dist目錄下。我們可以使用electron.exe <rootpath> 這種命令格式直接運行我們的應用,rootpath代表你要運行的項目目錄。例如,我之前用three.js編寫的應用,目錄是:E:\app。

我們在控制臺中輸入指令:

效果:

確實是以桌面應用程序的形式運行了。但是,我們希望我們的應用程序直接打包成.exe,.app的形式,而不是讓我們的用戶手動輸入命令啟動應用程序。而看看官方文檔,你就會發(fā)現(xiàn),官方給出的打包方法還是有一些坑的,如果處理不好,就要中招。所以,我們使用更加方便的electron-packager。github鏈接在此:https://github.com/electron-userland/electron-packager。首先,我們還是按教程輸入指令來安裝它。同樣,這個指令在Linux,Mac,Windows上通用。

安裝方法和Electron一樣,從git上下載下來,進行安裝。需要注意的是,上圖的兩個指令我們執(zhí)行其中一個就可以了。推薦執(zhí)行第二個,因為第二個是全局安裝,安裝之后我們就可以在控制臺直接執(zhí)行electron-packager命令,大大方便了我們的效率。

安裝好后,我們開始打包。首先,把我們的項目目錄拷貝到我們之前安裝的electron目錄下:

由于我們的應用程序入口文件是app下的CG1.html,所以我們還需要打開main.js配置一下入口文件:

然后,打開package.json文件,配置一下參數(shù)。

這里只配置了name參數(shù),因為name參數(shù)和我們打包之后生成的應用程序名稱有關(guān)。接下來,通過控制臺進入我們的electron目錄(就是有main.js有package.json的那個目錄),

在控制臺執(zhí)行如下命令:

不要漏看了還有個".",這個指當前目錄的意思。其實,如果全局安裝了electron-packager,那我們呀可以把.換成任意的路徑。由于這個命令可以自動的檢測當前計算機的操作系統(tǒng),還能檢測出是32位還是64位,所以我們大可省略一些參數(shù)。但如果要生成可定制平臺的軟件,需要帶上一些參數(shù),詳細的在其項目的github中都已給出。相信大家如果有這個需求,那搞定這些參數(shù)應該不在話下。靜待一會兒,打包完畢。我們可以在文件夾下看到多了一個名為CG1-win32-x64的文件夾。打開之后,點擊CG1.exe,即可打開應用程序,此程序已經(jīng)可以作為發(fā)布版本提供給用戶!

最后,推薦一下Electron的中文教程:https://www.w3cschool.cn/electronmanual/p9al1qkx.html

以上這篇使用JavaScript開發(fā)跨平臺的桌面應用詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • TypeScript 泛型的使用

    TypeScript 泛型的使用

    這篇文章主要介紹了TypeScript 泛型的使用,在JavaScript中,封裝一個API可以具有多種用途,因為其實弱類型語言,但是就因為是弱類型可以最終得到的結(jié)果并不是我們想要的,下面我們就來看看具體TypeScript 泛型的使用吧
    2021-12-12
  • JavaScript 異步調(diào)用框架 (Part 5 - 鏈式實現(xiàn))

    JavaScript 異步調(diào)用框架 (Part 5 - 鏈式實現(xiàn))

    在上一篇文章里面,我們?yōu)楫惒秸{(diào)用框架設計了一種鏈式調(diào)用方式,來增強異步調(diào)用隊列的代碼可讀性,現(xiàn)在我們就來編寫實現(xiàn)這部分功能的代碼。
    2009-08-08
  • js中?new?Date().getTime()得到的是毫秒數(shù)時間戳

    js中?new?Date().getTime()得到的是毫秒數(shù)時間戳

    今天在寫一個函數(shù)的時候需要用的一個時間戳方便調(diào)用不同的隨機數(shù)?那么時間戳就是比較好的方式,主要怕瀏覽器緩存數(shù)據(jù),下面就為大家簡單介紹一下
    2023-07-07
  • ESLint的簡單使用方法(js,ts,vue)

    ESLint的簡單使用方法(js,ts,vue)

    ESLint是一個用于統(tǒng)一團隊編碼規(guī)范、減少代碼錯誤的工具,它可以手動安裝并配置,支持JavaScript、TypeScript和Vue.js等語言,文章詳細介紹了如何手動下載和配置ESLint,需要的朋友可以參考下
    2025-01-01
  • JS實現(xiàn)的進制轉(zhuǎn)換,浮點數(shù)相加,數(shù)字判斷操作示例

    JS實現(xiàn)的進制轉(zhuǎn)換,浮點數(shù)相加,數(shù)字判斷操作示例

    這篇文章主要介紹了JS實現(xiàn)的進制轉(zhuǎn)換,浮點數(shù)相加,數(shù)字判斷操作,結(jié)合實例形式分析了JavaScript數(shù)值運算、判斷相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • js實現(xiàn)全選和全不選功能

    js實現(xiàn)全選和全不選功能

    這篇文章主要為大家詳細介紹了js實現(xiàn)全選和全不選功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • JS操作xml對象轉(zhuǎn)換為Json對象示例

    JS操作xml對象轉(zhuǎn)換為Json對象示例

    本篇文章主要介紹了JS操作xml對象轉(zhuǎn)換為Json對象示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • 原生js實現(xiàn)移動端Touch輪播圖的方法步驟

    原生js實現(xiàn)移動端Touch輪播圖的方法步驟

    這篇文章主要介紹了原生js實現(xiàn)移動端Touch輪播圖的方法步驟,touch輪播圖其實就是通過手指的滑動,來左右切換輪播圖,touch輪播圖其實就是通過手指的滑動,來左右切換輪播圖,
    2019-01-01
  • JavaScript獲取XML數(shù)據(jù)附示例截圖

    JavaScript獲取XML數(shù)據(jù)附示例截圖

    這篇文章主要介紹了JavaScript獲取XML數(shù)據(jù)的方法,需要的朋友可以參考下
    2014-03-03
  • JavaScript中常見的八個陷阱總結(jié)

    JavaScript中常見的八個陷阱總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于JavaScript中八個常見的陷阱,這些陷阱雖然針對Javascript初學者,但是磚家們你們也可以看一看,避免入了這些坑,感興趣的朋友們下面來一起看看吧。
    2017-06-06

最新評論

池州市| 马公市| 德令哈市| 平遥县| 石门县| 黔西| 南京市| 剑河县| 德惠市| 德安县| 罗田县| 衡山县| 马山县| 湖南省| 滨州市| 黄石市| 淮滨县| 樟树市| 宝丰县| 绥芬河市| 乡宁县| 精河县| 阿坝县| 大田县| 吴桥县| 六枝特区| 福建省| 阿克苏市| 泸水县| 大悟县| 将乐县| 大兴区| 内乡县| 康乐县| 禹城市| 屏东县| 乐昌市| 工布江达县| 沅陵县| 文化| 万荣县|