Javascript 如何使用自定义标记插件在Hexo中呈现获取的数据?
我正在使用Hexo构建一个基于降价的在线文档,但我想通过呈现网络设备输出命令来扩展它的功能 更清楚地说,在呈现页面之前,我希望使用http获取结果,而不是将命令及其结果复制粘贴到代码块中 我已经编写了负责运行所需命令并在web服务器中公开其结果的软件 它所做的只是发送一个包含结果的字符串。只是文字 我只想使用Hexo标签插件在页面中呈现这个结果 我现在真的处于开发阶段,所以我只使用默认主题(“景观”)。因为我正在使用一个旧的Arch Linux版本(Javascript 如何使用自定义标记插件在Hexo中呈现获取的数据?,javascript,plugins,promise,fetch,hexo,Javascript,Plugins,Promise,Fetch,Hexo,我正在使用Hexo构建一个基于降价的在线文档,但我想通过呈现网络设备输出命令来扩展它的功能 更清楚地说,在呈现页面之前,我希望使用http获取结果,而不是将命令及其结果复制粘贴到代码块中 我已经编写了负责运行所需命令并在web服务器中公开其结果的软件 它所做的只是发送一个包含结果的字符串。只是文字 我只想使用Hexo标签插件在页面中呈现这个结果 我现在真的处于开发阶段,所以我只使用默认主题(“景观”)。因为我正在使用一个旧的Arch Linux版本(4.19.8-arch1-1-Arch),所以
4.19.8-arch1-1-Arch
),所以我使用的是Docker
容器内的文件结构:
。
|--_config.yml
|--package.json
|--脚手架
||--draft.md
||--page.md
|`--post.md
|--剧本
|`--index.js
|--来源
|`--U职位
|`--hello-world.md
`--主题
码头工人
hello-world.md
自定义插件(scripts/index.js)
const fetch=require(“节点提取”);
hexo.extend.tag.register(“cli_exporter”,(args)=>{
const hostname=“XX.YYY.ZZZ.WW:XXXX”
让端点、模块、目标
[端点、模块、目标]=参数
const url=“http://”+主机名+'/'+端点
+“?module=“+module+”&target=“+target
获取(url)
。然后(响应=>{
if(response.ok){
返回response.text()
。然后(数据=>“”+数据+“”)
.catch(错误=>console.error(错误))
}
返回承诺。拒绝(新错误(“响应失败”))
})
.catch(error=>Promise.reject(新错误(error.message)))
},{async:true});
我真的不能给你真正的主机名,因为它是私人软件,但它实际上只是纯文本
假设我想从Cisco路由器呈现
显示版本
结果。如果我在插件中console.log(data)
,我会得到预期的结果。但它不会在生成的网站中呈现。我想我的javascript有点生疏了。我通过添加一个报税表解决了这个问题
const fetch = require("node-fetch");
async function request(url) {
const response = await fetch(url)
const text = await response.text()
return text
}
hexo.extend.tag.register("cli_exporter", (args) => {
const hostname = "XX.YYY.ZZZ.WW:XXXX"
let endpoint, module, target
[endpoint, module, target] = args
const url = "http://" + hostname + '/' + endpoint
+ "?module=" + module + "&target=" + target
return request(url)
.then(data => {
return "<div>" + data + "</div>"
})
.catch(error => console.error(error))
}, {async: true});
const fetch=require(“节点提取”);
异步函数请求(url){
const response=等待获取(url)
const text=wait response.text()
返回文本
}
hexo.extend.tag.register(“cli_exporter”,(args)=>{
const hostname=“XX.YYY.ZZZ.WW:XXXX”
让端点、模块、目标
[端点、模块、目标]=参数
const url=“http://”+主机名+'/'+端点
+“?module=“+module+”&target=“+target
返回请求(url)
。然后(数据=>{
返回“”+数据+“”
})
.catch(错误=>console.error(错误))
},{async:true});
我想我的javascript有点生锈了。我通过添加一个报税表解决了这个问题
const fetch = require("node-fetch");
async function request(url) {
const response = await fetch(url)
const text = await response.text()
return text
}
hexo.extend.tag.register("cli_exporter", (args) => {
const hostname = "XX.YYY.ZZZ.WW:XXXX"
let endpoint, module, target
[endpoint, module, target] = args
const url = "http://" + hostname + '/' + endpoint
+ "?module=" + module + "&target=" + target
return request(url)
.then(data => {
return "<div>" + data + "</div>"
})
.catch(error => console.error(error))
}, {async: true});
const fetch=require(“节点提取”);
异步函数请求(url){
const response=等待获取(url)
const text=wait response.text()
返回文本
}
hexo.extend.tag.register(“cli_exporter”,(args)=>{
const hostname=“XX.YYY.ZZZ.WW:XXXX”
让端点、模块、目标
[端点、模块、目标]=参数
const url=“http://”+主机名+'/'+端点
+“?module=“+module+”&target=“+target
返回请求(url)
。然后(数据=>{
返回“”+数据+“”
})
.catch(错误=>console.error(错误))
},{async:true});
const fetch = require("node-fetch");
hexo.extend.tag.register("cli_exporter", (args) => {
const hostname = "XX.YYY.ZZZ.WW:XXXX"
let endpoint, module, target
[endpoint, module, target] = args
const url = "http://" + hostname + '/' + endpoint
+ "?module=" + module + "&target=" + target
fetch(url)
.then(response => {
if (response.ok) {
return response.text()
.then(data => "<div>" + data + "</div>")
.catch(error => console.error(error))
}
return Promise.reject(new Error("response failed"))
})
.catch(error => Promise.reject(new Error(error.message)))
}, {async: true});
const fetch = require("node-fetch");
async function request(url) {
const response = await fetch(url)
const text = await response.text()
return text
}
hexo.extend.tag.register("cli_exporter", (args) => {
const hostname = "XX.YYY.ZZZ.WW:XXXX"
let endpoint, module, target
[endpoint, module, target] = args
const url = "http://" + hostname + '/' + endpoint
+ "?module=" + module + "&target=" + target
return request(url)
.then(data => {
return "<div>" + data + "</div>"
})
.catch(error => console.error(error))
}, {async: true});