- 从0开始搭建,不使用任何框架
- 使用
nodemon
检测文件变化,自动重启node - 使用
cross-env
设置环境变量,此工具兼容mac、linux、windows
1、搭建环境
-
线下开发数据库连接线下数据库,到线上后连接线上正式的数据库 (数据库通过检测
env:process.env.NODE_ENV
的变化来修改配置) -
线下环境的日志直接打印到控制台中,上线后的日志需要记录到文件中,也需要一个标识
-
redis 也是一样
为什么项目里要把www.js 和 app.js两个文件拆分开?
- 目的是为了做一个抽离
- app.js里主要是为了业务提供服务,放一些业务代码,比如做一些设置,设置返回格式、获取cookie、获取postData、解析postData、解析url 和query ,是一些项目底层的业务代码
- www.js 里全是和server技术有关系的
项目中把不同的功能、不同的场景拆分开去做不同的引用,是模块化的落地使用
2、 开发接口 – 初始化路由
- 初始化路由:使用路由来实现接口
- 返回假数据:将路由和数据处理 分离,以符合设计原则
上图中可见,接口分为两个类型:/api/blog
blog类型 和/api/user
user类型
新建项目blog1,新建文件夹src,新建文件夹router,新建文件blog.js 和 user.js
// router/blog.js
const queryString = require('queryString');
const handleBlogRouter = (req,res) => {
const method = req.method;
const url = req.url;
const path = url.split('?')[0];
cosnt query = queryString.parse(url.split('?')[1]);
//获取博客列表
if(method ==='GET' && path === '/api/blog/list'){
return {
msg:'这是获取博客列表的接口'}
}
//获取博客详情
if(method ==='GET' && path === '/api/blog/detail'){
return {
msg:'这是获取博客详情的接口'}
}
//新建博客
if(method ==='POST' && path === '/api/blog/new'){
return {
msg:'这是新建博客的接口'}
}
//更新博客
if(method ==='POST' && path === '/api/blog/updata'){
return {
msg:'这是更新博客的接口'}
}
//删除博客
if(method ==='POST' && path === '/api/blog/delete'){
return {
msg:'这是删除博客的接口'}
//返回一个文字,先调通接口
}
}
module.exports = handleBlogRouter ; //导出这个函数
//app.js
const handleBlogRouter = require('./src/router/blog') //引入接口--blog的路由处理放在单独的文件中,这里只需要得到处理结果的返回就可以了
//这样代码结构更简单
const serverHandle = (req, res) => {
// 设置返回格式 JSON
res.setHeader('Content-type', 'application/json')
con