Javascript自包含沙盒事件和客户端堆栈
我正在将一个使用JSF的web应用程序迁移到REST,主要是JS模块应用程序 我在YUI theater(优秀视频)上观看了Nicholas Zakas的“可伸缩javascript应用程序架构”,我成功地实现了大部分演讲,但我有一些问题:Javascript自包含沙盒事件和客户端堆栈,javascript,jsf,dom-events,client-side,Javascript,Jsf,Dom Events,Client Side,我正在将一个使用JSF的web应用程序迁移到REST,主要是JS模块应用程序 我在YUI theater(优秀视频)上观看了Nicholas Zakas的“可伸缩javascript应用程序架构”,我成功地实现了大部分演讲,但我有一些问题: 关于模块和沙盒之间的关系,我发现讲座有点混乱,一方面,据我理解,模块不应该受到沙盒之外发生的事情的影响,这就是为什么它们通过沙盒发布事件(而不是通过核心,因为核心是为了隐藏基库)但是应用程序中的每个模块都有一个新的沙箱?沙盒是否应该将事件限制在使用它的模块中
dojo.require的东西,因此实际上我隐藏了基本库,但模块本身是由基本库定义和加载的。。。我觉得有点奇怪
$$('.classname')的操作(..
这会大量清理代码,因此包装基本库,然后在模块中通过执行为基本库创建依赖项是没有意义的。每个功能(但不使用这些功能)都会编写大量可忽略的代码…实现该功能非常容易出现错误
我们在应用程序中大量使用此模式。请参阅Stoyan Stefanov的《JavaScript模式》一书,了解如何实现沙盒模式的详细信息。基本上,它是这样的:
(function (global) {
var Sandbox = function fn (modules, callback) {
var installedModules = Sandbox.modules,
i = 0,
len = modules.length;
if (!(this instanceof fn)) {
return new fn(modules, callback);
}
// modules is an array in this instance:
for (; i < len; i++) {
installedModules[modules[i]](this);
}
callback(this);
};
Sandbox.modules = {};
global.Sandbox = Sandbox;
})(this);
// Example module:
// You extend the current sandbox instance with new functions
Sandbox.modules.ajax = function(sandbox) {
sandbox.ajax = $.ajax;
sandbox.json = $.getJSON;
};
// Example of running your code in the sandbox on some page:
Sandbox(['ajax'], function(sandbox) {
sandbox.ajax({
type: 'post',
url: '/Sample/Url',
success: function(response) {
// success code here. remember this ajax maps back to $.ajax
}
});
});
(功能(全局){
var Sandbox=函数fn(模块、回调){
var installedModules=Sandbox.modules,
i=0,
len=模块长度;
如果(!(此实例为fn)){
返回新的fn(模块、回调);
}
//在此实例中,模块是一个数组:
对于(;i
我非常感兴趣的是如何组合JSF(特别是它的后端连接器,如a4j:jsFunction)为了封装JavaScript模块?!嗨,Nikita,我没有连接JSF,我替换了它,基本上我使用了封装在JSF bean中的后端服务,并通过ReST映射将它们公开,然后用纯JS编写了一个接口。installedModules没有在任何地方声明……这是全局的还是键入错误?