1. 程式人生 > >nw.js node-webkit系列(3)基本程式結構與配置

nw.js node-webkit系列(3)基本程式結構與配置

本節開始,部分內容參照我們的nwjs前輩玄魂的文章,其中也會加入博主在使用nwjs開發專案過程中總結的一些實戰經驗。我們都是站在巨人的肩上繼續努力學習,去其糟粕留其精華,好的技術就應該不斷總結和傳播,那麼我們現在開始吧!

(一)基本程式結構


如上圖,是一個nw程式的基本組織結構,在根目錄下有package.json(程式的配置檔案)和index.html(可以是任意名稱,應用的啟動頁面);js/css/resources分別是應用的樣式、指令碼、和資原始檔(html、圖片等);node_modules存放node.js的擴充套件元件。這只是一個通用的基本組織結構,實際專案的組織結構,不必一定按照此結構進行搭建,如專案使用的是js模組化程式設計require框架的。最終的組織結構以適應實際專案為準,但檔案package.json和index.html必須放在根目錄下

(二)配置檔案package.json

nw在啟動應用程式時,首先要讀取package.json檔案,初始化基本屬性,下面我們看看package.json的完整引數。每個引數配置都標有註釋。

{
	/**指定程式的起始頁面。*/
	"main": "index.html",
	/**字串必須是小寫字母或者數字,可以包含.或者_或者-不允許帶空格。name必須全域性唯一。*/
	"name": "demo",
	/**程式描述*/
	"description": "demo app of node-webkit",
	/**程式版本號*/
	"version": "0.1.0",
	/**關鍵字*/
	"keywords": ["demo","node-webkit"],
	/**bool值,如果設定為false,將禁用webkit的node支援。*/
	"nodejs": true,
	/**
	* 指定一個node.js檔案,當程式啟動時,該檔案會被執行,啟動時間要早於node-webkit載入html的時間。
	* 它在node上下文中執行,可以用它來實現類似後臺執行緒的功能。
	* (不需要可註釋不用)
	*/
	//"node-main": "js/node.js",
	/**
	* bool值。預設情況下,如果將node-webkit程式打包釋出,那麼只能啟動一個該應用的例項。
	* 如果你希望允許同時啟動多個例項,將該值設定為false。
	*/
	"single-instance": true,
	/**視窗屬性設定 */
	"window": {
		/**字串,設定預設title。*/
		"title": "demo",
		/**視窗的icon。*/
		"icon": "link.png",
		/**bool值。是否顯示導航欄。*/
		"toolbar": false,
		/**bool值。是否允許調整視窗大小。*/
		"resizable": true,
		/**是否全屏*/
		"fullscreen": false,
		/**是否在win工作列顯示圖示*/
		"show_in_taskbar": true,
		/**bool值。如果設定為false,程式將無邊框顯示。*/
		"frame": true,
		/**字串。視窗開啟時的位置,可以設定為“null”、“center”或者“mouse”。*/
		"position": "center",
		/**主視窗的的寬度。*/
		"width": 800,
		/**主視窗的的高度。*/
		"height": 670,
		/**視窗的最小寬度。*/
		"min_width": 400,
		/**視窗的最小高度。*/
		"min_height": 335,
		/**視窗顯示的最大寬度,可不設。*/
		"max_width": 800,
		/**視窗顯示的最大高度,可不設。*/
		"max_height": 670,
		/**bool值,如果設定為false,啟動時視窗不可見。*/
		"show": true,
		/**是否在工作列顯示圖示。*/
		"show_in_taskbar":true,
		/**
		 * bool值。是否使用kiosk模式。如果使用kiosk模式,
		 * 應用程式將全屏顯示,並且阻止使用者離開應用。
		 * */
		"kiosk": false
	},
	/**webkit設定*/
	"webkit": {
		/**bool值,是否載入外掛,如flash,預設值為false。*/
		"plugin": true,
		/**bool值,是否載入Java applets,預設為false。*/
		"java": false,
		/**bool值,是否啟用頁面快取,預設為false。*/
		"page-cache": false
	}
}
在上面的配置中,main和name是必須的屬性。其他簡單明瞭的就大夥就直接看註釋吧,博主主要講講幾個比較難理解的引數配置。

(1)"node-main"配置:指定一個js檔案,該js檔案是啟動程式時最早執行檔案,在node-main指令碼中還可以訪問全域性的“window”物件,它指向DOM視窗,但是如果頁面導航發生變化,訪問到的window物件也會發生變化。因為它執行時間要早於DOM載入,所以要等頁面載入完畢,才能使用“window”物件。同時,在DOM頁面中,可以通過process.mainModule來獲取node-main資訊。

(2)"single-instance"配置:簡單地說,是指是否允許同時開啟多個nw應用。

