fmd.js
Version:
another module writing system
125 lines (123 loc) • 6.28 kB
HTML
<html>
<head>
<meta charset="utf-8"/>
<title>Basic Events - 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="basic-events">Basic Events</h1>
<p>fmd.js在模块定义、文件加载等各地添加了事件发送,可以监听各个事件并添加逻辑即可实现个性化需求,基本语法为:</p>
<pre class="sh_javascript">fmd.on( eventName, callback );</pre>
<p>当然也可以移除监听:</p>
<pre class="sh_javascript">fmd.off( eventName, callback );</pre>
<p>移除"eventName"事件下的回调为"callback"的监听</p>
<pre class="sh_javascript">fmd.off( eventName );</pre>
<p>移除"eventName"事件的所有监听</p>
<h2 id="event-existed-">event 'existed'</h2>
<pre class="sh_javascript">fmd.on( 'existed', function( meta ){
//todo sth
} );</pre>
<p>此事件发生在定义模块之初,表明将要定义的模块已存在,参数<code>meta</code>只有一个子对象id</p>
<h2 id="event-compiled-">event 'compiled'</h2>
<pre class="sh_javascript">fmd.on( 'compiled', function( mod ){
//todo sth
} );</pre>
<p>此事件发生在模块编译完毕生成exports后,参数<code>mod</code>是编译之后的mod对象</p>
<h2 id="event-compilefailed-">event 'compileFailed'</h2>
<pre class="sh_javascript">fmd.on( 'compileFailed', function( ex, mod ){
//todo sth
} );</pre>
<p>此事件发生在模块编译失败后,参数<code>ex</code>即是浏览器抛出的error,参数<code>mod</code>是编译失败的mod对象</p>
<h2 id="event-required-">event 'required'</h2>
<pre class="sh_javascript">fmd.on( 'required', function( mod ){
//todo sth
} );</pre>
<p>此事件发生在引用模块成功时,在返回exports前一刻,参数<code>mod</code>是被引用的模块对象</p>
<h2 id="event-requirefailed-">event 'requireFailed'</h2>
<pre class="sh_javascript">fmd.on( 'requireFailed', function( meta ){
//todo sth
} );</pre>
<p>此事件发生在引用模块失败后,参数<code>meta</code>只有一个子对象id,是被引用的模块的id</p>
<h2 id="event-requested-">event 'requested'</h2>
<pre class="sh_javascript">fmd.on( 'requested', function( asset ){
//todo sth
} );</pre>
<p>此事件发生在请求资源完成,参数<code>asset</code>为资源对象</p>
<p><strong>在资源404时,此事件也会触发</strong></p>
<h2 id="event-requesttimeout-">event 'requestTimeout'</h2>
<pre class="sh_javascript">fmd.on( 'requestTimeout', function( asset ){
//todo sth
} );</pre>
<p>此事件发生在请求资源超时,参数<code>asset</code>为资源对象</p>
<h2 id="event-alias-">event 'alias'</h2>
<pre class="sh_javascript">fmd.on( 'alias', function( meta, mod ){
//todo sth
});</pre>
<p>此事件发生在解析别名后,参数<code>meta</code>只有一个子对象id(即需要处理alias的模块id),参数<code>mod</code>是依赖发生该事件模块的模块对象</p>
<h2 id="event-resolve-">event 'resolve'</h2>
<pre class="sh_javascript">fmd.on( 'resolve', function( asset ){
//todo sth
});</pre>
<p>此事件发生在处理完所有resolve后,参数<code>asset</code>有两个子对象,一为id,二为url(非完整url,仅仅经过id resolve)</p>
<h2 id="event-id2url-">event 'id2url'</h2>
<pre class="sh_javascript">fmd.on( 'id2url', function( asset ){
//todo sth
} );</pre>
<p>此事件发生在id解析成url后,<code>callback</code>的参数<code>asset</code>有两个子对象,一为id,二为url(完整url)</p>
</article>
<script src="/dist/fmd.js"></script>
<script src="/assets/sh.js"></script>
</body>
</html>