nodewebkit
开发框架,基于最新版的 nodewebkit
运行,
mynwjs集成了 nodewebkit
开发版(debug版)和分发版。直接下载就可以开发使用。
nodewebkit
的开发版和分发版,所以只需要下载最新版本的mynwjs(
点击下载),解压后双击 启动程序.bat
就是以分发版的
nodewebkit
来启动 testobj
,双击 启动程序sdk.bat
就是以开发版的 nodewebkit
来启动 testobj
-nwjs-sdk-v0.18.4-win-ia32 (nodewebkit开发版) -nwjs-v0.18.4-win-ia32 (nodewebkit分发版) -testobj (主程序文件夹) |-css (主程序css文件夹) |-img (主程序图片文件夹) |-js (主程序js文件夹) |-page (主程序页面文件夹) |-comm (包含常用的页面文件夹) |-main (包含主要的页面文件夹) |-index.html (默认的程序页面) |-package.json (nodewebkit配置文件) |-start.html (入口文件夹) -启动程序.bat (通过分发版的nodewebkit启动testobj的批处理) -启动程序sdk.bat (通过开发版的nodewebkit启动testobj的批处理)
nodewebkit
开发版和分发版是从 nodewebkit
官方网站获取的最新程序,如果需要最新的
nodewebkit
,自行从 nodewebkit
的官方下载并替换,但需要修改启动程序批处理文件中的相关参数。
testobj
是主程序文件夹,遵循nodewebkit开发规范。
nodewebkit
程序自身的结构、配置和运行路由,mynwjs开发需要遵循基本的nodewebkit
开发规范。
package.json
是nodewebkit程序开发的配置文件
{ /**指定程序的起始页面。*/ "main": "start.html", /**字符串必须是小写字母或者数字,可以包含.或者_或者-不允许带空格。name必须全局唯一。*/ "name": "mynwjs", /**程序描述*/ "description": "this is a node-webkit programme power by mynwjs", /**程序版本号*/ "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": "mynwjs", /**窗口的icon。*/ "icon": "img/mynwjs.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 } }注:在实际的开发配置中,请将所有的注释去掉只保留配置正文,以确保程序运行的稳定。
mynwjs的核心是项目文件夹(testobj
)中 start.html
和js
的 index.js
文件。
start.html
文件是框架的入口文件,引入了一些基础类库和一个基本的路由。会根据 url
中的 _p
参数来载入相应的页面文件。
index.js
文件是框架的核心文件,包含了框架运行需要的基本的对象和方法,也包含一些常用的比如调用系统命令行、监视文件夹内容等常用的方法。
index.js
中 _i
是框架运行的核心内容,包含了一些参数的初始化和基本的方法
//主文件夹 mainpath:C:\workspace\myobj\mynwjs //nwjs程序运行的扩展目录 rootPath:chrome-extension://mnocfdcnjngmoagpogamgempcbaaoppg //用户数据存储文件夹 dataPath:C:\Users\gaocheng\AppData\Local\testobj\User Data\Default //exe执行文件所在的文件夹 execpath:C:\workspace\myobj\mynwjs\nwjs-v0.18.4-win-ia32
注意:上面的参数是在没有打包的情况下,直接通过 nw.exe
执行主程序文件夹时的参数,如果打包发布后,这些参数会有明显的变化,请确定理解上面的各参数的含义后再使用。
uget
属性包含了 url
中传入的参数,例如 ------?_p=123&key1=val1
,那么要获取
key1
的传入值,就使用 _i.uget['key1']
。uget
参数由 _i
中的
urlinit
方法来进行初始化。
a
方法用于构建访问某个界面的url。
a:function(_p,data){//建立适用于当前程序的界面跳转链接比如要访问
page/comm/comm.html?k1=v1&k2=v2
页面, 就用 a('comm/comm.html',{k1:'v1',k2:'v2'})
。
newwin
方法用来打开新的窗口。
newwin:function (_p,data,w,h) {//打开新窗口要打开
page/test/test1.html?k1=v1&k2=v2
页面,且设定页面长400宽300,就用 newwin('test/test1.html',{k1:'v1',k2:'v2'},400,300)
,如果不设定打开页面的长宽,默认打开的界面是长800宽600。
ititle
设置窗口的标题。
v
方法用来加载页面并设置参数。
v: function (path, vars) {//加载html模板在
start.html
中就是使用的 v
方法载入的页面文件。v('comm/comm.html',{k1:'v1',k2:'v2'})
表示载入 comm/comm.html
页面文件,并且可以在页面中使用 _i._vars['k1']
来获取响应的参数值。
mynwjs是一个小作品,类库还在不断的完善和改进过程中,抛砖引玉,希望未来能够扩充成为一个好用的nwjs开箱即用开发环境。
mynwjs托管在osc的git上,点此在osc上查看源代码