我刚学node.js,域名已经可以使用,node.js如何让他可以访问到页面,我不会希望细细注释的那种,请讲node.js相关知识。
nodejs并不是让你的域名访问到你的服务器ip的东西,他只是可以用于编写服务,你的域名可以绑定服务器ip,然后将来别人访问你的域名就等于进入了你的ip地址,你的ip地址端口原本不让别人访问,要比如用nginx,他会把默认的端口80暴露出来,然后别人就能够通过域名访问到你的端口了,但是你的端口没有东西,nginx还可以把你的端口代理到对应的文件上,这样就形成了 别人访问你域名->等于访问你的服务器ip->ip上默认端口80有nginx代理的页面给你看见,然后这个页面可以有代码,代码访问接口,就是在服务器80端口上,访问你用nodejs编写的在服务器3000端口上的接口服务,就这么回事。
nodejs编写一个后台接口服务这么写,编写一个app.js
文件,然后再使用node app.js
命令启动这个文件:
//导入express,express就是nodejs写服务端的依赖包,需要执行npm i express获得
const express = require('express');
const app = new express()//新建一个express实例,为app
app.use(express.json())//app,use加载中间件express.json(),为的是能处理json数据。
//get请求,请求名是getMsg
app.get('/getMsg', (req, res) => {
res.set('Access-Control-Allow-Origin', '*')//cors简单解决跨域
res.send({msg: '信息内容'})//接口响应信息,你在这里响应html内容前端就会得到html内容
})
//在3000端口上启动,意味着别人访问你的接口时,比如getMsg,要访问你的 服务器+3000端口+服务名:http://xxx.xx.xx.xx:3000/getMsg
app.listen(3000, () => {
console.log('服务器在3000端口上启动成功')
})
前端代码这么写,如果是在同一台电脑上前后端,那就是访问本地localhost:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<button onclick="test()">获取信息</button>
<script>
const test = async () => {
//http://localhost:3000/getMsg就是上文所说的服务器+3000端口+服务名
const res = await fetch('http://localhost:3000/getMsg')
const data = await res.json()
console.log(data)
}
</script>
</body>
</html>
直接安装宝塔,有一站式网站的搭建,然后创建node项目的网站即可,只需要你的node文件,宝塔面板,百度一下即可
这个跟那个语言或是那个框架关系不大,你说你有域名能够使用了,那你就直接在你买那个域名的云服务商买一个云服务器(不同云服务商也没关系,稍微配置dns解析或是进行域名转让就可以了),他会给你一个固定公网ip,你就在那台机子上面启动这个node服务,在配置一下dns就能够使用域名访问了(记得域名还要备案一下
安装宝塔,添加网站,配置域名,弄完设置反向代理填自己的node.js的IP加端口就OK了。域名就可以访问到nodejs后端的东西了。
单用node.js 无法实现你说的域名访问。你还需要一个代理服务得东西,推荐使用nginx
node.js启动服务后,有访问地址,比如:http://localhost:8080/index.html 到这node.js能做的就已经完成了。剩下的需要nginx解析域名指向你的服务器的8080端口的index.html页面