本篇博客记录了《Node.js 从零开发web server博客项目》的原生开发系列内容。

开篇主要介绍原生项目的搭建,以及初步的项目结构设计。

一、项目初始化

新建项目目录,并进入到项目目录中,使用命令npm init初始化项目,期间会让你配置项目名称,版本,作者等信息。结束之后生成package.json文件。

{"name": "blog-1","version": "1.0.0","description": "","main": "bin/www.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1","dev": "cross-env NODE_ENV=dev nodemon ./bin/www"},"author": "","license": "ISC","dependencies": {"cross-env": "^7.0.2","nodemon": "^2.0.3"}
}

其中main表示的是项目的入口文件,我们改成了bin/www.js,需要建立相应的文件夹与入口文件。

scripts是可执行的命令,包括编译执行、测试等命令的编写。

dependencies主要管理一些依赖的npm包等内容。

二、根据功能模块划分文件夹

入口文件为bin/www.js,主要负责项目的启动,创建http server端的监听以及请求分发、返回结果等。

src为源码,主要按照功能模块划分文件夹,我们根据接口进行划分,一开始不关注功能的具体实现,我们根据接口划分不同的路由文件。

目前为止,我们的目录结构如下:

三、入口文件、请求处理与返回及路由文件的编写

首先是入口文件www.js的编写。其主要职责是创建http server,并且监听指定的端口。

const http = require('http');
const serverHandler = require('../app');const server = http.createServer(serverHandler);
const port = 8000;
server.listen(port);

整体代码相对简单,职责单一,对请求的处理和返回则放在了app.js中。


const userRouterHandler = require('./src/router/user.router');
const blogRouterHandler = require('./src/router/blog.router');
const serverHandler = (req, res) => {res.setHeader('Content-type','application/json');const userLogin = userRouterHandler(req, res);if(userLogin){res.end(JSON.stringify(userLogin));return;}const blogData = blogRouterHandler(req, res);if(blogData){res.end(JSON.stringify(blogData));return;}res.writeHead(404, {"Content-type":"text/plain"});res.write("404 Not Found");res.end();}
module.exports = serverHandler;

app.js中主要是处理请求和内容返回,其中res.setHeader('Content-type','application/json');设置了返回内容是JSON格式,注意虽然返回的内容是json格式,但还是需要把返回的json转成json字符串再返回。

路由文件将具体处理每个接口,并返回结果。

const userRouterHandler = (req,res) => {const method = req.method;const url = req.url;const path = url.split('?')[1];if(method==="POST" && path === "/api/user/login"){return {msg: "登录接口"}}}module.exports = userRouterHandler;

以用户登录的接口为例,用户模块的路由需要判断请求的方法,以及path,请求的路径,即接口路径。然后根据路径匹配,处理不同的逻辑,并返回结果。

四、开发中实用的依赖

本项目中,截止目前为止使用了cross-env依赖,使用该依赖,我们可以设置环境变量,如开发环境设置如下

"dev": "cross-env NODE_ENV=dev nodemon ./bin/www"

该执行脚本设置了node环境变量为dev。使用时执行如下脚本:

process.env.NODE_ENV获取。

第二个使用的依赖是nodemon,引入这个依赖在我们开发过程中帮助很大,能监控文件是否发生变化,一旦发生变化将会自动编译。

使用如下

nodemon ./bin/www。

到目前为止,我们的代码已经能够处理不同的接口,并返回响应的内容。

