<p><code></p> <p>在<a href="http://www.js-code.com/tag/node" title="node" target="_blank">node</a>js中有三种类型的modules:</p> <ul> <li>内部modules(一部分Node <a href="http://www.js-code.com/tag/api" title="API" target="_blank">API</a>)</li> <li>用JavaScript写的第三方modules</li> <li>C/C++插件形式的第三方modules</li> </ul> <p>所有这些类型都可以使用在<a href="http://www.js-code.com/tag/node" title="node" target="_blank">node</a>-webkit.</p> <h1 id="articleHeader0">内部modules:</h1> <p><a href="http://www.js-code.com/tag/node" title="浏览关于“node”的文章" target="_blank" class="tag_link">node</a>js的内部(内建)moduels可以直接在node-webkit中使用(需要根据nodejs的文档)。<br /> 例如,<code>var fs = require('fs')</code>就可以开始使用文件系统module了。</p> <p>例如,你可以直接使用process module,而不用任何的require(...)。</p> <p>然后,在nodejs和node-webkit的<a href="http://www.js-code.com/tag/api" title="API" target="_blank">API</a>之间也有一些小的改动。</p> <h1 id="articleHeader1">第三方JavaScript modules</h1> <p>如果一个第三方的模块完全是由JavaScript写成(也就是不包含C/C++插件),可以以在Nodejs中使用的方式用在node-webkit中:require('moduleName')。</p> <p>然而,相对路径的行为依赖于在应用程序中父文件本身是如何使用的(这里的父文件是指<code>require()</code>方法调用所在的文件):</p> <ul> <li>如果父文件也被Node引用(使用<code>require()</code>),那么子文件中的相对路径是相对于其父文件的。</li> <li>如果父文件被WebKit所引用(使用任何web的技术:经典的<a href="http://www.js-code.com/tag/dom" title="DOM" target="_blank">DOM</a> <code>window.open()</code>,node-webkit's的<code>Window.open</code>,经典的<a href="http://www.js-code.com/tag/dom" title="DOM" target="_blank">DOM</a> <code>XMLHttpRequest</code>,JQuery的<code>$.getScript()</code>,<a href="http://www.js-code.com/tag/html" title="HTML" target="_blank">HTML</a><code>&lt;script src="..."&gt;</code>元素,等等),子文件的相对路径就是相对于应用程序的根目录。</li> </ul> <p>前述的规则意味着任何模块的子模块在nodejs中的引用方式在node-webkit中可以正常工作。</p> <p>然而,一般的更聪明的做法是不使用明确的相对路径(以../和./开头)。取而代之,仅仅调用<code>require('modulename')</code>就足够了--------如果这个模块已经放在了应用程序的子目录/node_modules下面。</p> <p>例如,你可能从npm package安装了一些模块,通过在你的应用程序目录调用<code>npm install modulename</code>(你的应用程序的清单文件所在的目录),因为<code>npm</code>会自动的将这些模块放到子目录/node_modules.</p> <h2 id="articleHeader2">例子:async</h2> <p>这是一个安装async模块的例子:</p> <div class="widget-codetool" style="display:none;"> <div class="widget-codetool--inner"> <span class="selectCode code-tool" data-toggle="tooltip" data-placement="top" title="" data-original-title="全选"></span><br /> <span type="button" class="copyCode code-tool" data-toggle="tooltip" data-placement="top" data-clipboard-text="$ cd /path/to/your/app $ npm install async " title="" data-original-title="复制"></span> </div> </p></div> <pre class="hljs shell"><code><span class="hljs-meta">$</span><span class="bash"> <span class="hljs-built_in">cd</span> /path/to/your/app</span> <span class="hljs-meta">$</span><span class="bash"> npm install async</span> </code></pre> <p>这是整个目录树的文件列表:</p> <div class="widget-codetool" style="display:none;"> <div class="widget-codetool--inner"> <span class="selectCode code-tool" data-toggle="tooltip" data-placement="top" title="" data-original-title="全选"></span><br /> <span type="button" class="copyCode code-tool" data-toggle="tooltip" data-placement="top" data-clipboard-text="$ 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 " title="" data-original-title="复制"></span> </div> </p></div> <pre class="hljs groovy"><code>$ find . . ./<span class="hljs-keyword">package</span>.json ./index.html ./node_modules .<span class="hljs-regexp">/node_modules/</span>async .<span class="hljs-regexp">/node_modules/</span>async/.gitmodules .<span class="hljs-regexp">/node_modules/</span>async/<span class="hljs-keyword">package</span>.json .<span class="hljs-regexp">/node_modules/</span>async/Makefile .<span class="hljs-regexp">/node_modules/</span>async/LICENSE .<span class="hljs-regexp">/node_modules/</span>async/README.md .<span class="hljs-regexp">/node_modules/</span>async/.npmignore .<span class="hljs-regexp">/node_modules/</span>async/lib .<span class="hljs-regexp">/node_modules/</span>async<span class="hljs-regexp">/lib/</span>async.js .<span class="hljs-regexp">/node_modules/</span>async/index.js </code></pre> <p>清单文件看起来是这样:</p> <div class="widget-codetool" style="display:none;"> <div class="widget-codetool--inner"> <span class="selectCode code-tool" data-toggle="tooltip" data-placement="top" title="" data-original-title="全选"></span><br /> <span type="button" class="copyCode code-tool" data-toggle="tooltip" data-placement="top" data-clipboard-text="{ &quot;name&quot;: &quot;nw-demo&quot;, &quot;main&quot;: &quot;index.html&quot; } " title="" data-original-title="复制"></span> </div> </p></div> <pre class="hljs json"><code>{ <span class="hljs-attr">"name"</span>: <span class="hljs-string">"nw-demo"</span>, <span class="hljs-attr">"main"</span>: <span class="hljs-string">"index.html"</span> } </code></pre> <p>这是<code>index.html</code>:</p> <div class="widget-codetool" style="display:none;"> <div class="widget-codetool--inner"> <span class="selectCode code-tool" data-toggle="tooltip" data-placement="top" title="" data-original-title="全选"></span><br /> <span type="button" class="copyCode code-tool" data-toggle="tooltip" data-placement="top" data-clipboard-text="<html><br /> <head><br /> <title>test</title><br /> <script> var async=require('async'); </script><br /> </head><br /> <body><br /> test should be here.<br /> </body><br /> </html><br /> " title="" data-original-title="复制"></span> </div> </p></div> <pre class="hljs xml"><code><span class="hljs-tag">&lt;<span class="hljs-name">html</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-name">title</span>&gt;</span>test<span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-name">script</span>&gt;</span><span class="javascript"> <span class="hljs-keyword">var</span> <span class="hljs-keyword">async</span>=<span class="hljs-built_in">require</span>(<span class="hljs-string">'async'</span>); </span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span> <span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span> test should be here. <span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span> <span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span> </code></pre> <h1 id="articleHeader3">第三方C/C++插件(暂未用到,省略)</h1> <p></code></p>

本文固定链接:

在node-webkit中使用node modules

http://www.js-code.com/node-js/node-js_29943.html

80%的人都看过