1.引入核心模块

2.服务器监听窗口

3.创建服务器对象

4.设置服务器监听窗口

寻找路径

 // 引入核心模块
const http = require('http') // 服务器监听窗口
const port =3000;
// const port =process.argv[2];
// console.log(process.argv)
// 创建服务器对象
const serve = http.createServer((req,res)=>{
let fileName=''; if(req.url==='/'){
fileName='/public/index.html'
}else{
fileName='/public'+req.url;
}
console.log(fileName);
res.end(fileName)
})
// 设置服务器监听窗口
serve.listen(port,()=>{
console.log(`serve runnint at http://localhost${port}`)
})

全局变量

以下几个变量虽然看起来是全局的,但其实并不是,它们仅存在于模块范围内。

  • require(),模块作用域中的全局方法,用于导入其他模块
  • module,表示当前模块
  • exports,module.exports属性的别名,用于导出模块成员
  • __dirname,表示当前文件所在的目录
  • __filename,表示当前文件的名称(名称前面具有完整的路径)

 // 引入核心模块
const http = require('http')
const path = require('path')
// 服务器监听窗口
const port =3000; // 创建服务器对象
const serve = http.createServer((req,res)=>{
let fileName=''; if(req.url==='/'){
fileName='/public/index.html'
}else{
fileName='/public'+req.url;
}
// console.log(fileName);
// 根目录 res.end(path.join(__dirname,fileName))
// res.end(__dirname+fileName)
})
// 设置服务器监听窗口
serve.listen(port,()=>{
console.log(`serve runnint at http://localhost${port}`)
})

读取文件

 // 引入核心模块
const http = require('http')
const path = require('path')
const fs = require('fs')
// 服务器监听窗口
const port =3000; // 创建服务器对象
const serve = http.createServer((req,res)=>{
let fileName=''; if(req.url==='/'){
fileName='/public/index.html'
}else{
fileName='/public'+req.url;
}
// console.log(fileName);
// 根目录 // res.end(path.join(__dirname,fileName))
// res.end(__dirname+fileName) // 读取文件
fs.readFile((__dirname+fileName), 'utf8',(err,data)=>{
// fs.readFile((__dirname+fileName),{encoding: 'utf8', flag: 'r'},(err,data)=>{
if(err){
res.statusCode=404;
res.statusMessage='not Found';
res.setHeader('content-Type','text/html;charset=utf-8')
res.end('这里什么都没有')
}else{
res.statusCode=200;
res.statusMessage='ok';
res.setHeader('content-Type','text/html;charset=utf-8')
res.end(data)
}
})
})
// 设置服务器监听窗口
serve.listen(port,()=>{
console.log(`serve runnint at http://localhost${port}`)
})

在package.json文件配置命令

当我们要执行的命令比较复杂时,可以将该命名配置到package.json文件中scripts字段中,并为该命令指定一个别名;

  "scripts": {
"serve": "node server.js"
},

上面的代码为 node server.js指定了一个别名serve,然后我们可以通过npm的子命令run去执行该命令:

npm run serve

如果命令的别为start,则执行时可以省略子命令run

 "scripts": {
"start": "node server.js",
},
npm start

nodejs编写后台的更多相关文章

  1. nodejs 编写(添加时间戳)命令行工具 timestamp

    Nodejs除了编写服务器端程序还可以编写命令行工具,如gulp.js就是Nodejs编写的. 接下来我们来实现一个添加时间戳的命令: $ timestamp action https://www.n ...

  2. 步步为营-73-asp.net的简单练习(根据美工提供静态页面,编写后台代码)

    说明:实际企业中开发分工是很明确,往往程序员根据美工提供的UI界面进行后台代码的编写. 1.1 原始HTML页面 1.2 使用aspx进行修改 这里使用到了三层架构 using System; usi ...

  3. Delphi编写后台监控软件

    Delphi编写后台监控软件         文章来源:Delphi程序员之家     后台监控软件,为了达到隐蔽监控的目的,应该满足正常运行时,不显示在任务栏上,在按Ctrl+Alt+Del出现的任 ...

  4. 【MEVN架构】mongodb+ express + vue + nodejs 搭建后台

    前端技术栈:vue2 + vuex + vue-router + webpack + ES6/7 + less + element-ui 服务端技术栈:nodejs + express + mongo ...

  5. forever让nodejs应用后台执行

    nodejs一般是当成一条用户命令执行的,当用户断开客户连接,运用也就停了,很烦人.如何让nodejs应用当成服务,在后台执行呢? 最简单的办法: $ nohup node app.js & ...

  6. nodejs 做后台的一个完整业务整理

    大家知道js现在不仅仅可以写前端界面而且可以写后端的业务了,这样js就可以写一个全栈的项目.这里介绍一个nodejs + express + mongodb + bootstap 的全栈项目. 1.安 ...

  7. nodeJs编写的简单服务器

    一.简单的nodeJs写的 http 服务器 1.先Hello world,创建最简单的 Node 服务器(server.js) var http = require("http" ...

  8. Nodejs以后台服务启动

    1: 从网上查找  LINUX中我们可以使用这种简单的方式让node.js在后台运行: nohup node your_app.js & 经多次实验一直没有成功   2:使用 forever ...

  9. [转]forever: 让nodejs应用后台执行

    在LINUX中我们可以使用这种简单的方式让node.js在后台运行: nohup node your_app.js & forever可以让我们做得更好,并且可以跨平台的在windows和Li ...

随机推荐

  1. mkdir()提示No such file or directory错误的解决方法

    转自:http://www.02405.com/program/php/1692.html 在php中使用mkdir()方法创建文件夹时报错:No such file or directory,出错代 ...

  2. 松软科技Web课堂:JavaScript Break 和 Continue

    break 语句“跳出”循环. continue 语句“跳过”循环中的一个迭代. Break 语句 在本教程稍早的章节中,您已见到了 break 语句.它被用于“跳出” switch 语句. brea ...

  3. iOS 13 presentViewController

    升级了iOS 13,发现代码中使用presentViewController的都变成了这样的,顶部留了一部分 查看present样式,iOS 13 默认自动适配,需要在present的时候,设置sty ...

  4. h5 Video打开本地摄像头和离开页面关闭摄像头

    <div> <video id="video" style="width=100%; height=100%; object-fit: fill&quo ...

  5. 「专题总结」LCT入门

    上次xuefeng说我的专题总结(初探插头dp)太不适合入门了,所以这次丢一些题解包以外的东西. 关键是我自己也不会...急需梳理一下思路... (让我口胡数据结构???顺便推广一下全世界最短的lct ...

  6. Cross-Site Scripting:Persistent 跨站点脚本:持久性

  7. Java之封装与访问权限控制(二)

    目录 Java之封装与访问权限控制(二) 包:库单元 import import static Java常用包 Java之封装与访问权限控制(二) 访问权限控制是具体实现的隐藏,是封装性的一部分体现. ...

  8. Prometheus学习系列(四)之Prometheus 配置说明

    前言 本文来自Prometheus官网手册 和 Prometheus简介 说明 Prometheus通过命令行和配置文件进行配置,命令行配置不能修改的系统参数(例如存储位置,要保留在磁盘和内存中的数据 ...

  9. C# List与Dictionary相互转换与高效查找

    TestModel类定义: public class TestModel{    public int Id { get; set; }    public string Name { get; se ...

  10. ES-索引操作

    参考: https://es.xiaoleilu.com/030_Data/05_Document.html <ELasticsearch in Action> 以下的操作在ES7.5版本 ...