node-webkit让web技术编写桌面应用

Node-webkit是一个基于Chromium与node.js的应用程序运行器,允许开发者使用web技术编写桌面应用。使用web技术开发,支持node.js,可兼容多平台(window/mac/linux) 。

项目地址:https://github.com/rogerwang/node-webkit

下载:http://dl.node-webkit.org/

基本操作(window系统):

1、 下载系统对应的node-webkit版本,运行目录中的nw.exe,显示下图说明可以正常运行。

2、 建立package.json和index.html,压缩成test.zip文件包,直接拖到test.zip包到nw.exe以nw.exe方式打开。

3、 把text.zip和nw.exe打包成test.exe,window下可能过命令

copy /b nw.exe+test.ziptest.exe

现在直接运行test.exe即可打开。

注意:nw.exe必须放在+号前面,合并命令需用cmd运行执行,win8下powershell执行报错“copy-Item:找不到接受实际参数‘b.exe’的位置形式参数”。

4、 安装Enigma Virtual Box(http://enigmaprotector.com/en/aboutvb.html),打包所有文件为一个可执行exe程序。

package.json:

Package.json为项目的配置文件,可配置窗口边框、工具栏、是否全屏、打开时窗口大小及位置、图标、node.js启动文件、默认打开页面、窗口最大及最小尺寸等。默认页面设置main。参数详细说明见:

https://github.com/rogerwang/node-webkit/wiki/Manifest-format

node.js模块扩展:

可在目录中下载nodejs的各种模块扩展功能,存放在目录node_modules。

在页面中调用模块形式:

var imageMin= require('imagemin');
//to do something…

Node.js内建服务器:

参考:http://www.infoq.com/cn/news/2011/11/tyq-nodejs-static-file-server/

demo下载地址:http://download.csdn.net/detail/jyy_12/7924781

http.js:

var PORT = 8000;
var http = require('http');
var url = require('url');
var path = require('path');
var fs = require('fs');
var mime = require('./mime').types;

var server = http.createServer(function (request, response) {
    var pathname = url.parse(request.url).pathname;
    var realPath = "test" + pathname;
	var ext = path.extname(realPath);
	ext = ext ? ext.slice(1) : 'unknown';
	var contentType = mime[ext] || "text/plain";
    path.exists(realPath, function (exists) {
        if (!exists) {
            response.writeHead(404, {
                'Content-Type': contentType
            });

            response.write("This request URL " + pathname + " was not found on this server.");
            response.end();
        } else {
            fs.readFile(realPath, "binary", function (err, file) {
                if (err) {
                    response.writeHead(500, {
                        'Content-Type': contentType
                    });

                    response.end(err);
                } else {
                    response.writeHead(200, {
                        'Content-Type': contentType
                    });

                    response.write(file, "binary");

                    response.end();
                }
            });
        }
    });
});

server.listen(PORT);
console.log("Server runing at port: " + PORT + ".");

package.json:

{
  "name": "nw-demo",
  "main": "http://localhost:8000/test.html",
  "nodejs":true,
  "node-main":"http.js",
  "window":{
	"width":400,
	"height":300,
	"transparent":true
  }
}

Mime.js:

exports.types = {
    "css": "text/css",
    "gif": "image/gif",
    "html": "text/html",
    "ico": "image/x-icon",
    "jpeg": "image/jpeg",
    "jpg": "image/jpeg",
    "js": "text/javascript",
    "json": "application/json",
    "pdf": "application/pdf",
    "png": "image/png",
    "svg": "image/svg+xml",
    "swf": "application/x-shockwave-flash",
    "tiff": "image/tiff",
    "txt": "text/plain",
    "wav": "audio/x-wav",
    "wma": "audio/x-ms-wma",
    "wmv": "video/x-ms-wmv",
    "xml": "text/xml"
};<strong>
</strong>

node-webkit缺点:

最终打包后的文件较大,单纯node-webkit所需的文件就占将近60M,压缩后也将近25M。

参考资料:

官方API:https://github.com/rogerwang/node-webkit/wiki

推荐(比较详细的中文教程):http://www.cnblogs.com/xuanhun/tag/node-webkit/

http://pan.baidu.com/share/link?shareid=3743096074&uk=2754670725

http://damoqiongqiu.iteye.com/blog/2010720

http://www.baidufe.com/item/1fd388d6246c29c1368c.html

node-webkit实例:

https://github.com/zcbenz/nw-sample-apps

https://github.com/rogerwang/node-webkit/wiki/List-of-apps-and-companies-using-node-webkit

时间: 2024-08-09 19:53:35

node-webkit让web技术编写桌面应用的相关文章

Node.js最新Web技术栈(2015年5月)

nodejs是比较简单的,只有你有前端js基础,那就按照我的办法来吧!一周足矣 推荐技术栈 express 4.x (express最新版本,初学者先别去碰koa) mongoose(mongodb) bluebird(Promise/A+实现) jade(视图层模板) mocha(测试) node-inspector(调试) https://github.com/i5ting/express-starter 了解http协议,尤其是表单和ajax传值,在req里如何接收 绝对地址和相对地址 q

快速了解Electron:新一代基于Web的跨平台桌面技术

本文引用了作者“ ConardLi”的<用JS开发跨平台桌面应用,从原理到实践>一文部分内容,原文链接:segmentfault.com/a/1190000019426512,感谢原作者的无私分享. 1.引言 现在开发IM应用动不动就要求多端——即Android端.iOS端.PC端.Web端等,Android端和iOS端作为两种不同的移动端技术,单独开发和维护还能理解,PC端和Web端如果要单独开发那就有点头大了,必竟开发传统的PC桌面应用成本太高(QT这类技术跟Web技术相比,上手难度大的多

webkit webApp 开发技术要点总结

webkit webApp 开发技术要点总结 如果你是一名前端er,又想在移动设备上开发出自己的应用,那怎么实现呢?幸好,webkit内核的浏览器能帮助我们完成这一切.接触 webkit webApp的开发已经有一段时间了,现把一些技巧分享给大家 : 1. viewport: 也就是可视区域.对于桌面浏览器,我们都很清楚viewport是什么,就是出去了所有工具栏.状态栏.滚动条等等之后用于看网页的区域, 这是真正有效的区域.由于移动设备屏幕宽度不同于传统web,因此我们需要改变viewport

炼成Web技术高手需要多长时间?(转载)

我写这个话题源自自己在工作和泡CSDN时的一些体会. 我工作的公司是做网站建设的,自然经常有做技术的人来面试.我工作的公司还是比较开明的,他们从不会以学历和工作经验来评价一个面试者的好坏,因为是做技术的,我也有幸当过一次面试官.而这次面试官的经历让我苦笑不得.来面试的一共有三个人.说来也巧,这三个人都是培训学校出来的,每个人学Web技术只有3个月左右的时间.我当时觉得很奇怪,3个月的学习,能够学什么呢?结果也不难预料,三个人中我只和其中的一个人多聊了一会儿,其他的人我和他们的谈话没有超过5分钟.

快速使用node.js进行web开发

首先关于node.js的学习,这里推荐一本比较好的教程,nodejs web开发指南,该书通俗易懂地将node.js语言特性讲解完之后,又从一个项目角度带领读者使用node.js学习web开发.相信这是一个比较好的学习模式和过程.由于这本书是2012年出的,书中的一个web教学项目是开发一个微博.从2012到现在,node.js及其生态环境发生了很大改变,所以关于该书的学习如果照着书本显然是过于陈旧的.到目前为止,node.js的web开发框架已经升级到了Express4.12.1,对于Mong

WebSocket —— 为Web应用带来桌面应用般的灵活性

当今的Web应用在我们的个人生活与商业应用中的各个方面已经表现出愈发重要的作用.这些应用包括社交媒体网络.在线购物.商业应用,乃至家用电器的配置程序.虽然它的增长势头依然迅猛,但Web应用的用户体验与原生应用或桌面应用相比仍然相形见绌,其主要原因是Web应用的设计依赖于单向的HTTP协议.而WebSocket将改变这一现状,它为浏览器与服务端的交互带来了一种新的基础元素,为创建一种能够提供真正的交互性体验的Web应用提供了必要的基础. 早期的Web技术都是基于HTTP协议而发展起来的,而HTTP

Node.js 的Web 服务器--Fenix

Fenix 是提供给开发人员使用的简单的一个 Web 服务器, 是基于 Node.js 开发.可以同时在上面运行很多的项目, 最适合前端开发人员使用. 可以通过免费的 Node.js 控制台创建,停止,启动和共享 Fexix 服务器. 您可以通过把你的桌面变成一个公共的 Web 服务器,让大家能看到你的web服务. Fenix官方 Node.js 的Web 服务器--Fenix

基于Web技术的Outlook Add-ins开发简介

基于Web技术的Outlook Add-ins开发简介 我也是刚刚接触Outlook Add-ins的开发,水平有限:文中若有错误,拍砖请轻一些! 零.关于Outlook Add-ins Outlook插件的种类不止一种,早期的有基于COM技术的.基于VSTO(Visual Studio Tools for Office)的,还有就是这里介绍的基于Web技术实现的方式.微软的官网上将其称为:Outlook add-ins.这种插件好处: (1) 跨平台.开发一次,可能用于Outlook的Wind

《转》冯森林:手机淘宝中的那些Web技术(2014年)

Native APP与Web APP的技术融合已经逐渐成为一种趋势,使用标准的Web技术来开发应用中的某些功能,不仅可以降低开发成本,同时还可以方便的进行功能迭代更新.但是如何保证Web APP的流畅性也一直是业内讨论的热点.InfoQ此次专访了手机淘宝客户端高级技术专家冯森林来谈谈手机淘宝在Web技术方面的一些实践经验,另外作为ArchSummit深圳2014大会<移动互联网,一浪高过一浪>专题的讲师,冯森林将会分享 手机淘宝的客户端架构探索之路 . InfoQ:淘宝手机客户端是否使用了HT