在node-webkit中使用node modules

来源:互联网 发布:js cookie 大小限制 编辑:程序博客网 时间:2024/05/03 04:09

在nodejs中有三种类型的modules:

  • 内部modules(一部分Node API)
  • 用JavaScript写的第三方modules
  • C/C++插件形式的第三方modules

所有这些类型都可以使用在node-webkit.

内部modules:

nodejs的内部(内建)moduels可以直接在node-webkit中使用(需要根据nodejs的文档)。
例如,var fs = require('fs')就可以开始使用文件系统module了。

例如,你可以直接使用process module,而不用任何的require(...)。

然后,在nodejs和node-webkit的API之间也有一些小的改动。

第三方JavaScript modules

如果一个第三方的模块完全是由JavaScript写成(也就是不包含C/C++插件),可以以在Nodejs中使用的方式用在node-webkit中:require('moduleName')。

然而,相对路径的行为依赖于在应用程序中父文件本身是如何使用的(这里的父文件是指require()方法调用所在的文件):

  • 如果父文件也被Node引用(使用require()),那么子文件中的相对路径是相对于其父文件的。
  • 如果父文件被WebKit所引用(使用任何web的技术:经典的DOM window.open(),node-webkit's的Window.open,经典的DOMXMLHttpRequest,JQuery的$.getScript(),HTML<script src="...">元素,等等),子文件的相对路径就是相对于应用程序的根目录。

前述的规则意味着任何模块的子模块在nodejs中的引用方式在node-webkit中可以正常工作。

然而,一般的更聪明的做法是不使用明确的相对路径(以../和./开头)。取而代之,仅仅调用require('modulename')就足够了--------如果这个模块已经放在了应用程序的子目录/node_modules下面。

例如,你可能从npm package安装了一些模块,通过在你的应用程序目录调用npm install modulename(你的应用程序的清单文件所在的目录),因为npm会自动的将这些模块放到子目录/node_modules.

例子:async

这是一个安装async模块的例子:

$ cd /path/to/your/app$ npm install async

这是整个目录树的文件列表:

$ find .../package.json./index.html./node_modules./node_modules/async./node_modules/async/.gitmodules./node_modules/async/package.json./node_modules/async/Makefile./node_modules/async/LICENSE./node_modules/async/README.md./node_modules/async/.npmignore./node_modules/async/lib./node_modules/async/lib/async.js./node_modules/async/index.js

清单文件看起来是这样:

{  "name": "nw-demo",  "main": "index.html"}

这是index.html:

<html><head><title>test</title><script>var async=require('async');</script></head><body>test should be here.</body></html>

第三方C/C++插件(暂未用到,省略)

0 0
原创粉丝点击