Node.js 从零开发web server博客项目--项目初始化相关推荐

  1. Node.js从零开发Web Server博客项目笔记

    代码运行流程 首先开启服务器,在npm run dev的时候运行了bin目录下的www.js文件,启动http服务 当前端进行访问的时候,经过app.js文件 App.js是整个项目的入口文件,首先判 ...

  2. PHP系统开发/Web文章博客

    PHP前后端交互 | web文章博客 前言 环境部署 一.登录 二.注册 三.主页 四.详情 五.编辑 六.删除 七.注销 八.发表 全部文件 总结 前言 一.项目需求: 做个基础的页面,文章博客we ...

  3. 图解基于 Node.js 实现前后端分离 - CSDN博客

    因为会上出了个意外,ppt图片全部丢失,只好对着白板跟大家交流了半个多小时.由于我做演讲不喜欢写太多的文字,没有图片的情况下讲漏了一些内容.这篇文章是我在会上分享内容对照ppt进行地整理. 基本介绍 ...

  4. 【做项目】基于SpringBoot从零开发的个人博客 —— 从技术选型到部署实战(附学习路线)

    文章目录 一.前言 1.1 背景介绍 1.2 寻找开源项目 1.3 技术选型 二.正式开发 2.1 看懂项目并模仿 2.2 正式动手敲之前,内化成自己的项目,对其设计并架构 2.3 动手编写 三.博客 ...

  5. 微信小程序云开发之新闻博客社区项目debug后的项目代码

    大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页:lqj_本人的博客_CSDN博客-微信小程序,html特效,vue2基础领域博主 本次文章主要时为我最近在哔哩哔哩上的新发布的视频做一个 ...

  6. 深入浅出Node.js游戏服务器开发--分布式聊天服务器搭建

    From: http://www.infoq.com/cn/articles/game-server-development-2?utm_source=infoq&utm_medium=rel ...

  7. Node.js之十大Web框架

    Node.js之十大Web框架 之前接触过Node.js是因为好奇大前端越来越能干了,连我后台的饭碗都要抢了,太嚣张了,于是我想打压打压它,然后就这样接触它了. 再到后来是因为Settings-Syn ...

  8. 自制chatroom_构建由Node.js驱动的Chatroom Web App:入门

    自制chatroom 本文是Microsoft的Web开发技术系列的一部分. 感谢您支持使SitePoint成为可能的合作伙伴. 这个Node.js教程系列将帮助您构建完全部署在云中的由Node.js ...

  9. Node.js和NoSQL开发比特币加密货币应用程序(下)

    在使用Node.js和NoSQL开发比特币加密货币应用程序(上)中,我们创建了HD钱包,它可以为给定的种子生成无限量的密钥,每个密钥代表一个用户钱包.我们将根据主种子创建每个包含钱包的用户帐户.下面我 ...

最新文章

  1. Redis的数据类型以及每种数据类型的使用场景
  2. java基本数据类型 以及 double float 二进制表示方法
  3. Aggregate functions cannot be used in the select right after the flatAggregate
  4. 前端学习(2087):v-on得修饰符使用案例
  5. python数据结构-树
  6. linux java php_Linux PHP 搭建 JavaBridge
  7. 快来,这里不仅有帅哥,还有美女!!
  8. Linux硬件硬盘分区知识-总结
  9. DirectX 9.0c游戏开发手记之RPG编程自学日志之17: Drawing with DirectX Graphics (用DirectX图形绘图)(第13节)
  10. 皮克定理 poj2954
  11. 改行当和尚 难于上青天
  12. php--api发送钉钉消息
  13. jsp 页面进行debug 断点找错误
  14. 与网友“阵春风”交流
  15. 计算机word求积公式,Word表格使用函数公式 加减乘除 求和,求积,求平均值的图文教程...
  16. 教资初级中学计算机真题,初中信息技术教资面试真题:VB程序设计语言的操作环境...
  17. CSS 制作烟雾效果文字
  18. 【4】ubu1404绑定固定ip
  19. 操作系统安全-第一章-引言
  20. cnc数控机床怎么使用计算机,五个数控机床CNC加工中心的编程代码加工小技巧!...

热门文章

  1. 计算机学院档案馆教育部,我系本科生团队参加全国高校档案学专业大学生创新性课外科技作品展...
  2. 【数据库】数据库管理系统(Database Management Systems)
  3. 加州大学伯克利分校与KyberNetwork联合进行去中心化交易所研究
  4. Qt geometry
  5. 董明珠500亿造芯片开始行动,踏上了光荣的荆棘路。
  6. 【异常检测第一篇】DeepLog: Anomaly Detection and Diagnosis from System Logs through Deep Learning
  7. 机器学习-40-GAN-07-Feature Extraction(InfoGAN,VAE-GAN,BiGAN,Feature Disentangle(Voice Conversion))
  8. 2021-2027全球与中国家庭影院AV接收器市场现状及未来发展趋势
  9. 关于Cisco路由器配置DHCP全面详解
  10. JAVA知识点-适合自学、面试