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下载
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,直接返回
res.send(`jsp({name:"xaioming",age:12})`) 原版,模板字符串
app.use("pub",express.static("public"));
將public文件当做根路径,请求地址localhost:300/pub/?
?是public文件夹里面的文件,第一个pub参数可以不写
最主要的是请求文件,比如图片等不会再当成路径去解析
非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模块合并路径
非关系型数据库(不限制数据类型)
数据库,集合,文档
show dbs //查看所有的数据库
show collections //查看所有的集合
use ?? 创建并使用数据库
db.集合.insert(数据) //创建集合并插入数据
db.student.find(); //查找所有student集合的数据
db.student.find({age:{$gt:10}}); //查找相关数据
db.student.find($or:[{},{}])
cmd两个窗口,一个mopngoed,另一个mongo,然后use库,最后调函数删除,idea删除不了
以面向对象的方式操作数据库
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){ })
基于js的图标库