好好学习,天天向上,懒惰、颓废让我越来越糟糕,所以分享一下,共同学习
纯node.js搭建一个小服务,下图为文件目录结构,很简单,很小

log文件是自动生成的

index.js文件

const url = require('url');
const http = require('http');
const fs = require('fs');
const { Console } = require('console'); let hostname = '127.0.0.1';
let port = 8080; var curURL = '' // 读取文件,处理编码问题
function readText (pathname) {
let bin = fs.readFileSync(pathname)
if (bin[0] === 0xEF && bin[1] === 0xBB && bin[2] === 0xBF) {
bin = bin.slice(3)
}
return bin.toString('utf-8')
} // 获取当前的时间
function getCurrentDate () {
let date = new Date();
let year = date.getFullYear();
let month = date.getMonth()+1;
let day = date.getDate();
let hour = date.getHours();
let minute = date.getMinutes();
let second = date.getSeconds();
let curDate = year + '年' + month + '月' + day + '日 ' + hour + ':' + minute + ':' + second;
return curDate
} // 创建 HTTP 隧道代理
const server = http.createServer((req, res) => {
var pathname = url.parse(req.url).pathname;
// 过滤掉favicon的请求,不然log里面会有这个url
if(pathname !== '/favicon.ico'){
curURL = `http://${hostname}:${port}${req.url}`
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.writeHead(200, { 'Content-Type': 'application/json' });
console.log(readText('./user.json'))
res.end(readText('./user.json'))
getLog()
}
}); // 打印日志模块
function getLog () {
let options = {
encoding: 'utf-8',
flags: 'w'
}
// 判断文件是否存在
if (fs.existsSync('./Log.log')) {
options.flags = 'r'
} const output = fs.createWriteStream('./Log.log', options);
const errorOutput = fs.createWriteStream('./Log.log',options);
const logger = new Console({ stdout: output, stderr: errorOutput });
// 获取当前的时间
let curDate = getCurrentDate ()
let logs = `[${curDate}]=====URL路径:${curURL}\n`
console.log(logs)
// 将新的内容写入日志,并且不删除原来的
fs.appendFile('./Log.log',logs,'utf8',function(err, ret) {
if(err) {
throw err
}
})
logger.log(logs);
} server.listen(port, hostname, () => {
console.log(`服务运行在 http://${hostname}:${port}/`);
});
user.json 文件
1 {
"name": "白晶晶(醉盏)",
"attr": "这是一个很懒的小仙女",
"server": "Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效"
}

打印结果:

网页输入地址:http://localhost:8080

node.js启动服务,不依赖第三方的更多相关文章

  1. Node.js启动服务报错SyntaxError: Unexpected token import

    启动服务报错如下: Last login: Wed Nov :: on ttys000 localhost:~ sipeng$ cd /Users/sipeng/Desktop/彭思/2017年学习/ ...

  2. 个推Node.js 微服务实践:基于容器的一站式命令行工具链

    作者:个推Node.js 开发工程师 之诺 背景与摘要 由于工程数量的快速增长,个推在实践基于 Node.js 的微服务开发的过程中,遇到了如下问题: 1. 每次新建项目都需要安装一次依赖,这些依赖之 ...

  3. 利用OpenShift托管Node.js Web服务进行微信公众号开发

    最近写了一个微信的翻译机器人.用户只要关注该公众号,发送英文的消息,就能收到中文翻译的回复.有兴趣的读者可以扫描下面的二维码关注该公众号,尝试发送英文单词试试看.(有时候第一次发送单词会收到“该公众号 ...

  4. node.js启动调试方式

    node.js启动调试方式(nodeJs不能像js一样在控制台调试) 以express项目为例,启动路径是localhost:3000 一.通过node命令启动 node server/bin/www ...

  5. 用node.js启动mock.js

    Node.js Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP.Python.Perl.Ruby 等服务端语言平起平坐的脚本语言.官网下载n ...

  6. node安装启动服务

    一.下载安装包: node下载地址:https://nodejs.org/en/download/,根据自己电脑的配置下载相应的windows64位安装包,下载完成后,进行安装.下面我用的8.9.0版 ...

  7. Serverless Web Function 实践教程(一):快速部署 Node.js Web 服务

    作为目前广受欢迎的 Web 服务开发语言,Node.js 提供了众多支持 HTTP 场景的相关功能,可以说是为 Web 构建而生.因此,基于 Node.js,也诞生了多种 Web 服务框架,它们对 N ...

  8. Node.js微服务实践(一)

    什么是微服务 微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成.系统中的各个微服务可被独立部署,各个微服务之间是松耦合的.每个微服务仅关注于完成一件任务并很好地完成该任务.在所有情况下 ...

  9. Node.js建立服务、路径处理与响应

    通过Node.js创建一个web服务器,要写的代码可能不是最少的,但是一定是最容易理解的. 用6行代码创建的web服务器 当在浏览器中访问http://127.0.0.1:1337会看到自定义的字样 ...

随机推荐

  1. JavaScript高程第三版笔记-函数表达式

    1⃣️递归 阶乘函数: function factorial(num){ ){ ; } ); } } 改装一:(arguments.callee指向正在执行的函数的指针,实现解耦) function ...

  2. Centos7桥接网络、DNS、时间同步配置

    Centos配置桥接网络.DNS服务和时间同步 1.配置桥接网络 2.配置虚拟机网卡,采用的是静态ip方式 重启network服务 3.配置dns 4.关闭防火墙和selinux 5.ping外网域名 ...

  3. Win7主题存放路径详解

    WIN7用户主题--- 自定义主题  首先当然是用户自定义的主题文件夹,这个文件夹一般是存放在下面这个路径(注意那个用户名改成你自己的登陆名喔,比如 administrator) C:\Users\用 ...

  4. c++ string详解 assign

    assign方法可以理解为先将原字符串清空,然后赋予新的值作替换. 返回类型为 string类型的引用.其常用的重载也有下列几种: a. string& assign ( const stri ...

  5. Jira和confluence备份

    参考: https://www.cnblogs.com/kevingrace/p/8862531.html JIRA备份和还原:  #Jira默认会打开自动备份的功能,备份路径为: /data/atl ...

  6. Linux学习笔记(15)Linux字符集(locale,LANG,LC_ALL)

    关键词:linux系统修改编码,linux字符集问题, 目录  零.什么是locale 一.locale的详细内容 二.理解locale的设置 三 具体设定locale的方法(zh_CN.UTF-8. ...

  7. windows10 AppStore安装 应用商店重新安装

    点击左下角的搜索按钮,如下图所示   输入powershell,在结果中找到widows powershell应用,如下图所示   右键单击widows powershell应用,选择以管理员运行,如 ...

  8. Oracle临时表的功能与应用

    什么是临时表,用户做一个操作查询出几百几千条数据,我们可以把数据放在内存中.当有很多用户都这样做,内存空间不足,这个时候就需要把数据保存在磁盘上.对于 oracle 就提供了一种临时表用于存放这些数据 ...

  9. mapreduce运行的bug收录

    在8088端口可以看到日志文件(主要看error),操作如下: 1.window jdk版本最好和linux jdk 版本一致,不然容易出现莫名奇妙的bug 之前出现一个bug: Unsupporte ...

  10. Spring Boot 五种热部署方式,极速开发就是生产力!

    1.模板热部署 在 Spring Boot 中,模板引擎的页面默认是开启缓存的,如果修改了页面的内容,则刷新页面是得不到修改后的页面的,因此我们可以在application.properties中关闭 ...