1。项目的简单启动首先新建一个项目目录,然后在该目录下创建启动文件app.js。这里会用到Express框架来实现相关功能,所以需要先安装。在启动文件中添加如下内容,测试Express框架是否引用成功。letexpress=require('express');letapp=express();app.get('/',function(req,res){res.send('HelloWorld!');});app.listen(80);浏览器显示的结果显示“HelloWorld!”,如果收到响应信息,说明我们的项目第一步已经成功完成。2.创建目录项目已经成功启动。接下来,我们将开始创建相关的目录,用于存放不同的文件。public目录:存放静态文件。routes目录:存放路由文件。views目录:存放页面文件。公共目录:存放公共文件。public目录(可选),新建javascripts、stylesheets、images三个目录,用于存放js、css、img相关文件。这里我们构建了一些js和css文件来实现简单的页面样式和操作,可以直接在页面视图中使用。参考方法如下:3、添加注册视图页面并添加文件有了目录,我们开始添加文件,先添加一个登录页面register.html,方便管理和开发,将视图页面统一放在views目录下。在views目录下,添加register.html,注册视图页面,如下简单效果图:有了视图页面,我们就可以访问了,怎么访问,这里需要用到ejs模板,安装方法npminstallejs--保存,引用如下:app.set('viewengine','html');app.engine('.html',require('ejs').__express);使用engine函数注册模板引擎,指定处理后缀名html文件。设置视图存储的目录:app.set('views',require('path').join(__dirname,'views'));如果是在本地项目中,我们还需要指定本地静态资源访问的路径,设置如下:app.use(express.static(require('path').join(__dirname,'public')));4.访问注册查看页面访问注册页面有了查看页面,我们开始访问,app.js文件的部分内容,导入相关模块资源,然后简单访问如下:app.get('/',function(req,res){res.render('register');});app.listen(80);开始访问80端口,如果看到注册页面成功,说明项目已经运行成功。如果没有看到,查看相关报错信息,看是否缺少相关模块,安装参考即可。5、定义用户集合Schema定义Schema首先在common目录下添加models.js文件,用于保存各个集合的Schema文件(集合属性),也方便我们查看和访问。具体内容如下:module.exports={user:{name:{type:String,required:true},password:{type:String,required:true},gender:{type:Boolean,default:true}}};有了Schema文件的集合,如何访问它,接下来我们将介绍如何使用Model模型来操作这些属性。6.创建公共方法或公共目录。我们正在创建一个新的公共方法-dbHelper.js文件来操作这些模式。因为后面会涉及到这个问题,所以我们写一个public方法。dbHelper文件内容如下:letmongoose=require('mongoose'),Schema=mongoose.Schema,models=require('./models');for(letminmodels){mongoose.model(m,newSchema(models[m]));}module.exports={getModel:function(type){return_getModel(type);}}};let_getModel=function(type){returnmongoose.model(type);};如上图,我们可以通过getModel获取到集合的Model,模型可以对数据库进行实质性的操作。关于Model,简单介绍一下:Schema构建生成的模型,具有数据库操作的行为。7、添加注册页面点击功能添加功能dbHelper.js文件中方法的访问非常简单,如下所示:global.dbHelper=require('./common/dbHelper');这里我们使用global来定义全局变量dbHelper,那么在任何模块中都可以调用dbHelper。然后我们开始修改注册视图页面,添加点击事件,例如:对应register()函数,大致如下:functionregister(){//通过serialize()方法序列化表单值,创建一个文本字符串。vardata=$("form").serialize();//例如:"username=张三&password=12345"$.ajax({url:'/register',type:'POST',data:data,success:function(data,status){if(status=='success'){location.href='register';}},error:function(res,err){location.href='register';}})}8.添加注册页面请求路由添加路由这里我们需要创建新建一个文件register.js,专门用来处理注册页面的post请求。后面会有多个不同的处理文件,所以统一管理在routes目录下,在实际开发中,我们可能需要针对不同的文件请求提供相应的文件处理,所以我们分别处理。这里register.js文件处理get和post请求的相关代码如下://app:expressobjectmodule.exports=function(app){app.get('/register',function(req,res){res.render('注册');});app.post('/register',function(req,res){varUser=global.dbHelper.getModel('user'),uname=req.body.uname;User.findOne({name:uname},function(error,doc){if(doc){req.session.error='用户名已经存在!';res.send(500);}else{User.create({name:uname,password:req.body.upwd},function(error,doc){if(error){res.send(500);}else{req.session.error='用户名创建成功!';res.send(200);}})}})})};9.在模块的加载和引用寄存器的post请求处理中,我们使用session(express-session模块)和bo来处理post请求数据dy属性(body-parser和multer模块),需要先安装,然后再引用,如下://referencemodulevarbodyParser=require('body-parser');varmulter=require('multer');varsession=require('express-session');//调用中间件app.use(bodyParser.json());app.use(bodyParser.urlencoded({extended:true}));app.use(multer());后期会再次添加多条路由记录,便于管理和访问。我们可以把它们放在一起。比如在routes目录下新建一个index.js文件存放添加的文件。代码如下:模块。exports=function(app){require('./register')(app);};那么我们就可以在app.js文件中直接引用index.js文件来访问这些文件,在index.js下写:require('./routes')(app);//app:expressobject10.中间件调用信息到这里,我们一步到位。在register的post请求处理中,我们使用express-session模块来保存相关信息,这里我们使用中间件来传递这些提示。中间件内容如下:app.use(function(req,res,next){res.locals.user=req.session.user;//保存用户信息varerr=req.session.error;//保存结果响应信息res.locals.message='';//保存html标签if(err){res.locals.message=''+err+'
'}else{next();}});这里注意中间件的放置,还有我我们设置了变量message并简单地为其添加了样式。这里我们在注册视图中使用它作为操作结果的信息提示。只需将<%-message%>添加到视图的第一个div即可注册我们。基本准备好了,开始打开连接数据库,设置用户过期时间(注意执行顺序,要放在第一个中间件位置),app.js条件内容如下:mongoose.Promise=global.Promise;mongoose.connect("mongodb://127.0.0.1/test");app.use(session({secret:'secret',cookie:{maxAge:1000*60*30}}));到这里,注册功能已经完成,用户注册信息录入中,我们没有进行相关校验如为空,两次密码不匹配等(可以自行添加),赶紧尝试注册吧,如果你在本地,可以使用MongoVUE(可视化客户端)查看数据是否成功写入数据库。