首先,开放分析
大家好。大熊来了。昨天,因为有点私事,我没有写博客。今天我又出了一篇文章。这主要是关于编写一个记事本
应用程序。
我还
介绍了使用
连接的中间件和应用mondb。今天,我们结合这两个中间件编写了一个实例,不断改进和重构。
充分研究的目的。嗯,废话直接进入主题。
二、需求分析
(1)
用户注册、
登录功能(不涉及一个非常复杂的交互场景,注册将由用户决定是否)。
(2)用户登录成功,进入
笔记管理系统的后台(笔记模块的增删功能)。
(3)用户可以拥有简单的
权限(
管理员、注册用户)。
(4)
界面简单,主要是
学习。
三,
启动设计应用程序(第一部分)
(1)
设置了用户登录页面,代码如下所示:
复制代码代码如下所示:
只大熊记事本应用程序登录
{注释标题
边距:45px;
背景:# 6699cc;
字体大小:14px;
字体粗细:粗体;
颜色:# FFF;
字体:宋体;
身高:24px;
行高:24px;
}
{
颜色:# 336699;
字体:宋体;
字体大小:14px;
字体粗细:粗体;
}
只大熊记事本应用程序登录
用户名 uff1a
uff1a
密码 我要挂号。
效果图:
(2)设置用户注册页面,代码如下所示:
复制代码代码如下所示:
只大熊记事本应用程序注册
{注释标题
边距:45px;
背景:# ff3300;
字体大小:14px;
字体重量:大胆;
颜色:# FFF;
字体:宋体;
身高:24px;
行高:24px;
}
只大熊记事本应用程序注册
用户名 uff1a
uff1a密码
效果图:
(3)建立mondb连接代码,如下:
复制代码代码如下所示:
无功mondb =需要(mondb );
var =新mondb
服务器。服务器(localhost
auto_reconnect:真
});
变量conn =新mondb DB(BB。
安全:真
});
conn.open(
函数(误差,DB){
如果(
错误)抛出错误;
Console.info(mondb连接!;
});
出口= module.exports = Conn;
(4)建立模型实体类用户,如下所示:
复制代码代码如下所示:
变量conn =需要(, /康);
函数用户(用户){
this.name =用户{
名字};
this.password = {用户密码};
};
user.prototype.save =函数(回调){
var =;
conn.collection(用户
安全:真
}函数(错误,集合){
如果conn.close()返回(错误);
Collection.findOne({ / /用户的存在
名称:that.name
}函数(错误,用户){
如果conn.close()返回(错误);
如果(!用户){
Collection.insert({
名称:that.name +
密码:that.password +
{ }。
安全:真
}函数(错误,用户){
如果conn.close()返回(错误);
回调回调(用户);
Conn.close();
});
}
别的{
回调(用户注册!;
}
});
});
};
user.login =函数(名称、密码、回调){
conn.collection(用户
安全:真
}函数(错误,集合){
如果conn.close()返回(错误);
Collection.findOne({
姓名,
密码:密码
}函数(错误,用户){
如果conn.close()返回(错误);
回调回调(用户);
Conn.close();
});
});
};
出口= module.exports =用户;
效果图:
(5)建立应用程序,如下所示:
复制代码代码如下所示:
/ / app.js
var =要求();
var用户=要求();
VaR的应用= connect.createserver();
应用程序使用(connect.logger(开发))
使用(connect.query())。
使用(connect.bodyparser())。
使用(connect.cookieparser())。
。使用(connect.static(__dirname + /视图))
。使用(connect.static(__dirname + /公共))
使用()
var=;
var密码=请求;
User.login(姓名、密码、功能(用户){)
如果(用户){
response.end(欢迎光临:+姓名+用户{^ _ ^ ......;
}
别的{
response.end(用户:+姓名+不登记!;
}
});
})
使用()
var=;
var密码=请求;
新用户({
姓名,
密码:密码
})
保存(函数(用户){)
如果(用户用户{ name ){
response.end(用户:+姓名+登记完成!;
}
别的{
response.end(用户:+姓名+已注册!;
}
});
})
听(8888,函数(){)
console.log(港口--->8888。
运行Web服务器);
});
解释:
(1)connect.query()-
处理GET请求的
参数分析。
(2)connect.bodyparser()-处理POST请求的参数分析。
(3)connect.static(__dirname + /视图),connect.static(__dirname + /公共)
它们表示模板视图html和静态资源的资源
目录,如js、CSS、JPG和GIF。
下面是应用程序的目录结构:
四,总结
(1)掌握的Nodejs
操作数据库的基本操作语句。
(2)划分层次结构,如模型、视图、
路由。
(3)不断
优化和
修改文章的例子(例如,注册验证用户是否存在,可以
独立UserManager,做
代理完成用户的认证和拯救行动)。
(4)明天继续完成后续
工作,并期待它的完成。