Array.prototype.myslice=function() {
let start=0
let end = this.length
if(arguments.length===1) {
start=arguments[0]
}else if(arguments.length===2) {
start=arguments[0]
end=arguments[2]
}
let tmp=[]
for(let i=start;i<end;i++) {
tmp.push(this[i])
}
return tmp
}
let fakeArr={0:‘abc‘,1:"kris",2:"lisa",length:3};
let arr=[].myslice.call(fakeArr)
console.log(arr);
let http = require(‘http‘)
let server=http.createServer()
server.on(‘requset‘,function(req,res){
if(req.url===‘/‘) {
res.end("我是首页")
}
})
server.listen(3000,function() {console.log(‘server is running‘)})
// http.createServer(function(req,res) {}).listen(port,function() {})
let express = require(‘express‘)
let app = express()
// 静态资源
// 当第一个参数省略;/文件路径
// app.use(express.static(‘./public/‘))
// 访问:/public/文件路径
app.use(‘/public/‘,express.static(‘./public/‘))
// 访问:/xxx/文件路径
// app.use(‘/xxx/‘,express.static(‘./public/‘))
// 当服务器收到get请求/ 的时候,执行回调处理函数
app.get(‘/‘,function(req,res) {
res.send(‘hello express‘)
})
// 请求/about,执行回调函数
app.get(‘/about‘,function(req,res) {
res.send(‘我是about‘)
})
app.listen(3000,function() {
console.log(‘app is running http://127.0.0.1:3000/‘);
})
npm install --save art-template
npm install --save express-art-template
// 配置使用art-template:
// 1 使用:res.rend(‘xx.art‘,{模板数据})
// 2 注意:xx.art 就是html模板 (不能写路径,默认会去项目中的views目录找该模板文件)
// 3 如果想要修改默认的views目录为xxx目录:
// app.set(‘xxx‘,render函数的默认路径)
// app.engine(‘art‘, require(‘express-art-template‘));//art表示以.art结尾的文件
// res.render(‘404.art‘)
let express= require(‘express‘)
let app = express()
app.use(‘/public/‘,express.static(‘./public‘))
app.engine(‘html‘, require(‘express-art-template‘))
app.get(‘/‘,function(req,res) {
res.render(‘index.html‘)
})
app.listen(3000,function() {
console.log("app is running http://127.0.0.1:3000/");
})
let express = require(‘express‘)
let bodyParser = require(‘body-parser‘)
let app = express()
// 静态资源(开发public目录下的所有资源)
// 当第一个参数省略;/文件路径
app.use(‘/public/‘, express.static(‘./public/‘))
let comments = [{
name: ‘张三‘,
message: ‘今天天气不错!‘,
dateTime: ‘2015-10-16‘
},
{
name: ‘张三2‘,
message: ‘今天天气不错!‘,
dateTime: ‘2015-10-16‘
},
{
name: ‘张三3‘,
message: ‘今天天气不错!‘,
dateTime: ‘2015-10-16‘
},
{
name: ‘张三4‘,
message: ‘今天天气不错!‘,
dateTime: ‘2015-10-16‘
},
{
name: ‘张三5‘,
message: ‘今天天气不错!‘,
dateTime: ‘2015-10-16‘
}
]
//art表示以.art结尾的文件;html表示以.html文件结尾
// app.engine(‘art‘, require(‘express-art-template‘));
// res.render(‘404.art‘)
app.engine(‘html‘, require(‘express-art-template‘))
// 配置body-parser
app.use(bodyParser.urlencoded({extended: false}))
app.use(bodyParser.json())
app.get(‘/‘, function (req, res) {
res.render(‘index.html‘, {
comments
})
})
app.get(‘/post‘, function (req, res) {
res.render(‘post.html‘)
})
/*app.get(‘/pinglun‘, function (req, res) {
// req.query只能拿get请求参数
let comment = req.query
comment.dateTime = getDate();
comments.unshift(comment)
res.redirect(‘/‘)
})
*/
// 当以post请求 /post 的时候执行指定的处理函数
// 通过不同的请求方法,同一路径可以使用多次
app.post(‘/post‘, function (req, res) {
/*在express中获取post请求体数据?
(http://expressjs.com/en/resources/middleware/body-parser.html)
1 安装: npm install body-parser
2 引包:let bodyParser = require(‘body-parser‘)
3 配置 // 只要多次这个配置,则在req请求对象上就会多次一个属性:body
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
*/
let comment = req.body//通过req.body 获取请求参数
comment.dateTime = ‘2020-3-9‘;
comments.unshift(comment)
res.redirect(‘/‘)
})
app.listen(3000, function () {
console.log("app is running http://127.0.0.1:3000/");
})
let express = require(‘express‘)
let bodyParser = require(‘body-parser‘)
let app = express()
// 只要多次这个配置,则在req请求对象上就会多次一个属性:body
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
let express = require(‘express‘)
let router = express.Router()
router.get(‘/xxx‘, function (req, res) {})
module.exports=router
1 回调函数
2 定时器
3 事件监听
4 promise
5 async await
app.use(function(req,res) {
res.send(‘xxx‘)
})
* mongodb默认使用执行mongodb命令所处磁盘目录下的/data/db 作为自己的数据存储目录
* 所以在第一次执行该命令前先收到创建一个 /data/db
* 如果想要修改默认的数据存储目录: mongod --dbpath=数据存储目录路径
mongod
// 设计schema发布module
let mongoose = require(‘mongoose‘)
let Schema = mongoose.Schema
// 1、连接数据库
// 指定连接的数据库不需要存在,当插入第一条数据的时候会被自动创建
mongoose.connect(‘mongodb://localhost/test‘})
// mongoose.connect(‘mongodb://localhost/test‘,{useMongoClient:true})
// 2、设计集合结构(表结构)
// 约束的目的是为了保证数据的完整性,不要有脏数据
let userSchema = new Schema({
username:
type: String,
required: true //表示必须有这个数据
},
password: {
type: String,
required: true
},
email: {
type: String,
required: true //表示必须有这个数据
}
});
// 3、将文档结构发布为模型
// mongoose.model方法用来把一个架构发布为model
// 第一个参数,必须首字母大写的单数形式,mongoose会自动生成 小写复数 的集合名称
// 第二个参数:架构Schema
// 返回值:模型构造函数
let User = mongoose.model(‘User‘, userSchema)
// 4、使用构造函数对集合中的数据进行操作
let xjm = new User({
username: "xjm",
password: ‘12345‘,
email: "xjm.com"
})
/* ###### 增加数据 ###### */
// xjm.save((err, ret) => {
// if (err) {
// return console.log("保存失败");
// }
// console.log("保存成功");
// console.log(ret);
// })
/* ###### 查询数据 ###### */
/* ###### 查询全部数据 */
User.find((err, ret) => {
if (err) {
return console.log("查询失败");
}
console.log("查询成功");
console.log(ret);
})
/* ######按条件查询所有 */
// User.find({username:‘zs‘},(err, ret) => {
// if (err) {
// return console.log("查询zs失败");
// }
// console.log("查询zs成功");
// console.log(ret);
// })
/* ######按条件查询一个 */
// User.findOne({username:‘zs‘},(err, ret) => {
// if (err) {
// return console.log("查询zs失败");
// }
// console.log("查询zs成功");
// console.log(ret);
// })
/* ######查询第一个 */
// User.findOne((err, ret) => {
// if (err) {
// return console.log("查询one失败");
// }
// console.log("查询one成功");
// console.log(ret);
// })
/* ###### 删除数据 ######*/
/* ##### 根据条件删除所有*/
// User.remove({username:‘xjm‘},(err, ret) => {
// if (err) {
// return console.log("删除失败");
// }
// console.log("删除成功");
// console.log(ret);
// })
/* ###### 根据条件删除一个*/
// User.findOneAndRemove({username:‘xjm‘},(err, ret) => {
// if (err) {
// return console.log("删除失败");
// }
// console.log("删除成功");
// console.log(ret);
// })
/* ###### 根据id删除一个*/
// User.findByIdAndRemove("5e6796c24b7a312ef8669f50",(err, ret) => {
// if (err) {
// return console.log("删除失败");
// }
// console.log("删除成功");
// console.log(ret);
// })
/* ###### 更新数据 ######*/
/* ###### 根据指定条件更新所有 */
// User.update({name:"xjm"}, {
// password: "88888"
// }, (err, ret) => {
// if (err) {
// return console.log("更新失败");
// }
// console.log("更新成功");
// })
/* ###### 根据id更新一个 */
// User.findByIdAndUpdate(‘5e679da0d6ec08285cee6c06‘, {
// password: "88888"
// }, (err, ret) => {
// if (err) {
// return console.log("更新失败");
// }
// console.log("更新成功");
// })
/* ###### 根据指定条件更新一个 */
// User.findOneAndUpdate({name:"xjm"}, {
// password: "88888"
// }, (err, ret) => {
// if (err) {
// return console.log("更新失败");
// }
// console.log("更新成功");
// })
路径 | 方法 | get参数 | post参数 | 是否需要登录 | 备注 |
---|---|---|---|---|---|
/ | get | 渲染首页 | |||
/register | get | 渲染注册 | |||
/register | post | email,nickname,password | 处理注册 | ||
/login | get | 渲染登录 | |||
/login | post | email,password | 处理登录 | ||
/logout | get | 处理退出请求 |
let express= require(‘express‘)
let bodyParser= require(‘body-parser‘)
let app = express()
// 通过req.body来获取表单post的数据
app.use(bodyParser.urlencoded({extended:false}))
app.use(bodyParser.json())
原文:https://www.cnblogs.com/xiaojimeng/p/12821505.html