JS中開發(fā)桌面端應(yīng)用程序的示例分析-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“JS中開發(fā)桌面端應(yīng)用程序的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“JS中開發(fā)桌面端應(yīng)用程序的示例分析”這篇文章吧。

網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站的開發(fā),更需要了解用戶,從用戶角度來建設(shè)網(wǎng)站,獲得較好的用戶體驗(yàn)。創(chuàng)新互聯(lián)公司多年互聯(lián)網(wǎng)經(jīng)驗(yàn),見的多,溝通容易、能幫助客戶提出的運(yùn)營(yíng)建議。作為成都一家網(wǎng)絡(luò)公司,打造的就是網(wǎng)站建設(shè)產(chǎn)品直銷的概念。選擇創(chuàng)新互聯(lián)公司,不只是建站,我們把建站作為產(chǎn)品,不斷的更新、完善,讓每位來訪用戶感受到浩方產(chǎn)品的價(jià)值服務(wù)。

1. package.json中的window字段無效

原因package.json中的window字段,只在main字段為*.html或是外部網(wǎng)址時(shí)有效,當(dāng)為 *.js時(shí)是無效的。

{
  "name": "blog",
  "main": "http://php.cn/",//main為網(wǎng)址,下方的window設(shè)定有效
  //"main": "index.html",//main為 *.html,下方的window設(shè)定有效
  //"main": "index.js?1.1.11",//main為 *.js,下方的window設(shè)定無效??!
  
  "version": "0.0.1",
  "window": {"title": "Nw.js Demo",//如果 index.html沒有title,則會(huì)顯示這里的值"icon": "assest/img/logo.png",//標(biāo)題欄圖標(biāo)"position": "center",//默認(rèn)顯示位置"width": 1280,"height": 680,"frame": true,//是否顯示最外層的框架,設(shè)為false之后 窗口的最小化、大化、關(guān)閉 就沒有了"resizable": true,"min_width": 1028
  },}

關(guān)于其他package.json中的可使用的配置見官網(wǎng):

2. nw-builder一次只能打包一個(gè)項(xiàng)目

nw默認(rèn)不包含打包成.exe文件的形式,遂nw-builder項(xiàng)目為自動(dòng)將nw應(yīng)用打包壓縮成可執(zhí)行文件的程序。
詳見:

假設(shè)nw-builder的配置文件如下:

var nw = new NwBuilder({
   version: '0.14.7', 
   files: './app/**',//nw應(yīng)用項(xiàng)目目錄
   platforms: ['win32'], });

配置字段files指定了app文件夾下的所有文件,但app文件夾下存在兩個(gè)項(xiàng)目:nw-demo和zfile-explorer
JS中開發(fā)桌面端應(yīng)用程序的示例分析?

對(duì)于這種情況nw-builder只會(huì)打包出按文件名排序的第一個(gè)文件夾項(xiàng)目:nw-demo
JS中開發(fā)桌面端應(yīng)用程序的示例分析?

3. 在nw中植入全局變量的方法

前提:需要在nw項(xiàng)目中的package.json中的main字段指定為*.js文件?;蚴侵付ū镜氐?html文件后再載入js文件

package.json文件{
  "name": "nw-demo",
  "version": "1.0.0",
  "description": "",
  "main": "./main.js?1.1.11",
  "scripts": {"start":"cd ../../ & gulp nw"
  },
  ...}

在mian字段指定的js文件中,再使用nw.Window.open來載入指定本地頁(yè)面或是外部網(wǎng)址,如:

main.js文件:nw.Window.open('./view/index.html', {height:600,width:800}, function (win) { });

在這個(gè)js文件中可以使用4種方法植入全局變量或全局方法:
1、將全局變量使用var方式聲明賦值
2、將全局變量直接賦值,無定義
3、將全局變量掛載到window
4、將全局變量掛載到global

測(cè)試代碼:

main.js文件//var定義方式var xxcanghai_1 = 1;//直接賦值方式xxcanghai_2 = 10;//掛載到window對(duì)象上window.xxcanghai_3 = 100;//掛載到global對(duì)象上global.xxcanghai_4 = 1000;

