You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

178 lines
5.3 KiB

var GV = {};
var isBrowser = false;
var Promise;
var GoUseCallback;
var GoUse = function (cb) {
GoUseCallback = "with(this){(" + cb.toString() + ")()}";
}
var net = {
request: function (c) {
var url = c["url"];
var data = c["data"];
var header = c["header"];
var method = c["method"];
var dataType = c["dataType"];
var timeout = c["timeout"];
var success = c["success"];
var fail = c["fail"];
var complete = c["complete"];
var isHost = url.indexOf("http://") > -1 || url.indexOf("https://") > -1;
var isAbs = (url[0] == '/');
if (!isHost) {
if (!isAbs) {
url = location.pathname + "/" + url
}
url = location.host + "/" + url;
for (; url.indexOf("//") > -1;) {
url = url.replace("//", "/")
}
url = location.protocol + "//" + url
}
if (data) {
if (method == "GET") {
url = $.param.querystring(url, data);
data = ""
} else {
if (typeof (data) == "object") {
if (header["Content-Type"].indexOf("application/json") > -1 || header["content-type"].indexOf("application/json") > -1) {
data = JSON.stringify(data);
} else {
data = $.param(data);
}
}
}
}
var resp = GoRequest({
url: url,
data: data,
method: method,
header: header,
timeout: timeout
});
resp = JSON.parse(resp);
var statusCode = resp["statusCode"];
var result = resp["data"];
if (dataType == "json") {
result = JSON.parse(result)
}
if (statusCode == 200) {
success && success({
data: result,
statusCode: statusCode + "",
});
} else {
fail && fail({
data: result,
statusCode: statusCode + "",
})
}
}
};
var axiosUse = function (ctx) {
var buildURL = ctx.require('axios/lib/helpers/buildURL');
var buildFullPath = ctx.require('axios/lib/core/buildFullPath');
var settle = ctx.require('axios/lib/core/settle');
var createError = ctx.require('axios/lib/core/createError');
function transformResponse(mpResponse, config, mpRequestOption) {
var headers = mpResponse.header || mpResponse.headers;
var status = mpResponse.statusCode || mpResponse.status;
var statusText = '';
if (status === 200) {
statusText = 'OK';
} else if (status === 400) {
statusText = 'Bad Request';
}
var response = {
data: mpResponse.data,
status: status,
statusText: statusText,
headers: headers,
config: config,
request: mpRequestOption
};
return response;
}
ctx.axios.defaults.adapter = function (config) {
return new Promise(function (resolve, reject) {
var mpRequestOption = {
url: buildURL(buildFullPath(config.baseURL, config.url), config.params, config.paramsSerializer),
method: config["method"] ? config["method"].toUpperCase() : "get",
data: config["data"],
header: config["headers"],
timeout: config["timeout"],
success: function (mpResponse) {
var response = transformResponse(mpResponse, config, mpRequestOption);
settle(resolve, reject, response);
},
fail: function (error) {
reject(createError(error.data));
},
};
net.request(mpRequestOption)
})
};
}
var GetGoVueTemplate = function (raw) {
var tagStart = "<!--gv-start-->";
var tagEnd = "<!--gv-end-->";
var start = raw.indexOf(tagStart)
if (start < 0) {
return
}
var end = raw.indexOf(tagEnd)
if (end < 0) {
throw "注释未闭合"
return
}
var content = raw.substring(start + tagStart.length, end);
var template = raw.substring(0, start) + "<!--vue-ssr-outlet-->\n{{{GoVueTemplate}}}\n{{{GoVueData}}}" + raw.substr(end + tagEnd.length);
return {
template: template,
content: content,
}
}
var GetGoVueJsCode = function (htmlparser2, raw) {
var codes = [];
var flag = false;
var parser = new htmlparser2.Parser(
{
onopentag: function (name, attribs) {
flag = (name === "script" && (attribs["gv-src"] || attribs["gv-src"] === ""))
if (flag) {
if (attribs.src) {
codes.push(GoReadFile(attribs.src))
}else{
codes.push("")
}
}
// console.log("name", name, attribs["gv-src"]);
},
ontext: function (text) {
if (flag && text && text !== "") {
codes[codes.length - 1] += text
}
// console.log("-->", text);
},
},
{decodeEntities: true}
);
parser.write(raw)
parser.end();
return codes;
}