Nodejs基础
(1).安装nodejs文件
(2)用nodejs运行js文件
(3)nodejs读写文件
(4)nodejs模块系统
(5)npm
1.设置淘宝镜像
2.初始化package.json
3.安装模块
(一)安装nodejs
1.下载nodejs
2.下载双击安装,然后一路next即可
3.打开cmd或者powershell,输入node-v出现版本号表示成功了
(二)用nodejs读写文件
编写一个demo.js文件,随便输出信息,然后再vscode控制台,输入node demo试试.要注意文件路径是对的
(三)、nodejs读写文件
//require加载一个模块,写文件
var fs=require('fs');
var list=[
{
username: "葛乐",
age : "18"
}
]
fs.writeFileSync('./demo.json',JSON.stringify(list));
//读
var fs=require('fs');
var cc=fs.readFileSync('./demo.json');
console.log(cc.toString());
nodejs模块系统
一个js文件,再nodejs眼里就是一个模块,nodejs模块系统可以让我们在一个js文件去使用另外一个js里的变量和方法
//demo.js代码
var list=[{"username":"葛乐","age":"18"}]
module.exports={
list : list
}
//index.js
//我可以访问别的页面中的数据
var fs=require('./demo.js');
console.log(fs.list);
npm
npm是用来管理nodejs模块的工具,我们做好的模块还可以上传到网站,让全世界的人一起使用,https://www.npmjs.com/是一个存放nodejs模块的网站,全世界的人都可以把自己的模块上传到网站,也可以从这个网站去下载别人的nodejs模块
(1).设置淘宝镜像
npm config set registry https://registry.npm.taobao.org
(2).初始化package.json
package.json用来记录node.js模块的安装情况
npm init
或者
npm init -y
(3)安装模块
运行下面的命令行后,当前会创建一个node_modules文件夹用来存放安装的node模块
npm i axios 或者 npm i anios --save //生产依赖
npm i jquery --sava-dev //开发依赖
npm i nodemon -g //全局安装
npm i //把node_modules删除后,运行此命令,就能把package.json记录的模块全部安装
nodejs框架
框架介绍:
1.Express框架
2.koa框架,完全支持es6
3.egg.js框架 阿里开源
4.hapi 沃尔玛开源
5.nestjs框架,完全支持ts
(一)koa服务器值hello wrold
初始化package.json
新建目录koademo并用vscode打开 ,执行 npm init -y
创建一个简单的koa应用(hello world)
安装koa模块 npm install koa --save // 有些电脑需要安装指定版本 npm i koa@2.12 在项目根目录新建app.js,app.js代码如下
const Koa=require('koa');
const app=new Koa();
app.use(function(ctx){
ctx.body='Hello World';
})
app.listen(3000,function(){
console.log('服务器已连接');
})
执行node app.js
用浏览器访问 http://localhost:3000
(二)koa服务器的完整版
1.新建server文件夹, 执行npm init -y
2.添加下面几个文件package.json, app.js, router.js
3.执行 npm i
4.运行 nodemon app 获取 npm run dev
npm i nodemon -g // 使用nodemon app代替node app, 好处是修改了代码不用重启服务器
5.使用浏览器打开 http://localhost:8888
package.json 代码
{
"name": "server",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"dev": "nodemon app.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"koa": "2.12",
"koa-body": "4.2.0",
"koa-router": "10.0.0",
"mockjs": "1.1.0"
},
"devDependencies": {
"koa-static": "5.0.0"
}
}
app.js代码
var Koa = require("koa");
var app = new Koa();
// 设置静态资源目录
var koaStatic = require("koa-static");
app.use(koaStatic(__dirname + "/public"));
// 用来获取post请求参数
var koaBody = require("koa-body");
app.use(koaBody());
// 跨域设置
app.use(function (ctx,next) {
ctx.set("Access-Control-Allow-Origin", "*");
ctx.set("Access-Control-Allow-Methods", "PUT, POST, GET, DELETE, OPTIONS");
// 请求头设置
ctx.set(
"Access-Control-Allow-Headers",
`Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild,x-token,sessionToken,token`
);
if (ctx.method == "OPTIONS") {
ctx.body = 200;
} else {
next();
}
});
// 添加路由
var router = require("./router");
app.use(router.routes());
app.listen(8888, function () {
console.log("服务已启动, 在http://localhost:8888");
});
router.js代码
// 1.导入koa-router
var Router = require("koa-router");
// 2.创建一个router对象
var router = new Router();
router.all('/',function(ctx) {
ctx.body = `<h3>用户管理小项目接口列表</h3>
<ul>
<li>
<a target="_self" href="/list">用户列表</a>
</li>
<li>
<a target="_self" href="/detail">用户详情</a>
</li>
<li>
<a target="_self" href="/add">增加用户</a>
</li>
<li>
<a target="_self" href="/edit">修改用户</a>
</li>
</ul>`;
})
// 列表接口
router.all("/list", function (ctx) {
ctx.body = '列表';
});
router.all("/add", function (ctx) {
ctx.body = '增加';
});
// 详情接口
router.all("/detail", function (ctx) {
ctx.body = '详情';
});
router.all("/edit", function (ctx) {
ctx.body = "修改";
});
// 删除接口
router.all("/del", function (ctx) {
ctx.body = '删除';
});
// 导出路由对象
module.exports = router;
(三)mockjs
mockjs用来模拟数据
var Mock = require('mockjs');
var name=Mock.Random.name();
var cname=Mock.Random.cname();
console.log(name);
console.log(cname);
常用方法
1. Random.boolean() 随机布尔值
2. Random.integer( min?, max? ) 随机整数min-max之间
3. Random.string( pool?, min?, max? ) 随机字符串
4. Random.date( format? ) 随机日期
5. Random.word( min?, max? ) 随机字母
6. Random.cparagraph( min?, max? ) 中文段落
7. Random.csentence( min?, max? ) 中文句子
8. Random.cword( pool?, min?, max? ) 汉字
9. Random.name( middle? ) 姓名
10. Random.cname() 中文姓名
11. Random.city( prefix? ) 市 (prefix是否带前缀省,值为boolean)
12. Random.county( true? ) 区县 (true是否带缀省,市)
// 生成多个
var Mock = require('mockjs');
var mock = Mock.mock;
function made(num) {
var list = [];
for(var i=0;i<num;i++) {
var obj = {
name: mock(/[a-z]{5}/),
age: mock(/2[0-9]/),
sex: mock(/[男女]/)
}
list.push(obj);
}
return list;
}
var list = made(5);
console.log(list);
// 写入到当前目录的users.json文件中
var fs = require('fs');
fs.writeFileSync('users.json',JSON.stringify(list));