(3)"kiosk"配置:如果該配置設為ture,則顯示為全屏模式並遮蔽關閉按鈕,即該顯示器將會一直停留在nw應用的顯示介面,類似於銀行的排隊等待辦理業務的取票機介面。

還有一些不經常使用的引數如下:

user-agent
應用發起http請求時,使用的user-agent頭資訊。下列佔位符可以被替換:
%name: 替換配置中的name屬性%ver: 替換配置中的version屬性
%nwver: 被node-webkit版本資訊替換. %webkit_ver: 被WebKit 引擎的版本資訊替換.%osinfo: 被 作業系統和 CPU 資訊 替換,在瀏覽器的 user agent 字串中可以被看到.
示例配置:

{
	"user-agent": "測試 %ver  %nwver %webkit_ver  windows7" /* 替換佔位符內容即可 */
}

chromium-args
string型別,自定義chromium啟動引數。詳細的引數列表參考:http://src.chromium.org/svn/trunk/src/content/public/common/content_switches.cc

js-flags
string型別,傳遞給js引擎(V8)的引數。例如,想啟用Harmony Proxies和 Collections功能,可以使用如下配置方式:
{
<span style="white-space:pre">	</span>"js-flags": "--harmony_proxies --harmony_collections"
}

inject-js-start / inject-js-end
string 型別。指定一個js檔案。
對於inject-js-start,該js檔案會在所有css檔案載入完畢,dom初始化之前執行。對於inject-js-end,該js檔案會在頁面載入完畢,onload事件觸發之前執行。

snapshot
string型別,應用程式的快照檔案路徑。包含編譯的js程式碼。使用快照檔案可以有效的保護js程式碼。後續文章會詳細介紹。

dom_storage_quota
int型別,dom 儲存的限額(以自己為單位)。建議限制為你預想大小的2倍。

no-edit-menu
bool值,Edit選單是否顯示。僅在Mac系統下有效。

maintainers
軟體維護者資訊,是一個數組,每個維護人的資訊中,name欄位是必須欄位,其他兩個(email和web)是可選欄位。示例如下:
{
	"maintainers":[ {
   		"name": "Bill Bloggs",
   		"email": "[email protected]",
   		"web": "http://www.bblogmedia.com",
	}]
}


contributors
貢獻者資訊,格式同maintainers,按照約定,第一個contributor是該應用的作者。

bugs
提交bug的url。可以是“mailto:”或者“http://”格式。

licenses
一個數組,可以包含多個宣告。每個宣告包含“type”和“url”兩個屬性,分別指定宣告的型別和文字。示例如下:

{
	"licenses": [
  	 {
       		"type": "GPLv2",
       		"url": "http://www.example.com/licenses/gpl.html",
   	}]
}

repositories
程式包的儲存地址陣列,type和url指定可以下載或者克隆程式包的地址,如果程式包不在根目錄中,需要在path屬性指定相對目錄。示例如下:

{
	"repositories": [
       		{
            		"type": "git",
            		"url": "http://github.com/example.git",
           		"path": "packages/mypackage"
       		}]
}

小貼士:想更全面地瞭解配置資訊:可參考https://github.com/nwjs/nw.js/wiki/Manifest-format 

相關推薦

nw.js node-webkit系列3基本程式結構配置

本節開始,部分內容參照我們的nwjs前輩玄魂的文章,其中也會加入博主在使用nwjs開發專案過程中總結的一些實戰經驗。我們都是站在巨人的肩上繼續努力學習,去其糟粕留其精華,好的技術就應該不斷總結和傳播,那麼我們現在開始吧! (一)基本程式結構 如上圖,是一個nw程式的基本

nw.js node-webkit系列5Native UI API Window的使用

本節主要介紹Native UI API中Window的基本使用方法。簡單的說,Window就是使用nwjs開發的應用程式在桌面顯示的容器(視窗)。node-webkit >= v0.3.0才支援

解讀ASP.NET 5 & MVC6系列3:專案釋出部署

本章我們將講解ASP.NET5專案釋出部署相關的內容,示例專案以我們前一章建立的BookStore專案為例。 釋出前的設定 由於新版ASP.NET5支援多版本DNX執行環境的釋出和部署,所以在部署之前,我們需要設定部署的目標DNX(即之前的KRE)。 步驟:右鍵BookStore專案->屬性->A

程式效能優化探討3——儲存器層次結構快取記憶體

        連外行都大概清楚,目前硬體速度的瓶頸在硬碟而不是CPU。為了有效的克服不同器件之間的速度差,從CPU到硬碟引入了多級快取機制。由於快取影響程式讀取速度,因此是實現優化時必須考慮的內容。 一、儲存器層次結構         快取的思想可能存在於任何有速度差的

Keras深度學習框架學習筆記系列2- Keras的安裝配置

