当前位置: 首页 > news >正文

node搭建服务器

node安装

这里就不展示了,可以查看我之前发的node安装教程

node搭建服务器

1.首先创建一个文件夹,通过vscode打开
2.然后打开终端,输入

npm init -y 初始化项目

3.然后安装http的依赖

npm i http

4.然后启动http服务器

//app.js
const http = require('http');

http.createServer((req,res)=>{
  res.write('hello wrold');
  res.end();
}).listen(3000,()=>{
  console.log('服务已经启动');
})

在终端中输入

node app.js

当然这里安利一个好用的插件,因为我们下次更新一个行代码,需要重新自己在运行一遍
这个时候我们可以安装一个nodemon插件

npm install nodemon

然后输入 nodemon app.js
这个时候我们将不需要每更新一行代码重启一次服务
结果如下:
在这里插入图片描述
5.这个时候我们似乎可以看到我们想要渲染的数据,可是当我们想让页面输出中文的时候,这个时候页面似乎出现乱码
在这里插入图片描述
对于这种情形,我们应该需要给我们的数据添加响应头

const http = require('http');

http.createServer((req,res)=>{
  res.writeHead(200,{ "Content-Type": "text/html;charset=utf-8" })//添加响应头
  res.write('小编好帅');
  res.end();
}).listen(3000,()=>{
  console.log('服务已经启动');
})

结果如下:
在这里插入图片描述
6.根据不同的请求url,给予不同的url
因为我们请求接口不同返回的数据也是不相同的
于是就会有以下的代码:

//renderContent.js
function renderContent(url) {
  switch (url) {
    case "/api/home":
      return `
        {
          page : '首页'
        }
      `;
    case "/api/target":
      return `
          {
            page : '分页'
          }
        `;
    default:
      return "404";
  }
}

exports.renderContent = renderContent;
//renderStatus.js
function renderStatus(url) {
    const arr = ["/api/home", "/api/target"];
    return arr.includes(url) ? 200 : 404;
}

module.exports = {
    renderStatus,
};

然后在我们的app.js中输入如下代码:

const http = require('http');
const { renderStatus } =require('./renderStatus');
const { renderContent } = require('./renderContent')

http.createServer((req,res)=>{
  res.writeHead(renderStatus(req.url),{ "Content-Type": "text/html;charset=utf-8" })//给响应头添加响应数据
  res.end(renderContent(req.url));
}).listen(3000,()=>{
  console.log('服务已经启动');
})

将会出现如下结果:
在这里插入图片描述
在这里插入图片描述

相关文章:

  • 域名解析信息易语言代码
  • 【GNN报告】蒙特利尔大学朱兆成:基于图神经网络的知识图谱推理
  • ATF启动(二):BL1
  • Nginx之正则表达式、location匹配简介以及rewrite重写
  • Kafka 集群安装及常用命令
  • C++变量和基本类型
  • 室温熔盐-Romm Temperature Melten Salt-RTMS-离子液体
  • 无胁科技-TVD每日漏洞情报-2022-9-1
  • C++征途 --- 内建函数对象
  • 李沐d2l(十一)--图像增广
  • ubuntu 环境安装微信
  • pdf怎么压缩到又小又清晰?
  • 三目运算符的多层嵌套
  • 【一生一芯】Chap.1 “一生一芯”实验环境配置| VMware安装Ubuntu20.04 | PA工程配置 | 解决llvm版本问题
  • Centos7 Redis安装
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • CSS3 变换
  • ECMAScript6(0):ES6简明参考手册
  • ERLANG 网工修炼笔记 ---- UDP
  • Java反射-动态类加载和重新加载
  • miaov-React 最佳入门
  • ReactNative开发常用的三方模块
  • Spark RDD学习: aggregate函数
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • Vue学习第二天
  • windows下如何用phpstorm同步测试服务器
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 后端_MYSQL
  • 你不可错过的前端面试题(一)
  • 使用 @font-face
  • 思否第一天
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (2)STL算法之元素计数
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (全注解开发)学习Spring-MVC的第三天
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (转)VC++中ondraw在什么时候调用的
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .net core 6 集成和使用 mongodb
  • .NET Framework .NET Core与 .NET 的区别
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .net知识和学习方法系列(二十一)CLR-枚举
  • @Autowired多个相同类型bean装配问题
  • @Repository 注解
  • []error LNK2001: unresolved external symbol _m
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [Android]Tool-Systrace
  • [Angularjs]ng-select和ng-options
  • [ASP.NET MVC]Ajax与CustomErrors的尴尬
  • [bzoj4240] 有趣的家庭菜园
  • [C#C++]类CLASS