在用nw動(dòng)態(tài)載入的頁(yè)面中寫入一下代碼測(cè)試

./view/index.html文件

<script>
   console.log(xxcanghai_1);//報(bào)錯(cuò)
   console.log(window.xxcanghai_1);//undefined
   console.log(global.xxcanghai_1);//1

   console.log(xxcanghai_2);//報(bào)錯(cuò)
   console.log(window.xxcanghai_2);//undefined
   console.log(global.xxcanghai_2);//10

   console.log(xxcanghai_3);//報(bào)錯(cuò)
   console.log(window.xxcanghai_3);//undefined
   console.log(global.xxcanghai_3);//100

   console.log(xxcanghai_4);//報(bào)錯(cuò)
   console.log(window.xxcanghai_4);//undefined
   console.log(global.xxcanghai_4);//1000
</script>

結(jié)論
在動(dòng)態(tài)加載的頁(yè)面中,訪問全局變量只能使用global.*的方式
之所以會(huì)這樣是因?yàn)閚w的運(yùn)行環(huán)境是chromiumNodejs混合的。所以可以在網(wǎng)頁(yè)js中執(zhí)行Nodejs代碼。
雖然可以但不應(yīng)該!
從頁(yè)面代碼的責(zé)任一致性上不應(yīng)該在網(wǎng)頁(yè)代碼中編寫nodejs代碼,遂應(yīng)該將global中的對(duì)象寫入每個(gè)網(wǎng)頁(yè)的window對(duì)象中。之后頁(yè)面代碼再從window.*中調(diào)用

植入每個(gè)頁(yè)面window中的方法

可利用nw的對(duì)package.json擴(kuò)展字段的inject_js_startinject_js_end來實(shí)現(xiàn)。

官方說明:
inject_js_start: The injecting JavaScript code is to be executed after any files from css, but before any other DOM is constructed or any other script is run.

inject_js_end: The injecting JavaScript code is to be executed after the document object is loaded, before onload event is fired. This is mainly to be used as an option of Window.open() to inject JS in a new window.

http://docs.nwjs.io/en/latest/References/Manifest%20Format/#inject_js_start

inject_js_start字段指向本地的js文件,他可以在加載的任何頁(yè)面的任何頁(yè)面js執(zhí)行前執(zhí)行。

package.json文件:{
  "name": "blog",
  "version": "1.0.0",
  "main": "./main.html",
  "inject_js_start": "./js/inject_js_start.js?1.1.11",//設(shè)置所有頁(yè)面前植入的js文件地址
  "author": "php@gmail.com",
  "license": "ISC",}

在植入的js文件中,將global中的變量賦值到當(dāng)前頁(yè)面window中

./js/inject_js_start.js文件://將node的global中的變量寫入每個(gè)即將打開的頁(yè)面的js的window對(duì)象中window["xxcanghai_1"] = global["xxcanghai_1"]

之后即可在任何nw打開的頁(yè)面中通過window.xxcanghai_1來訪問全局變量了。

4. nwjs主進(jìn)程出現(xiàn)異常后不顯示窗體

現(xiàn)象:nwjs主進(jìn)程出現(xiàn)異常后不顯示窗體,不彈出錯(cuò)誤提示,也不會(huì)自動(dòng)結(jié)束進(jìn)程
原因package.json文件中的main字段為.js文件,同時(shí)此js文件出現(xiàn)error時(shí)會(huì)出現(xiàn)此問題。
解決方案package.json文件中的main字段使用.html文件,然后再載入要執(zhí)行的nw主程序js文件即可。這樣即使報(bào)錯(cuò)了也會(huì)顯示出空窗口,同時(shí)也可以通過開發(fā)者工具欄查看問題原因,用戶也可以關(guān)閉應(yīng)用,不至于無法結(jié)束進(jìn)程。

以上是“JS中開發(fā)桌面端應(yīng)用程序的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前題目:JS中開發(fā)桌面端應(yīng)用程序的示例分析-創(chuàng)新互聯(lián)
標(biāo)題URL:http://muchs.cn/article2/djeiic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站改版、網(wǎng)站排名虛擬主機(jī)、用戶體驗(yàn)、云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)