## 說明下
> 每個項目中是必須有個 package.json 配置文件(必須有,必須有)
## 屬性說明
每個配置文件中必須要提供以下屬性:
### main
> 加載主頁面入口。可以填寫本地路徑(html或者js文件)或者是網絡url地址。
#### 【演示】url地址
> 添加url地址后
```json
{
"main": "https://baidu.com"
}
```
> 如圖:
#### 【演示】加載js
> 直接運行失敗了,谷歌上面寫著意思是得弄個像npm包
```
```
#### 【演示】加載html文件
> 下面是package.json
```
{
"main": "index.html"
}
```
> 下面是index.html
```html
<html>
<head>
<meta charset="utf-8">
<meta name="viewport"
content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<title></title>
</head>
<body>
<div id="app">Hello, World!</div>
</body>
</html>
```
### name
> 應用名稱:應確保該字段內容全局唯一性。
***命名規則:**
`由數字 或者 大小寫字母 或者 "." 或者 "\_"或者"-"組成,其它內容會被忽略 . 。比如:`
```json
{
"main": "index.html",
"name": "myapp"
}
```
## extendedFields
控制NW.js應提供的功能及如何打開主窗口.
### nodejs
> 屬性:**是否支持Node**
* Boolean -`false`時將禁用Node.
### node-main
> 屬性:**指定Node.js腳本文件路徑 . 并且它將在加載DOM窗口之前啟動Node環境時執行**
* String - Node.js腳本文件路徑
### domain
> 屬性:**指定主機域名**
* String - 在`chrome-extension://`協議URL指定主機域名 . WEB引擎將是應用和同一域名的網站之間共享cookie
### single-instance
> 屬性:**是否以單實例運行**
* Boolean -`true`即單實例運行,`false`則允許應用多開,默認`true`
### bg-script
> 屬性:**后臺腳本**
* String - 應用啟動時執行的后臺腳本 .
### window
> 屬性:**窗體樣式控制**
* Object - 詳見[窗體子字段](https://nwjs.org.cn/doc/api/Manifest-Format.html#%E7%AA%97%E5%8F%A3%E5%AD%90%E5%AD%97%E6%AE%B5)章節
### webkit
> 屬性:**WebKit特性控制**
* Object - 詳見[WebKit子字段](https://nwjs.org.cn/doc/api/Manifest-Format.html#webkit%E5%AD%90%E5%AD%97%E6%AE%B5)章節
### user-agent
> 屬性:**重寫應用請求頁面中的`User-Agent`信息**
* String - 重寫的`User-Agent`信息
以下變量內容可以動態設置`User-Agent`內容:
* `%name`: 替換配置文件中的`name`字段 .
* `%ver`: 替換配置文件中的`version`字段 .
* `%nwver`: 替換NW.js版本 .
* `%webkit_ver`: 替換WebKit引擎版本 .
* `%osinfo`: 替換系統以及CPU信息 .
### node-remote
> 屬性:**從遠程頁面啟用Node**
* Array 或 String - 數組中的各項均需遵循在Chrome擴展中使用的[匹配模式](https://developer.chrome.com/extensions/match_patterns)
匹配模式本質上為URL , 由`http`,`https`,`file`,`ftp`或者`'*'`開始 . 其中`'*'`代表匹配所有URL . 每個匹配模式由三部分組成:
基礎語法:
~~~none
<url-pattern> := <scheme>://<host><path>
<scheme> := '*' | 'http' | 'https' | 'file' | 'ftp'
<host> := '*' | '*.' <any char except '/' and '*'>+
<path> := '/' <any chars>
~~~
### chromium-args
> 屬性:**分發應用時自定義chromium命令行參數至應用**
* String - 指定的chromium命令行參數
例如:想要禁用GPU加速視頻顯示,只需添加添加參數`"chromium-args" : "--disable-accelerated-video"`.
如果添加多個參數,則使用空格進行分割,該字段也可使用單引號括起標記.命令行詳細信息,請參閱[Command-Line-Options](https://nwjs.org.cn/doc/api/Command-Line-Options.html)
### crash\_report\_url
> 屬性:**應用崩潰時,崩潰轉存報告將被發送到設定的服務器**
* String - 崩潰報告服務器的URL
與Chromium瀏覽器發送方式相同,發送具有`multipart/form-data`內容的HTTP POST請求. 理論上來講, 任意 breakpad/crashpad 都可以處理該請求,因為 breakpad/crashpad 與NW相仿,. 請參閱[簡單服務器的小案例](https://github.com/nwjs/nw.js/blob/nw21/test/sanity/crash-dump-report/crash_server.py)或使用現有的[simple-breakpad-server](https://github.com/acrisci/simple-breakpad-server).
該請求至少包含以下字段:
* `prod`\- 配置文件中的`name`屬性
* `ver`\- 配置文件中的`version`屬性
* `upload_file_minidump`\- minidump文件的二進制內容
* `switch-n`\- 崩潰過程的命令行切換開關,每個切換有多個字段,其中`n`從1起始.
### js-flags
> 屬性:**指定JS引擎(V8)可用特性**
* String - 可用特性如打開協調代理(`Harmony Proxies`)以及集合(`Collections`):
~~~json
{
"name": "nw-demo",
"main": "index.html",
"js-flags": "--harmony_proxies --harmony_collections"
}
~~~
### inject\_js\_start
### inject\_js\_end
> 屬性:**執行JavaScript代碼**
* String -相對于應用程序路徑的本地文件名,期望執行的JavaScript文件
`inject_js_start`: CSS文件執行之后 , 其他DOM或腳本運行之前 , 執行的JavaScript代碼 .
`inject_js_end`: 頁面document對象加載之后 , 觸發`onload`之前 , 執行的JavaScript代碼 . 主要作為新窗口中`Window.open()`的參數執行JavaScript代碼 .
### additional\_trust\_anchors
> 屬性:**證書作為附加可用的根證書使用 , 允許連接自簽名證書或者CA簽發機構頒發證書的服務**
* Array - 數多個PEM編碼的證書組成的數組 , 例如`"-----BEGIN CERTIFICATE-----\n...certificate data...\n-----END CERTIFICATE-----\n"`
### dom\_storage\_quota
> 屬性:**Mb為單位的DOM存數限制數量**
* Integer - 建議設置為期望值的兩倍
## 窗口子字段
> 屬性:**窗口子字段默認情況被繼承到使用`window.open()`或`<a target="_blank">`打開的子窗口 .未繼承子字段將被設置為打開窗口時的默認值**
列表如下:
* `fullscreen`\->`false`
* `kiosk`\->`false`
* `position`\->`null`
* `resizable`\->`true`
* `show`\->`true`
所有窗口子字段可以使用[`new-win-policy`事件](https://nwjs.org.cn/doc/api/Window.html#%E4%BA%8B%E4%BB%B6-new-win-policy-frame-url-policy)重寫 .
### id
> 屬性:**內含窗口尺寸與位置的狀態的窗口ID,打開同ID的窗口時會還原該狀態**
>
> * String - 窗口ID,細節請另見[Chrome應用文檔](https://developer.chrome.com/apps/app_window#type-CreateWindowOptions)
### title
> 屬性:**NW.js創建的窗口標題 . 在應用啟動時顯示的標題信息**
* String -標題
### width
### height
> 屬性:**主窗口初始寬高**
* Integer - 寬高
### toolbar
> 屬性:**是否顯示導航欄中的工具條**
* Boolean -`true`顯示,`false`不顯示
### icon
> 屬性:**窗口圖標**
* String - 圖標路徑
### position
> 屬性:**窗口位置**
* String - 默認`null`(不固定) ,`center`(屏幕居中) ,`mouse`(鼠標所在位置)
### min\_width
### min\_height
> 屬性:**窗口最小寬高**
* Integer - 最小寬高值
### max\_width
### max\_height
> 屬性:**窗口最大寬高**
* Integer - 最大寬高值
### as\_desktop*Linux*
> 屬性:**X11環境下,作為桌面背景顯示**
* Boolean -`true`顯示,`false`不顯示
### resizable
> 屬性:**是否可調整窗口大小**
* Boolean -`true`允許,`false`不允許
**【注意】**,在OS X上將該屬性設置為`false`,并將frame設置為`true`,用戶還是可以將窗口全屏顯示。只有將全屏也設置為`false`才可禁用全屏控件。
### always\_on\_top
> 屬性:**是否允許窗口始終置頂(在其余窗口之上)**
* Boolean -`true`允許,`false`不允許
### visible\_on\_all\_workspaces*Mac & Linux*
> 屬性:**支持多工作區的系統(如Mac & Linux)中,將窗口同時顯示在所有工作區中**
* Boolean -`true`允許,`false`不允許
### fullscreen
> 屬性:**是否允許窗口全屏**
* Boolean -`true`允許,`false`不允許
**【注意】**,窗體和全屏框架應當一致,窗口設置為`false`時,則全屏框架不應設為`true`,避免窗體將阻止鼠標獲取屏幕邊緣.
### show\_in\_taskbar
> 屬性:**是否允許顯示在任務欄或停靠欄中**
* Boolean -`true`允許,`false`不允許,默認`true`.
### frame
> 屬性:**窗口是否為框架**
* Boolean - 設為`false`時即無框窗口.
**【注意】**,窗體和全屏框架應當一致,窗口設置為`false`時,則全屏框架不應設為`true`,避免窗體將阻止鼠標獲取屏幕邊緣.
### show
> 屬性:**啟動時是否顯示應用**
* Boolean -`true`顯示,`false`不顯示
### kiosk
> 屬性:**是否使用`Kiosk`模式(該模式即應用將全屏并阻止用戶離開應用,比如常見的公共觸摸屏演示)**
* Boolean -`true`使用,`false`不使用
### transparent
> 屬性:**窗口是否透明**
* Boolean -`true`允許,`false`不允許,默認`false`.
窗口的透明度由CSS中的背景透明值控制,
使用命令行參數`--disable-transparency`可完全禁止透明功能.
使用命令行參數`--disable-gpu`禁用GPU后,可實現透明窗體的穿透點擊
## WebKit子字段
### double\_tap\_to\_zoom\_enabled
> 屬性:**是否啟用兩指縮放功能**
* Boolean -`true`允許,`false`不允許,默認`false`.
### plugin
> 屬性:**是否可加載擴展插件,比如Flash插件**
* Boolean -`true`允許,`false`不允許,默認`true`.
## 其他字段
關于`package.json`的更多字段,請參考[Packages/1.0](http://wiki.commonjs.org/wiki/Packages/1.0)
### description
> 屬性:**配置的描述說明,以`.`結束**
### version
> 屬性:**應用版本信息**
### maintainers
> 屬性:**維護成員**
~~~base
"maintainers":[ {
"name": "Bill Bloggs",
"email": "billblogs@bblogmedia.com",
" web": "http://www.bblogmedia.com",
}]
~~~
### contributors
> 屬性:**貢獻者,與維護成員格式一致,但首個應為作者**
### bugs
> 屬性:**提交錯誤的網址,如mail或http地址**
### licenses
> 屬性:**許可證列表**
>
> ~~~base
> "licenses": [
> {
> "type": "GPLv2",
> "url": "http://www.example.com/licenses/gpl.html",
> }
> ]
>
> ~~~
>
> ### dependencies
>
> 屬性:**必要依賴,組的順序非常重要,較前條目具有較高優先級.**
~~~base
"dependencies": {
"webkit": "1.2",
"ssl": {
"gnutls": ["1.0", "2.0"],
"openssl": "0.9.8",
},
}
~~~
### homepage
> 屬性:**網站URL地址**
- LOLKU
- 工具類
- form/formData
- form
- formData
- iframe
- 渲染數據,防止內存泄漏
- 獲取url(路由)參數
- 常用方法
- 失去焦點軟鍵盤頁面亂
- 判斷數據類型
- 瀏覽器全屏
- 動態插入css
- 隨機生成自定義長度位數數字
- 驗證判斷
- localStorage 封裝存儲
- 格式化日期
- 計算兩個時間差
- 去除空格
- 將駝峰命名轉換為連字符
- 獲取dom屬性
- 深拷貝
- class操作
- 判斷是否打開瀏覽器控制臺
- 全國城市地區代碼表
- canvas合成工具
- 去除emoji表情符號
- 比較兩個對象屬性和內容(值)一致
- 微信結束頁面事件
- 正則匹配url替換域名
- 字符串拼接(渲染dom后傳值)
- 判斷是否是正則
- 日歷算法
- json 工具
- 是否支持webp格式
- h5底部輸入框被鍵盤遮擋問題
- php
- php 二級域名管理
- 單個或者多個域名跨域
- file_get_contents 正確使用
- fromData請求無法攜帶cookie
- 簡單的加密文件傳輸
- css
- 1px
- 滾動
- ios點擊有顏色
- 文本溢出省略號
- css動畫抖動
- 文本換行與不換行
- 阻止旋轉屏幕時自動調整字體大小
- vue
- vscode 調試
- 新技術
- vue-router 4.0
- vue3
- 基礎
- 試驗
- javascript
- 上傳問題
- 文件選中過,第二次再次選中不觸發change事件
- 上傳oss
- 后臺
- linux搭建服務
- 需安裝
- nginx
- 安裝
- nginx http 配置二級域名
- nginx https 配置二級域名
- 防止暴力破解
- 阿里申請免費https
- git
- 快速安裝
- 配置項
- node
- 安裝
- pm2
- mysql
- 安裝
- 創建、切換、查詢數據庫
- 常用命令
- cmake 編譯器
- redis
- 軟件下載
- git
- 百度git 記住密碼
- 經驗
- 上傳
- 軟件
- vscode
- 推薦插件
- 應用開發
- nwjs
- 入門
- package.json
- vue、react、angular 跑nwjs
- 打包
- 監聽屏幕
- 運行另一個.exe文件
- node應用
- electron
- 資料
- 安裝
- 實戰
- 崩潰日志報告
- electron-forge
- 托盤閃爍
- 開機自動啟動
- 消息通知
- 禁止默認事件
- 保證只有一個實例
- 打包且美化安裝界面
- 創建cli
- 添加Github徽章
- 自動更新
- docsify
- Lowdb存儲數據
- 備份、恢復、導入、導出
- 深度鏈接(協議)喚起Electron應用
- 說明
- 加載擴展插件
- 證書
- Sketch 插件
- 工作
- 宣傳文章地址
- api
- tinypng
- npm 插件
- fs封裝:fs-jetpack
- 判斷是否npm或yarn運行
- 字符串或緩沖區的gzip壓縮大小
- 克隆并修改RegExp實例
- 反轉對象的鍵/值
- http路由find-my-way
- dragula 拖拽(拖放)
- svga
- npm 腳手架搭建
- 項目
- 小工具
- svg轉圖片
- 日歷