安装好node.js(傻瓜式安装 14. x)
cmd 输入 node -v 有版本号,安装成功
-
桌面上新建一个文件夹 node_server_demo
-
终端 cd 到 新建的文件夹中
-
通过 npm init 指令, 将 普通文件夹 node_server_demo,
做成 项目文件夹, 此时 会在文件夹中生成一个
package.json 文件 -
将 改文件夹 拖拽到 vs code中, 打开, 开始写代码
-
在文件夹 node_server_demo 中新建 index.js 文件
-
在 index.js 文件中 , 开始写 服务器代码
题外话: npm 市场, 镜像 是国外, 所有有点慢
我们需要另外一个指令: cnpm
进行 是 过内容
cnpm安装办法: 百度 https://www.cnblogs.com/liaojie970/p/9296177.html
-
安装 服务器模块 koa
cnpm install koa --save
–save: 安装模块的同时, 是否将模块的依赖关系保存到
package.json文件中 -
用 koa 来搭建服务器
在 node_modules 模块文件夹中, 找到 koa
查看 koa 模块的 readme 文件, 里面有 代码说明 -
代码 写完之后 , 运行项目:
node index.js --------完事, 服务器成功了停止服务器的快捷键: ctr + C
尽量在服务器代码中, 增加一个打印, 告诉用户, 服务器跑起来了。。。
https://nodejs.org/en/
下载node
让服务器具有 路由功能
-
安装 koa-router 路由模块
cnpm install koa-router --save -
抄代码
不在 readme 中,
在 koa-router / lib / router.js 文件中
对 抄过来的代码进行简单的修改
重要的:
const Router = require(’@koa/router’);
需要修改成下面的引入方式
const Router = require(‘koa-router’);
不同路由接口的示例代码:router.get('/abc', (ctx, next) => { ctx.body = "服务器 的abc界面" });
-
停止服务器 , 重新运行
让服务器具有 静态资源访问能力
- 安装 koa-static 模块
cnpm install koa-static --save - readme 抄代码
const serve = require(‘koa-static’);
// __dirname: 整个项目的根路径
app.use(serve(__dirname + ‘/static’)); - 停止服务器 , 重新运行
http://localhost:3000/111.txt
让服务器 具有 文件上传能力
- 安装 koa-body 模块
cnpm install koa-body --save - readme 抄代码
const koaBody = require(‘koa-body’);
app.use(koaBody({
multipart: true,
formidable: {
maxFieldsSize: 1024 * 1024 * 10
}
})); - 准备一个网页界面, 写出 文件上传的功能
const fs = require(‘fs’);
-
服务器 提供 文件上传的接口 /upload
router.post(’/upload’, (ctx, next) => {
var xxx = ctx.request.filesvar file_path = xxx.sx.path var r = fs.createReadStream(file_path) var w = fs.createWriteStream("./static/diao.jpg") r.pipe(w) ctx.body = "9999999"
});
-
服务器 完成接收到的上传的文件, 并执行 保存功能
-
停止服务器 , 重新运行
异步请求ajax
<script type="text/javascript">
//query查找 根据class或者id进行锁定元素
var btn = document.querySelector(".btn");
btn.onclick =function(){
var req = new XMLHttpRequest();
req.open("get", "http://localhost:3000/test" , true)
req.send()
req.onreadystatechange = function(){
if(req.readyState == 4 &&req.status==200){
//这一步忘记了,打印在控制台
console.log(req.responseText)
}
}
}
</script>
加请求头的异步请求:
用到了跨域,承诺,nodejs的异步
contact request = ‘request’ ;
router.get('/abc', async(ctx, next) => {
var kuwo = "http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?key=%E5%91%A8%E6%9D%B0%E4%BC%A6&pn=1&rn=30&httpsStatus=1&reqId=c7d7dbd1-e09a-11eb-a771-8544d2baeb57"
var tou = {
"Cookie": "_ga=GA1.2.961517434.1625790913; _gid=GA1.2.2055520088.1625790913; Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1625790913,1625792490,1625824054; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1625824054; _gat=1; kw_token=XYIZCHNKQST",
"csrf": "XYIZCHNKQST",
"Host": "www.kuwo.cn",
"Referer": "http://www.kuwo.cn/search/list?key=%E5%91%A8%E6%9D%B0%E4%BC%A6",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
var a = new Promise(function(aaa, bbb) {
request.get({
url: kuwo,
headers: tou
},
function(err, res, body) {
if (err) {
bbb(err)
} else {
aaa(body)
}
})
})
ctx.body = await a
});