百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>html5教程> JS开发桌面端利用程序教程-
分享文章到:

JS开发桌面端利用程序教程-

发布时间:08/01 来源:未知 浏览: 关键词:
前言本文为开发nw中碰到的各种题目,仅以记载供备忘以及碰到雷同题目的人的一点点解决思绪。1.package.json中的window字段无效缘由:package.json中的window字段,只在main字段为*.html或是外部网址时有效,当为*.js时是无效的。{"name":"blog","main":& 前言

本文为开发nw中碰到的各种题目,仅以记载供备忘以及碰到雷同题目的人的一点点解决思绪。

1. package.json中的window字段无效

缘由package.json中的window字段,只在main字段为*.html或是外部网址时有效,当为 *.js时是无效的。


{
  "name": "blog",
  "main": "http://php1.cn/",//main为网址,下方的window设置有效
  //"main": "index.html",//main为 *.html,下方的window设置有效
  //"main": "index.js?1.1.11",//main为 *.js,下方的window设置无效!!
  
  "version": "0.0.1",
  "window": {"title": "Nw.js Demo",//要是 index.html没有title,则会显示这里的值"icon": "assest/img/logo.png",//标题栏图标"position": "center",//默许显示位置"width": 1280,"height": 680,"frame": true,//可否显示最外层的框架,设为false之后 窗口的最小化、最大化、关闭 就没有了"resizable": true,"min_width": 1028
  },}

对于其他package.json中的可运用的配置见官网:

2. nw-builder一次只能打包一个项目

nw默许不包括打包成.exe文件的情势,遂nw-builder项目为主动将nw利用打包紧缩成可施行文件的程序。
详见:

假如nw-builder的配置文件如下:


var nw = new NwBuilder({
   version: '0.14.7', 
   files: './app/**',//nw利用项目名目
   platforms: ['win32'], });

配置字段files指定了app文件夹下的所有文件,但app文件夹下存在两个项目:nw-demo和zfile-explorer

package.json文件{
  "name": "nw-demo",
  "version": "1.0.0",
  "description": "",
  "main": "./main.js?1.1.11",
  "scripts": {"start":"cd ../../ & gulp nw"
  },
  ...}

在mian字段指定的js文件中,再运用nw.Window.open来载入指定当地页面或是外部网址,如:


main.js文件:nw.Window.open('./view/index.html', {height:600,width:800}, function (win) { });

在这个js文件中可以运用4种办法植入全局变量或全局办法:
1、将全局变量运用var方式声明赋值
2、将全局变量直接赋值,无定义
3、将全局变量挂载到window
4、将全局变量挂载到global

测试代码:


main.js文件//var定义方式var xxcanghai_1 = 1;//直接赋值方式xxcanghai_2 = 10;//挂载到window对象上window.xxcanghai_3 = 100;//挂载到global对象上global.xxcanghai_4 = 1000;

在用nw动态载入的页面中写入一下代码测试

./view/index.html文件

《script》
   console.log(xxcanghai_1);//报错
   console.log(window.xxcanghai_1);//undefined
   console.log(global.xxcanghai_1);//1

   console.log(xxcanghai_2);//报错
   console.log(window.xxcanghai_2);//undefined
   console.log(global.xxcanghai_2);//10

   console.log(xxcanghai_3);//报错
   console.log(window.xxcanghai_3);//undefined
   console.log(global.xxcanghai_3);//100

   console.log(xxcanghai_4);//报错
   console.log(window.xxcanghai_4);//undefined
   console.log(global.xxcanghai_4);//1000
《script》

结论
在动态加载的页面中,拜访全局变量只能运用global.*的方式
之所以会这样是由于nw的运转环境是chromiumNodejs混合的。所以可以在网页js中施行Nodejs代码。
虽然可以但不该该!
从页面代码的责任一致性上不该该在网页代码中编写nodejs代码,遂应当将global中的对象写入每个网页的window对象中。之后页面代码再从window.*中调取

植入每个页面window中的办法

可应用nw的对package.json扩展字段的inject_js_startinject_js_end来实现。

官方注明:
inject_js_start: The injecting JavaScript code is to be executed after any files from css, but before any other DOM is constructed or any other script is run.

inject_js_end: The injecting JavaScript code is to be executed after the document object is loaded, before onload event is fired. This is mainly to be used as an option of Window.open() to inject JS in a new window.

http://docs.nwjs.io/en/latest/References/Manifest%20Format/#inject_js_start

inject_js_start字段指向当地的js文件,他可以在加载的任何页面的任何页面js施行前施行。


package.json文件:{
  "name": "blog",
  "version": "1.0.0",
  "main": "./main.html",
  "inject_js_start": "./js/inject_js_start.js?1.1.11",//设定所有页眼前植入的js文件地址
  "author": "php@gmail.com",
  "license": "ISC",}

在植入的js文件中,将global中的变量赋值到目前页面window中


./js/inject_js_start.js文件://将node的global中的变量写入每个马上打开的页面的js的window对象中window["xxcanghai_1"] = global["xxcanghai_1"]

之后即可在任何nw打开的页面中通过window.xxcanghai_1来拜访全局变量了。

4. nwjs主进程涌现异样后不显示窗体

现象:nwjs主进程涌现异样后不显示窗体,不弹出差错提醒,也不会主动完毕进程
缘由package.json文件中的main字段为.js文件,同时此js文件涌现error时会涌现此题目。
解决方案package.json文件中的main字段运用.html文件,然后再载入要施行的nw主程序js文件即可。这样即便报错了也会显示出空窗口,同时也可以通过开发者工具栏查看题目缘由,会员也可以关闭利用,不至于没法完毕进程。

其他教程文章

运用 NW.js 将 Web 利用打包为桌面利用

以上就是JS开发桌面端利用程序教程的细致内容,更多请关注 百分百源码网 其它相干文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有151人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板