-
Notifications
You must be signed in to change notification settings - Fork 64
2.2.Javascript
用于局部刷新页面,*pagelets
为需要刷新的区块的id数组,url
为请求区块的url地址,cache
*用于标记是否缓存(暂未实现)。
使用示例
BigPipe.fetch(["sidebar","container"], "index?nav=1", true);
Her 内置了一个 AMD 模块加载器,完全兼容 AMD 规范。
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
是模块名数组,
在 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.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
});