自动加载

ndoojs支持自动加载模块,默认使用Do.js加载模块(Do.js经过修改)。

1. 引入do.js以及模块定义文件

<script src="lib/Do.js"></script>

2. 添加模块定义

此处用到了事件系统,参见event

(function(){
  var _n;
  this.N = this.ndoo || (this.ndoo = {});
  _n = this.ndoo;

  Do.define('home', {
    path: 'homeApp.js',
    type: 'js'
  });
  _n.on('NAPP_DEFINE', function(){
    _n.setApp('home');
  });

}).call(this);
完整代码如下:

html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>autoload</title>
  </head>
  <body>
    <p id="content"></p>
    <div id="scriptArea" data-page-id="home/autoload">
      <script src="lib/underscore-min.js"></script>
      <script src="lib/jquery-2.1.1.min.js"></script>
      <script src="lib/Do.js"></script>
      <script src="js/ndoo_all.js"></script>
      <script>
        (function(_n){
          Do.define('home', {
            path: 'js/homeApp.js',
            type: 'js'
          });
          _n.on('NAPP_DEFINE', function(){
            _n.setApp('home');
          });
        })(this.N = this.ndoo || (this.ndoo = {}));
        ndoo.init();
      </script>
    </div>
  </body>
</html>

示例中定义了home模块的文件js/homeApp.js,但未载入该文件。当前页面的模块属于home模块,执行action时会自动加载home模块。查看app autoload