js运行在服务器
node -v 看版本
let http = require("http");
let server = http.createServer(function(req, res){
res.end("hello");
});
server.listen(3000);
node js文件运行该文件,作为服务器占用3000端口
end只执行一次,里面可以写html标签
write(String) 可以执行多次,他后面必须有end方法,也可以写标签
读取模块
let http = require("http");
var fs=require("fs");
let server = http.createServer(function(req, res){
res.setHeader("Content-Type", "text/html;charset=UTF8");
fs.readFile("./cece.txt",function(err, data){
res.end(data);
})
});
server.listen(3000);
if (req.url="/?/?"){
顶层路由,根据请求的url路径来指定返回的内容
res.end(data);
}
顶层路由的问题,请求的路径和实际物理路径不匹配,导致每一个文件都要单独配置
nodejs没window所以有作用域隔离
通过
01.js
let two=require("./02.js");
console.log(two.number)
02.js
let a=100;
exports.number=a;
来访问
构造函数
01.js
function Person(name,age){
this.name = name;
this.age = age;
}
module.exports = Person;
02.js
let person=require("./02.js");
let xiaomign=new person("xiaoming",12);
console.log(xiaomign.name)
require引入文件,不加./引入的node_modules中的文件
用法
npm init 初始化给自己做一个身份证
以后只用在package.json目录下npm install就可以检索内部依赖进行安装
当然,安装要加--save
淘宝镜像
npm install -g cnpm --registry=https://registry.npmmirror.com //cnmp下载
express
npm install --save express
let express = require("express");
let app = new express();
app.get('/', function(req, res){
res.send("Hello, world!");
});
app.listen(3000)
原生路径不允许挂参数
冒号就是通配,可以通过params得到参数
匹配成功路径默认不会走其他的中间件,用next()方法可以方法可以放行。send同等于end,直接返回
express的jsonp封裝
res.send(`jsp({name:"xaioming",age:12})`) 原版,模板字符串
靜态化
app.use("pub",express.static("public"));
將public文件当做根路径,请求地址localhost:300/pub/?
?是public文件夹里面的文件,第一个pub参数可以不写
最主要的是请求文件,比如图片等不会再当成路径去解析
restful
非restful通过url地址来区分,restful风格路由通过请求方式区分
node没静态化的话,统一使用绝对路径
let fs = require("fs");
let path = require("path");
fs.readFile(path.resolve(__dirname,"./other/cece.txt"),function(err,data){
console.log(data.toString());
});
用path模块合并路径
MongoDB
非关系型数据库(不限制数据类型)
数据库,集合,文档
show dbs //查看所有的数据库
show collections //查看所有的集合
use ?? 创建并使用数据库
db.集合.insert(数据) //创建集合并插入数据
db.student.find(); //查找所有student集合的数据
db.student.find({age:{$gt:10}}); //查找相关数据
db.student.find($or:[{},{}])
db.dropDatabase();
cmd两个窗口,一个mopngoed,另一个mongo,然后use库,最后调函数删除,idea删除不了
mongoose
以面向对象的方式操作数据库
let mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/students"); 最后一个数据库名称,可以不存在
var Schema = mongoose.Schema;
var stuSchema = new Schema({ 创建schema类型的约束
name:String,
age:Number,
address:{
type:String,
default:"this"
}
});
var stuModel = mongoose.model("students",stuSchema); 传入集合名称和schema约束
stuModel.create({
name:"xiaoming",
age:12,
address:"shandong"
},function (err) {
if (err){
console.error("falses")
}
})
查询
stuModel.find({name:"xiaoming"},function (err,docs) { //返回数组
alert(docs[0].name);
});
stuModel.findone({name:"xiaoming"},function (err,doc){ //返回对象
alert(doc.name);
})
修改
stuModel.updateOne({name:"xiaoming"},{$set:{age:20}},
function (err,doc) {
});
stuModel.updateMany({name:"xiaoming"}
,{$set:{name:"xiaozhang"}},function (err,docs){
console.log(docs[0])
})
删除
stuModel.deleteOne({name:"xiaoming"},function (err,doc) {
});
stuModel.deleteMany({name:"xiaozhang"},function (err,docs){
})
Echart
基于js的图标库