1.Managing Packages with NPM
package.json
{
"author": "Gension Impact",
"description": "A project that does something awesome",
"keywords": [ "descriptive", "related", "freecodecamp" ],
"license": "MIT",
"version": "1.2.0",
"name": "fcc-learn-npm-package-json",
"dependencies": {
"express": "^4.14.0"
},
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"repository": {
"type": "git",
"url": "https://github.com/freeCodeCamp/boilerplate-npm.git"
}
}
2.Base Node and Express
myApp.js
const bodyParser = require('body-parser');
let express = require('express');
let app = express();
//使用body-parser中间件处理 URL 编码的数据
app.use(bodyParser.urlencoded({extended:false}));
//Body-Parser 设置:app.use(bodyParser.urlencoded({ extended: false }));
//可以处理 URL 编码的数据,
//但如果需要处理 JSON 格式的数据,可以添加以下代码:
app.use(bodyParser.json());
// 控制台打印 "Hello World"
console.log("Hello World");
// 中间件:记录每个请求的请求方法、路径和 IP 地址
app.use(function middleware(req, res, next) {
// 构造日志字符串格式:method path - ip
var string = req.method + " " + req.path + " - " + req.ip;
// 将日志字符串打印到控制台
console.log(string);
// 调用 next() 以继续执行下一个中间件或路由处理程序
next();
});
// 路由:处理根路径的 GET 请求,返回 index.html 文件
app.get("/", function(req, res) {
res.sendFile(__dirname + "/views/index.html");
});
// 将 /public 目录中的静态文件服务于 /public 路径
app.use("/public", express.static(__dirname + "/public"));
// 加载 dotenv 包以加载 .env 文件中的环境变量
require('dotenv').config();
// /json 路径的 GET 请求处理程序
app.get("/json", (req, res) => {
// 检查环境变量 MESSAGE_STYLE 是否为 'uppercase'
if (process.env.MESSAGE_STYLE === 'uppercase') {
// 如果是,将消息转换为大写
res.json({ message: "HELLO JSON" });
} else {
// 否则,返回原始消息
res.json({ message: "Hello json" });
}
});
// 使用中间件和处理程序链的路由
app.get('/now',
// 中间件函数:添加当前时间到请求对象的 `req.time` 键
function(req, res, next) {
req.time = new Date().toString(); // 获取当前时间
next(); // 继续执行下一个函数
},
// 最终处理程序:使用 JSON 响应返回时间
function(req, res) {
res.json({ time: req.time }); // 返回格式化的时间
}
);
//构建一个echo服务器 处理GET/:word/echo路径
app.get('/:word/echo',(req,res) =>{
//从请求参数中获取需要重复的单词
const word = req.params.word;
//以JOSO格式响应
res.json({
echo:word
});
});
app.route('/name')
.get((req, res) => {
//从查询字符串中获取first和last参数
const first = req.query.first;
const last = req.query.last;
//返回JSON响应
res.json({ name: `${first} ${last}`});
})
.post((req, res) => {
//从请求体中获取first和last参数
const { first, last } = req.body;
//返回JSON响应
res.json({ name: `${first} ${last}` });
});
module.exports = app;