oipage 1.0.0-alpha.0 → 1.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/format.js +51 -0
- package/bin/help.js +16 -0
- package/bin/resolve404.js +62 -58
- package/bin/run +13 -3
- package/bin/serve.js +7 -5
- package/images/file.png +0 -0
- package/images/folder.png +0 -0
- package/nodejs/animation/index.js +1 -1
- package/nodejs/deeplog/index.js +1 -1
- package/nodejs/linelog/index.js +6 -1
- package/nodejs/throttle/index.js +1 -1
- package/package.json +2 -3
- package/template/404.html +172 -0
- package/web/animation/index.js +1 -1
- package/web/getStyle/index.js +1 -1
- package/web/onReady/index.js +1 -1
- package/web/setStyle/index.js +1 -1
- package/web/throttle/index.js +1 -1
- package/images/goback.png +0 -0
package/bin/format.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
|
|
2
|
+
// 把字节转换成更可读的内容
|
|
3
|
+
exports.formatByte = function (value) {
|
|
4
|
+
if (value < 1024) return value + "Byte";
|
|
5
|
+
|
|
6
|
+
let kb = value / 1024;
|
|
7
|
+
if (kb < 1024) return kb.toFixed(1) + "KB";
|
|
8
|
+
|
|
9
|
+
let mb = kb / 1024;
|
|
10
|
+
if (mb < 1024) return mb.toFixed(1) + "MB";
|
|
11
|
+
|
|
12
|
+
let gb = mb / 1024;
|
|
13
|
+
return gb.toFixed(1) + "GB";
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
// 把时间变成更可读的格式
|
|
17
|
+
exports.formatTime = function (value) {
|
|
18
|
+
let year = value.getFullYear();
|
|
19
|
+
let month = value.getMonth() + 1;
|
|
20
|
+
let day = value.getDate();
|
|
21
|
+
|
|
22
|
+
let hour = value.getHours();
|
|
23
|
+
let minutes = value.getMinutes();
|
|
24
|
+
|
|
25
|
+
let today = new Date();
|
|
26
|
+
if (year == today.getFullYear() && month == today.getMonth() + 1 && day == today.getDate()) {
|
|
27
|
+
return "今天 " + hour + ":" + minutes;
|
|
28
|
+
} else {
|
|
29
|
+
return year + "年" + month + "月" + day + "日 " + hour + ":" + minutes;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
exports.formatArgv = function (argvs, shorts) {
|
|
34
|
+
let result = {};
|
|
35
|
+
|
|
36
|
+
let keyName = "args", value = [];
|
|
37
|
+
for (let index = 3; index < argvs.length; index++) {
|
|
38
|
+
let argv = argvs[index];
|
|
39
|
+
|
|
40
|
+
if (/^\-/.test(argv)) {
|
|
41
|
+
result[keyName] = value;
|
|
42
|
+
keyName = shorts[argv] || argv;
|
|
43
|
+
value = [];
|
|
44
|
+
} else {
|
|
45
|
+
value.push(argv);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
result[keyName] = value;
|
|
49
|
+
|
|
50
|
+
return result;
|
|
51
|
+
};
|
package/bin/help.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const packageValue = require("../package.json");
|
|
2
|
+
|
|
3
|
+
module.exports = function () {
|
|
4
|
+
console.log(`\x1b[36m
|
|
5
|
+
OIPage@v${packageValue.version}
|
|
6
|
+
|
|
7
|
+
可以使用的命令如下:
|
|
8
|
+
|
|
9
|
+
【1】oipage-cli serve 开发服务器
|
|
10
|
+
--port|-p 端口号
|
|
11
|
+
--baseUrl 服务器根目录(相对命令行)
|
|
12
|
+
|
|
13
|
+
Powered by https://github.com/zxl20070701
|
|
14
|
+
\x1b[0m`);
|
|
15
|
+
|
|
16
|
+
};
|
package/bin/resolve404.js
CHANGED
|
@@ -1,78 +1,82 @@
|
|
|
1
|
-
const { readdirSync, lstatSync, readFileSync } = require("fs");
|
|
1
|
+
const { readdirSync, lstatSync, readFileSync, statSync } = require("fs");
|
|
2
2
|
const { join } = require("path");
|
|
3
|
+
const { formatByte, formatTime } = require("./format");
|
|
4
|
+
const mineTypes = require("./mineTypes.json");
|
|
3
5
|
|
|
4
|
-
const img_folder = "data:image/png;base64," + readFileSync("
|
|
5
|
-
const img_file = "data:image/png;base64," + readFileSync("
|
|
6
|
-
const img_goback = "data:image/png;base64," + readFileSync("./images/goback.png").toString('base64');
|
|
6
|
+
const img_folder = "data:image/png;base64," + readFileSync(join(__dirname, "../images/folder.png")).toString('base64');
|
|
7
|
+
const img_file = "data:image/png;base64," + readFileSync(join(__dirname, "../images/file.png")).toString('base64');
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
const template_404 = readFileSync(join(__dirname, "../template/404.html"), {
|
|
10
|
+
encoding: "utf8"
|
|
11
|
+
})
|
|
12
|
+
.replace("${img_folder}", img_folder)
|
|
13
|
+
.replace("${img_file}", img_file);
|
|
14
|
+
|
|
15
|
+
module.exports = function (filePath, url) {
|
|
9
16
|
|
|
10
17
|
let subItems = [];
|
|
11
18
|
|
|
12
19
|
try {
|
|
13
20
|
subItems = readdirSync(filePath);
|
|
21
|
+
console.log("<i> \x1b[1m\x1b[32m[OIPage-dev-server] Open Folder: " + url + '\x1b[0m ' + new Date().toLocaleString());
|
|
14
22
|
} catch (e) {
|
|
23
|
+
console.log("<i> \x1b[1m\x1b[32m[OIPage-dev-server] Open " + (/\/$/.test(url) ? "Folder" : "File") + ": \x1b[35m" + url + ' 404 Not Found\x1b[0m ' + new Date().toLocaleString());
|
|
15
24
|
try {
|
|
16
25
|
filePath = join(filePath, "../");
|
|
17
26
|
subItems = readdirSync(filePath);
|
|
18
27
|
} catch (e) { }
|
|
19
28
|
}
|
|
20
29
|
|
|
21
|
-
let template = "
|
|
30
|
+
let template = "";
|
|
22
31
|
for (let i in subItems) {
|
|
23
32
|
let isDirectory = lstatSync(join(filePath, subItems[i])).isDirectory();
|
|
24
|
-
|
|
33
|
+
let statObj = statSync(join(filePath, subItems[i]));
|
|
34
|
+
|
|
35
|
+
// 文件夹
|
|
36
|
+
if (isDirectory) {
|
|
37
|
+
template += `<tr class="folder">
|
|
38
|
+
<th class="name">
|
|
39
|
+
<a href='./${subItems[i]}/'>${subItems[i]}</a>
|
|
40
|
+
</th>
|
|
41
|
+
<th>
|
|
42
|
+
${formatTime(statObj.mtime)}
|
|
43
|
+
</th>
|
|
44
|
+
<th>
|
|
45
|
+
文件夹
|
|
46
|
+
</th>
|
|
47
|
+
<th>
|
|
48
|
+
-
|
|
49
|
+
</th>
|
|
50
|
+
<th>
|
|
51
|
+
<a href='./${subItems[i]}/' class="btn">打开</a>
|
|
52
|
+
</th>
|
|
53
|
+
</tr>`;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// 文件
|
|
57
|
+
else {
|
|
58
|
+
let dotName = /\./.test(subItems[i]) ? subItems[i].match(/\.([^.]+)$/)[1] : "";
|
|
59
|
+
|
|
60
|
+
template += `<tr class="file">
|
|
61
|
+
<th class="name">
|
|
62
|
+
<a href='./${subItems[i]}'>${subItems[i]}</a>
|
|
63
|
+
</th>
|
|
64
|
+
<th>
|
|
65
|
+
${formatTime(statObj.mtime)}
|
|
66
|
+
</th>
|
|
67
|
+
<th>
|
|
68
|
+
${mineTypes[dotName] || "text/plain"}
|
|
69
|
+
</th>
|
|
70
|
+
<th>
|
|
71
|
+
${formatByte(statObj.size)}
|
|
72
|
+
</th>
|
|
73
|
+
<th>
|
|
74
|
+
<a href='./${subItems[i]}' class="btn">访问</a>
|
|
75
|
+
<a href='./${subItems[i]}' class="btn" download='${subItems[i]}'>下载</a>
|
|
76
|
+
</th>
|
|
77
|
+
</tr>`;
|
|
78
|
+
}
|
|
25
79
|
}
|
|
26
80
|
|
|
27
|
-
return
|
|
28
|
-
<html lang="zh-cn">
|
|
29
|
-
|
|
30
|
-
<head>
|
|
31
|
-
<meta charset="UTF-8">
|
|
32
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
33
|
-
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
34
|
-
<title>404 Not Found</title>
|
|
35
|
-
<style>
|
|
36
|
-
body{
|
|
37
|
-
margin: 0px;
|
|
38
|
-
background-color:#fcfcfc;
|
|
39
|
-
display: flex;
|
|
40
|
-
flex-wrap:wrap;
|
|
41
|
-
padding:100px;
|
|
42
|
-
}
|
|
43
|
-
body>a{
|
|
44
|
-
text-decoration: none;
|
|
45
|
-
padding:10px;
|
|
46
|
-
color:#000000;
|
|
47
|
-
text-align:center;
|
|
48
|
-
width:100px;
|
|
49
|
-
background-repeat: no-repeat;
|
|
50
|
-
background-position: center 0px;
|
|
51
|
-
padding-top: 65px;
|
|
52
|
-
margin-top: 50px;
|
|
53
|
-
font-size:12px;
|
|
54
|
-
background-size: 55% auto;
|
|
55
|
-
}
|
|
56
|
-
body>a:hover{
|
|
57
|
-
outline:1px solid #55b9e6;
|
|
58
|
-
}
|
|
59
|
-
body>a.folder{
|
|
60
|
-
background-image:url('${img_folder}');
|
|
61
|
-
}
|
|
62
|
-
body>a.file{
|
|
63
|
-
background-image:url('${img_file}');
|
|
64
|
-
}
|
|
65
|
-
body>a.goback{
|
|
66
|
-
background-image:url('${img_goback}');
|
|
67
|
-
}
|
|
68
|
-
</style>
|
|
69
|
-
</head>
|
|
70
|
-
|
|
71
|
-
<body>
|
|
72
|
-
|
|
73
|
-
${template}
|
|
74
|
-
|
|
75
|
-
</body>
|
|
76
|
-
|
|
77
|
-
</html>`;
|
|
81
|
+
return template_404.replace("${current}", filePath).replace("${template}", template);
|
|
78
82
|
};
|
package/bin/run
CHANGED
|
@@ -4,14 +4,24 @@
|
|
|
4
4
|
|
|
5
5
|
process.title = 'OIPage';
|
|
6
6
|
|
|
7
|
+
const { formatArgv } = require("./format");
|
|
8
|
+
const doServe = require("./serve");
|
|
9
|
+
const doHelp = require("./help");
|
|
10
|
+
|
|
7
11
|
// 开发服务器
|
|
8
12
|
if (process.argv[2] == "serve") {
|
|
9
|
-
|
|
10
|
-
|
|
13
|
+
|
|
14
|
+
let argvObj = formatArgv(process.argv, {
|
|
15
|
+
"-p": "--port"
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
doServe({
|
|
19
|
+
port: (argvObj["--port"] || [])[0] || 8080,
|
|
20
|
+
baseUrl: (argvObj["--baseUrl"] || [])[0] || "./",
|
|
11
21
|
});
|
|
12
22
|
}
|
|
13
23
|
|
|
14
24
|
// 默认,帮助
|
|
15
25
|
else {
|
|
16
|
-
|
|
26
|
+
doHelp();
|
|
17
27
|
}
|
package/bin/serve.js
CHANGED
|
@@ -10,8 +10,8 @@ const resolve404 = require("./resolve404.js");
|
|
|
10
10
|
module.exports = function (config) {
|
|
11
11
|
let startTime = new Date().valueOf();
|
|
12
12
|
|
|
13
|
-
const port = config.port
|
|
14
|
-
const basePath = join(process.cwd(),
|
|
13
|
+
const port = config.port; // 端口号
|
|
14
|
+
const basePath = join(process.cwd(), config.baseUrl); // 服务器根路径
|
|
15
15
|
|
|
16
16
|
let Server = createServer(function (request, response) {
|
|
17
17
|
|
|
@@ -34,6 +34,8 @@ module.exports = function (config) {
|
|
|
34
34
|
});
|
|
35
35
|
response.write(readFileSync(filePath));
|
|
36
36
|
response.end();
|
|
37
|
+
|
|
38
|
+
console.log("<i> \x1b[1m\x1b[32m[OIPage-dev-server] Open File: " + url + '\x1b[0m ' + new Date().toLocaleString());
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
// 否则就是404
|
|
@@ -43,7 +45,7 @@ module.exports = function (config) {
|
|
|
43
45
|
'Access-Control-Allow-Origin': '*',
|
|
44
46
|
'Server': 'Powered by OIPage-dev-server@' + packageValue.version
|
|
45
47
|
});
|
|
46
|
-
response.write(resolve404(filePath));
|
|
48
|
+
response.write(resolve404(filePath, url));
|
|
47
49
|
response.end();
|
|
48
50
|
}
|
|
49
51
|
|
|
@@ -56,9 +58,9 @@ module.exports = function (config) {
|
|
|
56
58
|
|
|
57
59
|
// 打印成功提示
|
|
58
60
|
console.log('<i> \x1b[1m\x1b[32m[OIPage-dev-server] Project is running at:\x1b[0m');
|
|
59
|
-
console.log('<i> \x1b[1m\x1b[32m[OIPage-dev-server] Loopback: \x1b[36mhttp://localhost
|
|
61
|
+
console.log('<i> \x1b[1m\x1b[32m[OIPage-dev-server] Loopback: \x1b[36mhttp://localhost:' + port + '/\x1b[0m');
|
|
60
62
|
for (let ipv4Item of networkValue.IPv4) console.log('<i> \x1b[1m\x1b[32m[OIPage-dev-server] On Your Network (IPv4):\x1b[36m http://' + ipv4Item.address + ':' + port + '/\x1b[0m');
|
|
61
63
|
for (let ipv6Item of networkValue.IPv6) console.log('<i> \x1b[1m\x1b[32m[OIPage-dev-server] On Your Network (IPv6): \x1b[36mhttp://[' + ipv6Item.address + ']:' + port + '/\x1b[0m');
|
|
62
64
|
console.log('<i> \x1b[1m\x1b[32m[OIPage-dev-server] Content not from OIPage is served from \x1b[36m"' + basePath + '" \x1b[0mdirectory');
|
|
63
|
-
console.log('\nOIPage ' + packageValue.version + ' compiled \x1b[1m\x1b[32msuccessfully\x1b[0m in ' + (new Date().valueOf() - startTime) + ' ms')
|
|
65
|
+
console.log('\nOIPage ' + packageValue.version + ' compiled \x1b[1m\x1b[32msuccessfully\x1b[0m in ' + (new Date().valueOf() - startTime) + ' ms\n')
|
|
64
66
|
};
|
package/images/file.png
CHANGED
|
Binary file
|
package/images/folder.png
CHANGED
|
Binary file
|
package/nodejs/deeplog/index.js
CHANGED
package/nodejs/linelog/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* linelog of OIPage v1.0.0-alpha.
|
|
2
|
+
* linelog of OIPage v1.0.0-alpha.2
|
|
3
3
|
* git+https://github.com/oi-contrib/OIPage.git
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -8,6 +8,11 @@ const MOVE_LEFT = Buffer.from('1b5b3130303044', 'hex').toString();
|
|
|
8
8
|
const MOVE_UP = Buffer.from('1b5b3141', 'hex').toString();
|
|
9
9
|
const CLEAR_LINE = Buffer.from('1b5b304b', 'hex').toString();
|
|
10
10
|
|
|
11
|
+
// 计算字符串长度的方法
|
|
12
|
+
const stringwidth = function (str) {
|
|
13
|
+
return str.length;
|
|
14
|
+
};
|
|
15
|
+
|
|
11
16
|
/**
|
|
12
17
|
* 不换行打印
|
|
13
18
|
* @param {string} stream 打印的内容
|
package/nodejs/throttle/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oipage",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.2",
|
|
4
4
|
"description": "前端网页或应用快速开发助手,包括开发服务器、辅助命令、实用API等",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"scripts": {
|
|
7
7
|
"dev": "node ./build/index.js watch",
|
|
8
8
|
"build": "node ./build/index.js",
|
|
9
|
-
"
|
|
10
|
-
"doc": ""
|
|
9
|
+
"docs": "node ./bin/run serve -p 20000 --baseUrl ./docs"
|
|
11
10
|
},
|
|
12
11
|
"bin": {
|
|
13
12
|
"oipage-cli": "bin/run"
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="zh-cn">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8">
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
+
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
8
|
+
<title>404 Not Found</title>
|
|
9
|
+
<style>
|
|
10
|
+
body {
|
|
11
|
+
margin: 0px;
|
|
12
|
+
background-color: #ffffff;
|
|
13
|
+
display: flex;
|
|
14
|
+
flex-wrap: wrap;
|
|
15
|
+
padding: 100px;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
a {
|
|
19
|
+
text-decoration: none;
|
|
20
|
+
color: #284259;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
a:hover {
|
|
24
|
+
text-decoration: underline;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.fork {
|
|
28
|
+
width: 160px;
|
|
29
|
+
line-height: 30px;
|
|
30
|
+
position: fixed;
|
|
31
|
+
background-color: #607D8B;
|
|
32
|
+
text-align: center;
|
|
33
|
+
color: white;
|
|
34
|
+
outline: 2px dashed #607D8B;
|
|
35
|
+
width: 200px;
|
|
36
|
+
transform: rotate(45deg);
|
|
37
|
+
right: -45px;
|
|
38
|
+
top: 45px;
|
|
39
|
+
z-index: 1;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.current {
|
|
43
|
+
box-sizing: border-box;
|
|
44
|
+
position: fixed;
|
|
45
|
+
left: 0;
|
|
46
|
+
top: 0;
|
|
47
|
+
line-height: 50px;
|
|
48
|
+
padding-left: 20px;
|
|
49
|
+
font-size: 14px;
|
|
50
|
+
color: #000000;
|
|
51
|
+
font-style: italic;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.filelist {
|
|
55
|
+
box-sizing: border-box;
|
|
56
|
+
position: fixed;
|
|
57
|
+
left: 20px;
|
|
58
|
+
top: 50px;
|
|
59
|
+
outline: 1px solid #9E9E9E;
|
|
60
|
+
width: calc(100vw - 40px);
|
|
61
|
+
height: calc(100vh - 70px);
|
|
62
|
+
overflow: auto;
|
|
63
|
+
padding: 20px;
|
|
64
|
+
border-radius: 5px;
|
|
65
|
+
background-color: #fcfcfc;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.filelist>table {
|
|
69
|
+
width: 100%;
|
|
70
|
+
text-align: left;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.filelist>table tr>th {
|
|
74
|
+
white-space: nowrap;
|
|
75
|
+
padding: 0 10px;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.filelist>table>thead>tr>th {
|
|
79
|
+
color: #284259;
|
|
80
|
+
font-size: 13px;
|
|
81
|
+
line-height: 40px;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.filelist>table>tbody>tr {
|
|
85
|
+
border: 1px solid #cdcdcd00;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.filelist>table>tbody>tr>th {
|
|
89
|
+
text-decoration: none;
|
|
90
|
+
font-size: 12px;
|
|
91
|
+
color: #3c3c3c;
|
|
92
|
+
word-break: break-all;
|
|
93
|
+
font-weight: 400;
|
|
94
|
+
line-height: 30px;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.filelist>table>tbody>tr>th>.btn {
|
|
98
|
+
color: white;
|
|
99
|
+
background-color: #2196F3;
|
|
100
|
+
padding: 2px 5px;
|
|
101
|
+
border-radius: 5px;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.filelist>table>tbody>tr>th.name {
|
|
105
|
+
background-repeat: no-repeat;
|
|
106
|
+
background-position: left center;
|
|
107
|
+
background-size: auto 90%;
|
|
108
|
+
padding-left: 30px;
|
|
109
|
+
color: #000000;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.filelist>table>tbody>tr>th.name>span {
|
|
113
|
+
white-space: nowrap;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.filelist>table>tbody>tr.file>th.name {
|
|
117
|
+
background-image: url('${img_file}');
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.filelist>table>tbody>tr.folder>th.name {
|
|
121
|
+
background-image: url('${img_folder}');
|
|
122
|
+
}
|
|
123
|
+
</style>
|
|
124
|
+
</head>
|
|
125
|
+
|
|
126
|
+
<body>
|
|
127
|
+
<a href="https://github.com/oi-contrib/OIPage" target="_blank" class="fork">
|
|
128
|
+
Fork me on Github
|
|
129
|
+
</a>
|
|
130
|
+
<div class="current">
|
|
131
|
+
当前位置:${current}
|
|
132
|
+
</div>
|
|
133
|
+
<div class="filelist">
|
|
134
|
+
<table>
|
|
135
|
+
<thead>
|
|
136
|
+
<tr>
|
|
137
|
+
<th>
|
|
138
|
+
名称
|
|
139
|
+
</th>
|
|
140
|
+
<th>
|
|
141
|
+
修改日期
|
|
142
|
+
</th>
|
|
143
|
+
<th>
|
|
144
|
+
类型
|
|
145
|
+
</th>
|
|
146
|
+
<th>
|
|
147
|
+
大小
|
|
148
|
+
</th>
|
|
149
|
+
<th>
|
|
150
|
+
操作
|
|
151
|
+
</th>
|
|
152
|
+
</tr>
|
|
153
|
+
</thead>
|
|
154
|
+
<tbody>
|
|
155
|
+
<tr class="folder">
|
|
156
|
+
<th class="name"><a href='../'>..</a></th>
|
|
157
|
+
<th>-</th>
|
|
158
|
+
<th>
|
|
159
|
+
文件夹
|
|
160
|
+
</th>
|
|
161
|
+
<th>-</th>
|
|
162
|
+
<th>
|
|
163
|
+
<a href='../' class="btn">打开</a>
|
|
164
|
+
</th>
|
|
165
|
+
</tr>
|
|
166
|
+
${template}
|
|
167
|
+
</tbody>
|
|
168
|
+
</table>
|
|
169
|
+
</div>
|
|
170
|
+
</body>
|
|
171
|
+
|
|
172
|
+
</html>
|
package/web/animation/index.js
CHANGED
package/web/getStyle/index.js
CHANGED
package/web/onReady/index.js
CHANGED
package/web/setStyle/index.js
CHANGED
package/web/throttle/index.js
CHANGED
package/images/goback.png
DELETED
|
Binary file
|