设为首页 收藏本站
查看: 576|回复: 0

[经验分享] node.js + mongodb 做项目的详解(一)

[复制链接]

尚未签到

发表于 2017-2-24 07:21:44 | 显示全部楼层 |阅读模式
  想写博客很长时间了,因为一直身患懒癌,所以一直拖到了现在。markdown的语法也是刚刚学,试验一下效果
好了不说了,直接上干货了。
------------------------------------------------------------------------------------------------

1.准备工作
  Nodejs、express和mongodb的安装(这里安装的都是最新版的)
  ### 安装: ###
  Nodejs的安装没什么说的。不过安装完之后测试是否成功用过原来版本的同学可能会有一些问题。
  原来的版本是:$ node -v  新版不在支持$,直接在命令行中:node -v
  安装最新版的express之后,需要在安装:express-generator //express命令工具,很多初学者都会遇到这个问题(当然我也是)
  mongodb的安装下面会讲解到。


用express创建一个项目的框架。

  这个我创建一个名字叫chihou的网站,用的模板引擎是ejs。
  >express -e chihuo  
  -e表示ejs模板引擎,不写 -e 默认的创建jade模板引擎
  
然后在输入:
cd chihuo    //进入到你创建的项目目录
npm install  //读取根目录中的package.json文件然后安装项目所依赖的包
  然后通过cmd命令行 cd 到 chihuo 的目录下
   >node app
  这样就启动项目了。
  提示1:如果不能启动项目:看看app.js文件中没有监听端口。如果没有,
在 module.exports = app; 语句之前添加app.listen(3000);
  提示2:Ctrl + c 终止运行
  然后我们可以在浏览器地址栏里敲入 http://127.0.0.1:3000/ 或者 http://localhost:3000
这就是你的第一个express创建的node app。
  到这里你就完成了项目的重要的一步。
  之后的讲解 我们从目录开始
  --node_modules   项目中依赖的包
--public         公共资源放的目录
--routes         学名 路由,里面放着一些路由文件
--views 放着就是页面文件了
--app.js 项目的入口文件。当然你也可以改成其他的名字。

2.现在基本的结果已经有了,之后就是创建数据库了

mongodb的安装
  这里只介绍window的安装
在官网上下载zip,这个我装在D盘的mongodb目录下
  1.在D盘中创建mongodb文件夹然后把下载的包解压后把其中的bin文件夹拷贝到创建的mongodb文件夹中,
2.然后在mongodb文件夹中创建一个data文件夹,再在data文件夹中创建db文件夹
3.打开CMD命令行
   >d:
   >cd mongodb\bin
   >mongod -dbpath D:\mongodb\data\db
4.在打开一个CMD命令行:
   >d:
   >cd mongodb\bin
   >mongo
5.这样就可以用了。
  接着就设计我们的数据库了
  在刚才的打开的mongodb数据库中输入:
  >use chihuo  \\创建一个叫chihuo的数据库
  >db.createCollection("users") \\创建一个集合
  >db.users.insert({"name":"admin","password":"111"}) \\给users集合添加一个文档。
  >db.users.find() \\查询你添加的文档
  再接着就是在项目中连接刚才创建的数据库了
  在项目根目录下创建一个的文件夹database,然后在创建一个
db.js



1 var mongoose = require('mongoose');
2 var db = mongoose.connect('mongodb://localhost/chihuo');//;连接数据库
3 var Schema = mongoose.Schema; // 创建模型
4 var userScheMa = new Schema({
5 name: String,
6 password: String
7 }); // 定义了一个新的模型,但是此模式还未和users集合有关联
8 exports.user = db.model('users', userScheMa); // 与users集合关联

3.接着在views文件夹创建视图文件了
  我们上面用express创建的项目视图文件是ejs后缀名,我们一般习惯使用html后缀名。
那么我们怎么让他识别html的视图文件呢?
  在app.js文件中 找到
>app.set('view engine', 'ejs');
把它替换成:
>app.set( 'view engine', 'html' );
再用app.engine()方法注册模板引擎的后缀名。代码:
>app.engine('.html',require('ejs').__express);//里面的下划线是两个
  然后我们创建一个login.html(登陆页面),index.html(原来有,改一下后缀名就行),ucenter(登陆之后的页面);



1 login.html
2 <!DOCTYPE html>
3 <html>
4 <head>
5   <title><%= title %></title>
6   <link rel='stylesheet' href='/stylesheets/style.css' />
7 </head>
8 <body>
9   <h1>Hello World</h1>
10   <p>Welcome to <%= title %></p>
11   <form action="ucenter" method="post">
12     <p>
13       <span>name:</span>
14       <br>
15       <input id="name" name="name" type="text">
16     </p>
17     <p>
18       <span>password:</span>
19       <br>
20       <input id="password" name="password" type="password">
21     </p>
22     <p><input type="submit" value="submit"></p>
23   </form>
24 </body>
25 </html>



1 index.html
2 <!DOCTYPE html>
3 <html>
4 <head>
5   <title><%= title %></title>
6   <link rel='stylesheet' href='/stylesheets/style.css' />
7 </head>
8 <body>
9   <h1>Hello World</h1>
10   <p>Welcome to <%= title %></p>
11   <p><a href="login">登陆</a></p>
12 </body>
13 </html>



ucenter.html
<!DOCTYPE html>
<html>
<head>
  <title><%= title %></title>
  <link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
  <h1>Hello World</h1>
  <p>Welcome to <%= title %></p>
  <p>你已经登陆</p>
</body>
</html>

4.最后就是路由的控制了,在routes文件中的index.js



1 var express = require('express');
2 var router = express.Router();
3 var user = require('../database/db').user;
4
5
6 /* GET home page. */
7 router.get('/', function(req, res) {
8   res.render('index', { title: 'index' });
9 });
10
11 /*login*/
12 router.get('/login', function(req, res) {
13   res.render('login', { title: 'login' });
14 });
15
16 /*ucenter*/
17 router.post('/ucenter', function(req, res) {
18   var query = {name: req.body.name, password: req.body.password};
19   (function(){
20     user.count(query, function(err, doc){
21       if(doc == 1){
22         console.log(query.name + ": 登陆成功 " + new Date());
23         res.render('ucenter', { user:doc });
24       }else{
25         console.log(query.name + ": 登陆失败 " + new Date());
26         res.redirect('/');
27       }
28     });
29   })(query);
30 });
31
32 module.exports = router;
  
目前就讲解这么多,之后的博客我会讲解最新版本的session问题还有前台页面中应用到bootstrap等等,不断的把项目完善。
  github地址:https://github.com/songtanjichuan/chihuo_0.0.1.git
  mongoose参考地址:http://***/course/543b2e7788dba02718b5a4bd
  如果觉得还不错,求推荐。转载的话,请加原文链接。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-346319-1-1.html 上篇帖子: Sublime Text 3前端开发常用优秀插件介绍 下篇帖子: 当今最流行的Node.js应用开发框架简介
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表