本来只是想在Pjt里面作为一个加载页面的小程序,经过扩展后支持Ajax,自动解析Json数据,内置require,支持AMD标准的模块加载;多模块异步无序加载;多模块异步顺序加载;比一些常用的require库小,功能少,算是又造轮子了。
Pjt项目:moasp/PithyJt
语法:AJAX(
url:string
[, method:string]
[, data:string|array]
[, headers:array]
[, callback:function]
[, error:function]
)
数据类型相同的参数必须按顺序出现,不同数据类型的参数,顺序可任意。
例如:
AJAX(callback, url, method);
但是不可以下面这样写。
AJAX(callback, method, url);
callback回调的第一个参数为ajax请求来的text或者json数据。
error回调只有在json数据解析失败或者ajax请求失败时才会调用。
如果服务器返回的content-type为test/json或者application/json,callback第一个参数为json对象,不是字符串。
//请求a.html页面,返回请求内容res
AJAX('a.html', function(res){
console.log(res);
});
AJAX.base
定义AJAX以及require的基础路径,默认base为当前请求目录。
AJAX.require
引用js模块,多个模块的引用是异步的,不保证调用顺序,可以保证callback的参数顺序同name提供的顺序一致。
引用不能处理模块之间的依赖,请注意。
语法1:AJAX.require(name:strins[, name2:string[..., namen:string]][, callback:function]);
语法2:AJAX.require(name:array[, base:string][, callback:function]);
语法1中,name - namen 为js文件路径,可同时引用多个
语法2中,name为js路径的数组,base为基础路径,会拼接到前面的name数组,如果不定义,默认使用全局base
回调函数的参数同name参数的顺序一致;
下面几种方法功能完全一致:
AJAX.require('../src/pithy.teemplate.helper.js', '../src/pithy.teemplate.extends.js', function(helper, _extends){
//statement
});
AJAX.require(['../src/pithy.teemplate.helper.js', '../src/pithy.teemplate.extends.js'], function(helper, _extends){
//statement
});
AJAX.require(['pithy.teemplate.helper', 'pithy.teemplate.extends'], '../src/', function(helper, _extends){
//statement
});
AJAX.base('../src/');
AJAX.require('pithy.teemplate.helper', 'pithy.teemplate.extends', function(helper, _extends){
//statement
});
AJAX.next
同require使用同样的语法,实现同样的功能。
唯一区别是,require中模块引用是无序的,next会按照name提供的顺序来引用模块。
模块定义可以直接通过module.exports或者return导出。 同时,提供define方法,遵循AMD标准导出模块。
module.exports = {name : 'module1'};
//或者
return {name : 'module1'};
模块内部可以使用define,并可以处理模块依赖。
//通过回调函数导出
define(function(){
module.exports = {};
});
//通过回调函数return导出
define(function(){
return {};
});
//直接导出,不借助回调函数
define({});
define可以处理模块依赖,依赖模块使用数组定义。 模块依赖只能通过define处理。
define(['A'], function(a){
module.exports = {
func : function(){
a.func();
}
};
});
//依赖多个模块
define(['A', 'B'], function(a, b){
module.exports = {
func : function(){
a.func();
}
};
});
模块内部不提供require方法,如果提供的话,内部实现为同步调用,非常不推荐,所以这里就干脆不提供了。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。