这次开发的是新闻管理系统,因为这是实训作业,时间仓促很多功能并没有完善,但是两周的实训还是学会不少东西的,感觉有必要先整理一下这些知识。先附上GitHub地址,这里是整个项目的地址,后面有时间还需要再继续完善。
一、运行nodejs
先配置好node和npm,网上教程很多,这里就不说了,在cmd中运行node -v和npm -v如果分别跳出node和npm版本号,就证明已经配置好了。
- 先新建一个文件夹,随便起个名字,在该文件目录下输入
npm init -y
后面更的-y是使用默认配置,如果需要自己配置一些属性,把-y去掉然后按照命令行出来的提示输入信息即可。初始化完成后会出现一个package.json文件,内容如下
{
"name": "my-test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
name的值就是文件夹的名字,main的值是node运行的主文件,这里默认是index.js,当项目开始debug的时候会先从main对应的js文件开始,那么就新建一个index.js 这里先附上我的index.js代码
const http = require("http");
const querystring = require("querystring")
const server = http.createServer((req, res) =>{
const method = req.method;
const url = req.url;
const path = url.split("?")[0];
const query = querystring.parse(url.split("?")[0]);
//返回格式为json
res.setHeader('Content-type','application/json');
//返回的数据
const resData = {
method,
url,
path,
query
}
//返回
if(method === "GET"){
res.end(
JSON.stringify(resData)
)
}
if(method ==="POST"){
let postDate = '';
req.on('data', chunk => {
postDate +=chunk.toString();
})
req.on('end', () => {
resData.postDate = postDate;
res.end(
JSON.stringify(resData)
)
})
}
})
server.listen(3000, () => {
console.log("3000 pro");
})
首先导入http,querystring,http是必须导入的服务文件,querystring是用来解析url的 之后调用http的方法createServer创建一个服务
const server = http.createServer((req, res) =>{
}
这里有两个参数req和res。req是客户端向服务端发送的一些数据,服务端可以通过res来向客户端返回一些数据;
server.listen(3000, () => {
console.log("3000 pro");
})
最后用通过3000端口来发布服务;
这时侯命令行中输入
node index.js

const method = req.method;
const url = req.url;
const path = url.split("?")[0];
const query = querystring.parse(url.split("?")[0]);
//返回格式为json
res.setHeader('Content-type','application/json');
//返回的数据
const resData = {
method,
url,
path,
query
}
//返回
if(method === "GET"){
res.end(
JSON.stringify(resData)
)
}
因为通过路由来传递的都是get请求,服务端通过url中的参数来进行一些关于数据库的操作,这里不连接数据库,就先返回处理后的url上述代码放入createServer中,然后再本地输入http://localhost:3000/api?id=1,就可以看如下页面了

还要post请求,不能通过url来传递,如果要测试的话可以下载一个postman,一个很方便的谷歌插件
if(method ==="POST"){
let postDate = '';
req.on('data', chunk => {
postDate +=chunk.toString();
})
req.on('end', () => {
resData.postDate = postDate;
res.end(
JSON.stringify(resData)
)
})
}
这里相比get请求多了个chunk,他的用处就是让通过post闯过来的数据变成想水流一个,一点一点的传递过来,因为有时候post请求的数据量会比较打,这样可以保证serve端的流畅性。
- 有了这些基础,前端就可以通过Ajax请求来接收到这些数据了,当然现在肯定还不行,因为会有跨域的问题,如果在react或者vue中,这个接口暂时还是用不了的,等处理了跨域的问题才能时候,在之后的总结中我会说到
二、连接MySQL
- 可能很多人会使用mongodb,开发起来非常方便,但其实MySQL也不麻烦,这个项目里用到的是MySQL数据库 先下载依赖库mysql,在命令行中输入
npm install mysql
先附上代码
const mysql = require('mysql');
const con = mysql.createConnection({
host: "localhost",//服务地址
user: "root",//mysql用户名
password: "7777",//mysql的密码
port: "3306",//mysql的端口号,默认是3306
database: "news"// 连接的数据库名称
})
con.connect()
const sql = "select * from users"
con.query(sql, (err, result) => {
if (err) {
console.log(err);
return
}
console.log(result)
})
con.end()
mysql.createConnection里面的是mysql的一些配置,具体信息写在注释里了
如下图为创建的数据库

node index.js
