- Docs »
- 基础 »
- 版本 »
- 从0.12到0.13
-
版本从0.12迁移到0.13
架构变化
- NW.js作为Chrome内部应用运行 . 所有chrome.*平台的APIs和特性都可以在NW应用中使用 . URL默认使用的协议由
file://更改为chrome-extension:// . chrome-extension://协议更换0.12版本中的app:// .
- NW中所有的AIPs , 包括
require()从nw.gui转移到nw对象中 . 然而 , NW提供一个内部封装包兼容0.12版本应用 . 0.14及后续版本中同样可以使用nw.gui , 但建议使用nw对象 .
- 0.12及以前版本中 , Node.js环境放入后台页的DOM环境中 , 为了不同窗口之间能够共享 . 不同的是 , 0.13版本中 , Node环境中能够访问所有DOM特性以及chrome.*平台APIs .
- 默认独立环境模式中需要打开后台页开发工具进行调试 , 参考开发工具与调试 .
- 0.12版本中 , 应用通过JS或者HTML进入 , 但Chrome内部应用首窗被认为通过后台运行JS启动 . 如果在package.json中通过"main"字段指定加载首页 , NW将使用默认JS打开首窗 .
- NW.js在混合环境模式下运行(使用
--mixed-context参数启动NW.js) , nw.*映射window.* . 该模式下不能在框架(frames)和窗体(windows)之间分享变量 . 如果过于依赖分享变量的特性将不能开启混合环境模式 .
Node.js变化
- Node.js最后构建在6.x版本 . 检查NPM模块 , 确认支持Node.js 6.x版本 , 特别是本地模块 . 本地模块列表迁移到最新版本 , 可以使用NaN 2 .
- process.versions[
nw]提供获取NW版本信息 , process.versions[node-webkit]将不再使用 .
API变化
构造方式
- 不同的构造方式有不同的APIs设置以及不同的能力 . 参考构造方式可以选择正确的方式构造 .
快捷键
- Mac OS X系统中不能将Ctrl映射到⌘快捷键 . 0.13版本中支持通过平台支持命令修改 . 这样需要了解系统并正确的注册以及使用快捷键 . 参考快捷键
菜单
- 0.12版本中 , Mac系统默认的菜单栏中的菜单项包括:
app-name, Edit and Window .
- Mac系统中 , 修改应用菜单名需要修改
nwjs.app/Contents/Resources/en.lproj/InfoPlist.strings而不是nwjs.app/Contents/Info.plist . 参考自定义菜单 .
配置格式
single-instance弃用并且一直为true . 应用不能使用多例 , 除非通过--user-data-dir使用不同的用户数据目录 . 首例可以使用open事件通知运行第二例 .
toolbar弃用并且一直为false . 传统工具条将不能使用 , 包括重加载按钮 , 地址栏以及工具按钮 . 应用可以使用win.reload()和win.reloadDev()模拟重加载按钮功能 .
no-edit-menu弃用 .
snapshot弃用 . 应用可以使用win.evalNWBin()代替 .
node-remote的格式更改为通过Chrome扩展中match patterns数组使用 .
package.json或者Window.open()参数中 , 窗口相关参数always-on-top, visible-on-all-workspaces, new-instance, inject-js-start和inject-js-end重命名为always_on_top, visible_on_all_workspaces, new_instance, inject_js_start和inject_js_end
- 命令行参数
--data-path更换为--user-data-dir .
Window 窗口
Screen 屏幕
id通过added, orderchanged, namechanged, thumbnailchanged注册后进行获取 , 传入getUserMedia前 , 可以使用registerStream(id)获取注册的id . 参考 概要 .
已知问题
- Linux系统中 ,
nw.Window.open()参数中resizable将不起作用 .
nw.Window的reloadDev()和isDevToolsOpen()不支持 .
App.quit()不会触发nw.Window事件closed .
nw.Window的devtools-closed事件不支持 .
as_desktop参数不支持 .
package.json中的webkit.{plugin|java|page-cache}参数不支持 , 插件默认开启 .
<iframe>的<iframe>属性不支持 .
MenuItem的tooltip属性不支持 .
nw.App.setCrashDumpDir()不支持 , 崩溃机制相关信息保存到app-data-path/Crash Reports目录下 .