页面上写一个简单的方法
<script>
function show(){
console.log('ok')
}
</script>
通过nodejs服务的方式写一个接口调用该方法
//导入http内置块
const http = require('http')
//创建一个Http服务器
const server = http.createServer()
//监听http服务的request请求
server.on('request',function(req,res){
const url = req.url
if(url === '/getscript'){
//拼接一个合法的js脚本,这里拼接的是一个方法的调用
var scriptStr = 'show()'
//res.end发送给客户端,客户端把这个字符串当作脚本代码去执行
res.end(scriptStr)
}else{
res.end('404')
}
})
//指定端口号并启动服务器监听
server.listen(3000,function(){
console.log('server listen ai http://127.0.0.1:3000')
})
然后运行该服务,出现server listen ai http://127.0.0.1:3000则服务运行成功。在页面中即可访问该3000的端口地址,并且可以通过访问getscript接口来调用show方法。
此时页面运行后控制台输出 ok 即为访问成功。
但这样方法名称在客户端写死了,不太妥当。最后在服务器能够接受来自客户端的方法的名称。下面进行改造:
在客户端访问地址加上调用方法名:
<script src="http://127.0.0.1:3000/getscript?callback=show"></script>
在js中引入可以解析url的模块,通过utl获取到传过来的方法名参数。
//导入http内置块
const http = require('http')
//这个核心模块可以解析url地址,拿到pathname query
const urlModule = require('url')
//创建一个Http服务器
const server = http.createServer()
//监听http服务的request请求
server.on('request',function(req,res){
/* const url = req.url */
const { pathname:url,query } = urlModule.parse(req.url,true)
if(url === '/getscript'){
//拼接一个合法的js脚本,这里拼接的是一个方法的调用
//var scriptStr = 'show()'
var scriptStr = `${query.callback}()`
//res.end发送给客户端,客户端把这个字符串当作脚本代码去执行
res.end(scriptStr)
}else{
res.end('404')
}
})
//指定端口号并启动服务器监听
server.listen(3000,function(){
console.log('server listen ai http://127.0.0.1:3000')
})
这样便可以实现node写服务端