這裡主要講述Ubuntu16.04環境下Keras的安裝與配置,安裝過程基本上參考了Keras官方中文文件中的安裝說明,由於我只使用了CPU進行加速,因此忽略了CUDA開發環境及相應加速庫的安裝過程,

Javascript筆記程式結構流程控制語句

一、程式結構簡介 1、幾個基本概念 程式結構分為順序結構、分支結構、迴圈結構,通常伴隨著這幾種程式結構存在的還有流程控制語句; 在ECMA-262規定來一組流程控制語句,語句定義了ECMAScript中的主要語法,語法通常由一個或多個關鍵字來完成給定的任務,例如

NW.js(node-webkit)桌面應用app開發之環境配置

本文主要是介紹一下nw.js(node-webkit)的開發配置以及桌面應用開發的直觀感受,後續會有詳細的應用開發(示例)講解,敬請關注! 有問題可以留言討論,知無不言。 一.認識nwjs NW.js (原名 node-webkit)是一個結合了 Chro

NW js node-webkit 桌面應用app開發之環境配置

                        本文主要是介紹一

node.js初步了解3——慕課網回調,作用域,上下文

span clas global ava 運行 time log timeout color 1. 1 //回調:回調是異步編程最基本的方法,node.js需要按順序執行異步邏輯的時候,一般采用後續傳遞的方式,將後續邏輯封裝在回調函數中,作為起始函數的參數。 2 //

SlwUiSuper Lightweight UI前端js外掛菜單系列3右鍵選單SlwCtxMenu,導航選單SlwMenu

      今天介紹前端js外掛菜單系列(3)右鍵選單SlwCtxMenu,導航選單SlwMenu。 基於jQuery,瀏覽器相容(Browser Support) Internet Explore

Node.js躬行記3——命令列工具

一、自定義   建立一個空目錄,然後通過npm init命令初始化package.json檔案,並按提示輸入相關資訊或直接回車使用預設資訊,生成的內容如下所示。 { "name": "pwct", "version": "1.0.0", "description": "命令列工具測試", "

bfzwjeqjSpriNgMc學習系列3之url

ref htm 學習 pri blank url lan get 系列 bfzwjeqjSpriNgMc學習系列(3)之url χ絳 bfzwjeqjSpriNgMc學習系列(3)之urlbfzwjeqjSpriNgMc學習系列(3)之url

R語言數據挖掘實戰系列3

數據處理 統計分析 函數 繪圖 R語言數據挖掘實戰系列(3)三、數據探索 通過檢驗數據集的數據質量、繪制圖表、計算某些特征量等手段,對樣本數據集的結構和規律進行分析的過程就是數據探索。數據質量分析 數據質量分析的主要任務是檢查原始數據中是否存在臟數據,臟數據一般是指

JS知識整理隨筆3數組

.... nat 一個 .so 項目 stat 分享 它的 處的 創建數組 使用Array構造函數 語法:new Array() 小括號說明 預先知道數組要保存的項目數量 向Array構造函數中傳遞數組應包含的項 使用數組字面量表示法 由一對包含數組項的方括號[]表示,

Node.js學習之旅-----MongoDB的安裝啟動

tar 商業 blank script img blog javascrip ref es2017 安裝與啟動MongoDB Windows 用戶向導:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-

開發框架模塊視頻系列3-- 字典管理模塊介紹

com 一個 href 參數 多項目 在線 完整 搜索 版本 在很多項目裏面,字典管理是必備的項目模塊,而這個又是比較通用的功能,因此可以單獨做成一個通用字典管理,通過集成的方式在項目中重復使用,這樣可以避免代碼的重復維護管理,對企業來說,也可以更好管理核心的代碼,實現統一

OpenStack Queens 源碼安裝系列3環境準備

eth tar.gz ger linux white tcpdump b-s org fire 一、節點信息 2個節點 1個控制節點 1個計算節點 網絡規劃: 1、管理網絡(Management) 2、業務網絡(Tenant) 3、外部網絡(External)

鼠標Drag/Drop事件-可視化設計器開放平臺系列3

defined jquery插件 我們 order 滾動 rar 生成 bubuko case 前面一文已經創建了一個Jquery插件,並在初始化時渲染了一個紅色的矩形,作為一個設計器,最常用的操作是直接從面板中將組件拖到畫布上生成實例,本文主要講述如何通過拖動組件來顯示。

區塊鏈技術系列3- Fabric基礎架構原理

多看 技術分享 發的 size 開源項目 初始 排序。 創建 生成 前言 對於區塊鏈方面多技術,我還是建議大家多看英文文檔,多利用Google來搜索技術文章。 怎麽搭建自己專屬V-P-N來訪問Google,請看我之前發的文章: 新人如何快速搭建自己的個人網站以及自己專屬

例項學習ansible系列3Ansible執行命令常用Option

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!