




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
前言作为一名 Web 前端工程师,我们的工作在大多数情况下,就是与各种浏览器打交道,开发以页面为主的 Web 应用程序。为此,非常的熟悉 HTML、CSS、JavaScript 以及各类主流的 JavaScript 工具库,比如 Dojo、jQuery、YUI 等。但是,浏览器的安全沙盒把我们限制在了一个小小的圈子里,我们不能用 JavaScript 访问操作系统的本地文件系统,不能发起一个 Socket 请求, 不能获取 CPU 和内存的使用情况, 也不能访问关系型数据库或者 NoSQL 数据库。您是否一直在憧憬着,某一天,您使用着您最拿手的前端技能,来开发那些本来由 Java,、C+等语言所开发的桌面应用程序呢? 很幸运,答案是肯定的!Node-webkit 这个开源项目的出现,为 Web 前端开发人员提供了一个新的舞台;它更给我们带来了一个实际的价值,让我们现有的 Web 应用,可以更方便的移植到我们的桌面上来,加以本地功能的扩展,获取更大的用户体验度。回页首Node-webkit 架构概述Node-webkit 是项目托管网站 Github 上一个非常热门的开源项目,它基于著名的浏览器开源项目 Chromium 和服务器端 JavaScript 实现 Node.js 的一个应用程序运行时环境。假如您对它还没有任何头绪,不妨可以这样来想象一下这个运行时环境:它是一个支持 HTML5 特性的全功能 Web 浏览器, 并且它没有安全沙盒的限制, 我们可以用 JavaScript 来操作 HTML DOM 对象,也可以来调用操作系统的本地资源。图 1. Node-webkit 概览我们来通过一段最简单的代码,窥探一下 Node-webkit 的样子:清单 1. 简单示例代码 Sample App Hello World! We are using node.js document.write(process.version). 图 2. 清单 1 代码运行结果安装有两种方式可以实现 Node-webkit 的安装:第一种是从其项目主页面, 下载源代码,然后自行编译安装;或者, 我们为了方便起见, 可以直接下载它提供的编译好的二进制可执行文件, 目前支持三个操作系统平台:Windows、Linux 以及 Mac。我们的教程在后文中都将主要以 Windows 为例,其他平台请具体参考 Node-webkit 的项目文档。以下是安装的具体步骤:1. 将下载的二进制文件放到一个文件夹下,例如 C:Program Filesnode-webki2. 在 Windows 的环境变量 PATH 中,添加路径 C:Program Filesnode-webki至此, Node-webkit 安装就算完成了。我们可以在命令行中运行 nw,如果您看到如下窗口出现, 则表示 Node-webkit 在您的计算机上已完全安装成功:图 3. 成功运行 Node-Webkit 的界面创建第一个 Node-webkit 应用复杂的应用从 Hello World 开始!让我们一步一步来建立我们第一个最简单易懂的 Node-webkit 应用程序。首先,在您计算机上任意目录下,建立一个命名为 sample-app 的文件夹,它将被用来存放我们的示例应用程序代码和其他所有需要的资源文件;然后在 sample-app 文件夹下,预建立一些空的子文件夹,用来合理的存放不同类型的文件;最后,建立两个文件:index.html 和 package.json。至此,sample-app 文件夹中看起来应该是这样的一个结构:图 4. sample-app 包含的文件和目录对这样一个目录结构,是不是觉得非常熟悉?没错,它就是一个标准的 Web 工程的目录结构,因为 Node-webkit 的开发继承了 Web 前端开发的一切,所以您所掌握的 Web 开发经验将使您更快速的掌握它。下一步,我们来看一下 index.html 和 package.json 这两个重要文件中的内容:清单 2. index.html Sample App Hello World! 它将是我们这个应用程序的入口,现在它包含的仅仅是一段最简单的 HTML 文本,显示了一个Hello World!的问候,我们将在后文中一步步的充实它的内容。清单 3. package.json main: index.html, name: sample-app, description: demo app of node-webkit, version: 0.1.0, window: toolbar: false, resizable: false, width: 800, height: 500 该文件是 node-webkit 的应用描述文件,一个完整的 node-webkit 应用程序必须包含这样一个文件。它用于定义应用程序的基本信息以及运行相关的参数,比如名称、介绍、入口文件名称以及应用程序窗口的各项配置,如窗口的显示尺寸、显示位置、是否显示工具栏等等。您可以阅读Node-webkit 描述文件格式来获取更多相关信息。运行以上这些文件构成了一个最简单基本的 node-webkit 程序。我们非常清楚如何让一个 HTML 文件在浏览器中运行起来,但是,在 node-webkit 环境下,如何让它运行起来呢?打开您的命令行工具,进入 sample-app 所在的目录,然后执行命令:nw sample-app成功运行中的窗口界面如下所示:图 5. sample-app 运行结果基于 Dojo 来设计桌面应用好了,我们接下来要在前文的基础上,使用 Node-webkit 开发个稍微像样一点的东西。开发一个专业的应用程序,界面的开发永远是一个重头,将耗费相当多的时间和精力。我们现代 Web 页面应用的开发中,通常会采用一些设计良好、功能强大、界面组件丰富的工具库,它们可以极大的加速我们的开发,减少我们的工作量,并且提高代码质量。例如 Dojo、jQuery 等就是一些我们经常采用的开源工具库,它们成熟、功能强、兼容性好,并且有强大的开发维护社区的支持。而 Dojo 是我个人比较喜欢的一个,它包含了丰富的基础 API 和界面组件(布局,表单,表格,图表等等),面向对象,高度模块化,可扩展性和可定制性非常强,所以非常适合开发各种不同规模的应用程序。在本教程中,我们将使用 Dojo 作为我们的开发辅助工具。如今,基于 Web 技术的软件应用朝着单页化的方向发展,前端开发的复杂度已经远远超出我们的预期,如何让我们的软件设计层次清晰,又做到代码实现简单明了,即用最少的代码实现更多的功能,是我们的迫切需求。Dojo 为我们提供了非常有用的工具包 dojox.mvc,它是 Dojo 的一个对目前非常流行的前端 MVC 的思想的实现,主要关注前端的 View 和 Model 之间的数据绑定,能实时同步表单控件和 Model 数据,无论哪一方发生变化,另一方都会进行实时更新。其能够简化本来在 JavaScript 中处理表单的繁杂重复的代码。我们下面要使用 Dojo 来构建我们整个应用程序的框架。这个应用程序将向您展示 2 个小示例,以此来阐明如何在 Node-webkit 环境下调用本地功能,以及如何访问外部数据资源。我们的 index.html 现在看起来已经充实了很多,使用了 Dojo 组件来创建和布局整个应用的界面。下面是一部分关键代码:清单 4. index.htmlat: dojox/mvc/at 计算机名: 操作系统类型: CPU 架构: CPU 核心数: 内存使用情况: 下面是实际的运行效果图:图 6. 本地功能调用示例运行界面本地功能调用上面示例程序的第一个选项卡,展示的是一个调用并展示计算机系统信息的功能。由于 Node-webkit 内置了 Node.js,所以调用计算机本地功能和资源的工作主要都是通过它的 API 来完成。我们的应用使用了 Node.js 的 OS 模块,用以读取计算机的基本信息:清单 5. 读取本地系统信息/ 加载 nodejs OS 模块var os = global.require(os);/通过调用 nodejs api,获取本地计算机的内存使用信息var getMemoryData = function() var fm = os.freemem(); var um = os.totalmem() - fm; return x: 1, y: fm, text: Free , x: 1, y: um, text: Used ;/通过调用 nodejs api,获取本地计算机的基本信息var getSystemInfo = function() return hostname: os.hostname(), ostype: os.type(), platform: os.platform(), arch: os.arch(), cpus: os.cpus().length ;读写本地文件系统也是桌面应用程序经常会用到的功能,以下代码段展示如何完成此任务:清单 6. 读写本地文件 var fs = global.require(fs); fs.readFile(/your/file.txt, function(err, data) if (err) throw err; console.log(data); ); fs.writeFile(/your/file.txt, Hello World, function(err) if (err) throw err; console.log(Saved!); );注意:Dojo 和 Nodejs 都包含 require API,为了避免冲突,所以请使用 global.require()来限定作用域,以正确调用 Nodejs 的 require API。远程数据访问我们应用程序的第二个选项卡,展示如何访问远程数据。在 Web 开发中,Ajax,JSONP 等方式已经非常流行,这些技术在 Node-webkit 环境下仍然是可用的。在我们的程序中就使用了 Dojo 提供的 Ajax API 来获取 IBM DeveloperWorks 网站的 RSS 数据:图 7. 远程数据访问示例运行界面清单 7. 读取远程 RSSrequest(/developerworks/cn/views/global/rss/libraryview.jsp, handleAs: xml).then(function(data) var items = data.getElementsByTagName(item); for (var i = 0; i items.length; i+) var item = itemsi; var children = item.children; var title = children0.textContent; var description = children1.textContent; var link = children2.textContent; var pubdate = new Date(Date.parse(children3.textContent); var feed = domConstruct.toDom( , , title, , 内容概要: , description, , 发布时间: , locale.format(pubdate), , .join(); dom.byId(feed-list).appendChild(feed); );除了使用 Ajax,JSONP 等这些浏览器提供的远程数据访问方式,在 Node-webkit 中另外还可以使用 Nodejs 的 http,https 和 net 等模块 API 来发起系统原生的 HTTP 和 Socket 请求,与远程服务器进行数据交互。清单 8. 使用 Socket 与服务器交互var net = require(net);var client = net.connect( port: 8088 , function() console.log(client connected); client.write(hello world!rn); /向服务器端发送 hello world!);client.on(data, function(data) console.log(data.toString(); /接受到服务器端发送来的数据 client.end(););client.on(end, function() console.log(client disconnected););调试调试 Node-webkit 应用,我们一般借助它自带的开发者工具。要使用这个工具,首先我们要在 package.json 中,将 window 设置项中的 toolbar 设置为 true,之后在运行程序的窗口上会出现顶部的工具栏,在工具栏内点击右边如下图红框中的按钮,则会弹出开发者工具(Developer Tools),点击Sources选项卡,出现的就是一个代码调试工具:图 8. Node-webkit 调试工
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 金融风险管理师知识考试题及答案
- 导游资格考务培训专项试题及答案
- 软考题库及答案
- 家政护工职业技能试题及答案
- 2025年药品召回管理办法培训考核试题附答案
- 2025年省市级综合管理类试题、县乡级综合管理类试题
- 医院管理学理论知识考核试题及答案
- 2025年低压电工作业复审考试题库试题(含答案)
- 《水工程经济-技术经济分析》课件(共七章)
- 福建技术师范学院《审计学综合实训》2024-2025学年第一学期期末试卷
- engel恩格尔注塑机机操纵使用说明
- 花卉学 二年生花卉
- 附件1:中国联通动环监控系统B接口技术规范(V3.0)
- 箱变设备台账
- GB/T 1185-2006光学零件表面疵病
- 微课(比喻句)讲课教案课件
- 银行间本币市场业务简介
- 2023年厦门东海职业技术学院辅导员招聘考试笔试题库及答案解析
- 辽阳市出租汽车驾驶员从业资格区域科目考试题库(含答案)
- (完整版)剑桥通用五级PET考试练习题
- DB32- 4385-2022《锅炉大气污染物排放标准》
评论
0/150
提交评论