## 说明下
> 每个项目中是必须有个 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转图片
- 日历