Skip to content
zhangwentao edited this page Jun 14, 2016 · 1 revision

1.BigPipe接口

BigPipe.fetch(pagelets[, url, cache]) 函数

用于局部刷新页面,*pagelets为需要刷新的区块的id数组,url为请求区块的url地址,cache*用于标记是否缓存(暂未实现)。

使用示例

BigPipe.fetch(["sidebar","container"], "index?nav=1", true);

2.AMD接口

Her 内置了一个 AMD 模块加载器,完全兼容 AMD 规范。

require(moduleName) 函数

require 用来加载模块。moduleName 是被加载的模块名,支持绝对和相对路径。
注意:被 require 的模块将在引用代码执行前被加载

var $ = require("common:js/jquery.js");
$("#someDomId").show();

另外, Her 扩展了 require,使得你也可以用 require 来声明对 css 的依赖, 只是返回值将为 null (之后可能会返回一个可卸载的CSS资源对象), Her 也会保证被 require 的 css 模块会在代码执行前被加载到页面中。
这个特性可以很好的支持只有 Js 和 CSS 的模块。

比如一个名为 tip 的组件可以这样定义:

//tip.js
require("tip.css"); //依赖tip.css
var $ = require("common:js/jquery.js");
$.widget("tip", {
    //XXXX
});
module.exports = $;

在用到组件的地方这么调用,就能实现 CSS 和 JS 的动态加载:

// 动态请求 tip 模块
require.defer(["widget/tip/tip.js"], function($){
    //执行这段代码前会保证 tip.js 和 tip.js 依赖的 tip.css 都已经被加载。
    $("#tip").tip();
});

require.defer(moduleList[, callback]) 函数

require.defer 用来动态加载模块。参数 moduleList 是模块名数组, 在 moduleList 中所有模块都被加载完成后,callback 将被调用,参数为按序传入的依赖模块。

require.defer 与 require.async 唯一的区别在于: require.defer 会将模块的加载推迟到页面 onload 之后,以防止对首屏速度的影响。
注意:在绝大部分(99.99%)的情况下,你都应该用 require.defer 来代替 require.async

require.defer(["common:js/jquery.js", "common:css/color.css"], function($, css){
    $("xxx").XXX();
    console.log(css); // null
});

require.async(moduleList[, callback]) 函数

不建议使用,请用 require.defer 替代,除非你知道你在做什么
require.async 用来动态加载模块。参数 moduleList 是模块名数组, 在 moduleList 中所有模块都被加载完成后,callback 将被调用,参数为按序传入的依赖模块。

require.defer 与 require.async 唯一的区别在于: require.defer 会将模块的加载推迟到页面 onload 之后,以防止对首屏速度的影响。
注意:在绝大部分(99.99%)的情况下,你都应该用 require.defer 来代替 require.async

require.async(["common:js/jquery.js", "common:css/color.css"], function($, css){
    $("xxx").XXX();
    console.log(css); // null
});