UNPKG

fmd.js

Version:

another module writing system

97 lines (92 loc) 4.7 kB
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>内建模块require - fmd.js</title> <link rel="stylesheet" href="/assets/tpl.css"/> </head> <body> <header> <h1><a href="/"><img src="/assets/fmd.js.png"/></a></h1> <nav> <ul> <li><a href="/test/runner.html">Unit Testing</a></li> </ul> <ul> <li><a href="https://github.com/fmdjs/fmd.js">GitHub Repository</a></li> <li><a href="https://github.com/fmdjs/fmd.js/issues/new">Submit Issues</a></li> </ul> </nav> <p>Copyright (C) 2013-2017 fmdjs.org<br/>Licensed under the MIT.</p> </header> <aside> <ul> <li><a href="/docs/quick-start.html">Qucik Start</a></li> </ul> <section> <h1>Basic API</h1> <ul> <li><a href="/docs/api/define.html">Define a module</a></li> <li><a href="/docs/api/require.html">Built-in module 'require'</a></li> <li><a href="/docs/api/exports.html">Built-in module 'exports'</a></li> <li><a href="/docs/api/module.html">Built-in module 'module'</a></li> <li><a href="/docs/api/@fmd.html">Built-in module '@fmd'</a></li> <li><a href="/docs/api/config.html">Configuration Options</a></li> <!-- <li><a herf="/docs/api/id-conversion.html">id2url</a></li> --> <li><a href="/docs/api/events-basic.html">Basic Events</a></li> <li><a href="/docs/api/load-css.html">Load CSS</a></li> <li><a href="/docs/api/auxiliary.html">Auxiliary</a></li> </ul> </section> <section> <h1>Advanced API</h1> <ul> <li><a href="/docs/plugins.html">Plugins</a></li> <li><a href="/docs/api/plugin-non.html">Plugin 'non'</a></li> <li><a href="/docs/api/plugin-combo.html">Plugin 'combo'</a></li> <li><a href="/docs/api/events-advanced.html">Advanced Events</a></li> </ul> </section> <section> <h1>Node.js</h1> <ul> <li><a href="/docs/in-node.html">Use in Node.js</a></li> </ul> </section> </aside> <article> <h1 id="-require">内建模块require</h1> <p><code>require</code>是个函数,用来取得需要被依赖的模块的接口</p> <h2 id="require-id-">require( id )</h2> <p>内建模块是不能被修改的。可以这样使用内建模块require:</p> <pre class="sh_javascript">define( &#39;case/d&#39;, [&#39;require&#39;], function( require ){ var a = require(&#39;case/a&#39;), b = require(&#39;case/b&#39;); //todo sth } );</pre> <p><code>require</code>只有一个参数,即需要引用的模块的id。require之后返回引用模块的接口</p> <p><code>require</code>是同步的,require时,被引用的模块必须已定义</p> <h2 id="require-use-ids-callback-">require.use( ids, callback? )</h2> <p>如果明确需要异步去取模块的话,可以使用<code>require.use</code></p> <pre class="sh_javascript">define( &#39;case/e&#39;, [&#39;require&#39;], function( require ){ //todo sth require.use( [&#39;case/a&#39;,&#39;case/b&#39;], function( a, b ){ //todo sth } ); require.use( &#39;case/c&#39;, function( c ){ //todo sth } ); require.use( &#39;case/c.css&#39;, function(){ //todo sth } ); } );</pre> <p><code>require.use</code>类似<code>define</code>定义匿名模块,<code>ids</code>类似<code>dependencies</code>,是需要异步去取的模块的id数组,若只有一个模块时可以只写一个id。当然,引用的JS模块的id无须包含文件后缀名,而引用CSS模块时id必须带上文件后缀名(.css)</p> <p>当ids中的模块都加载完成,即执行<code>callback</code><code>callback</code>执行时也会依次传入ids各模块的接口</p> <p>需要注意的是,<code>require.use</code>会循环取得所有依赖的模块,即当取到一个模块时,会检测其依赖的模块是否都已定义,未定义的仍会去异步加载,直至全部加载完成,才会执行<code>callback</code></p> </article> <script src="/dist/fmd.js"></script> <script src="/assets/sh.js"></script> </body> </html>