node+express+mongodb初体验

  从去年11月份到现在,一直想去学习nodejs,在这段时间体验了gulp、grunt、yeomen,fis,但是对于nodejs深入的去学习,去开发项目总是断断续续。

  今天花了一天的时间,去了解整理整个学习思路,以下是我的学习分享,是入门级学习体验适合node+mongodb开发小白,node已玩过很久的大神这篇文章可能不适合。

  开篇来个例子:

  客户端表单页面:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
    <title>表单页面</title>
</head>
<body>
    <form action="http://localhost:3000/">
        <input type="text" name="title"/>
        <textarea name="text" id="" cols="30" rows="10"></textarea>
        <input type="submit" />
    </form>
</body>
</html>

  服务器的页面:

var http = require("http");
var open = require("child_process");
var querystring = require("querystring");

var server = http.createServer(function(req,res){
    var post = ‘‘;
    
    req.on(data,function(chunk){
        post += chunk;
    });
    
    req.on(end,function(){
        post = querystring.parse(post);
        res.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"});
        res.write(post.title);
        res.write(post.text);
        res.end();
    });
}).listen(3000,127.0.0.1);

open.exec("start http://127.0.0.1:3000");

  这个一个简单的例子,我们实现前台表单提交,后台获取数据。

  通过这个简单的例子,我们可能想要做更复杂的的项目,那我们该如何下手呢,node+express+mongodb:

  第一部分,基本知识点概要

  express--一个简洁而灵活的 node.js Web应用框架

  mongodb--适合node的关系型数据库

  Mongoose -- Mongoose是MongoDB的一个对象模型工具,既类似ORM,让NodeJS更容易操作Mongodb数据库Mongoose文档

  node模版引擎--ejs,jade  node模版引擎的深入探讨 

  Web 模板 Jade、EJS、Handlebars 万行代码解释效率比较,Jade 完败 https://cnodejs.org/topic/50e70edfa7e6c6171a1d70fa

  EJS --http://www.embeddedjs.com/ github文档 -- https://github.com/tj/ejs

  Jade —— 源于 Node.js 的 HTML 模板引擎 http://segmentfault.com/a/1190000000357534

  JadeAPI --- http://www.nodeclass.com/api/jade.html#doctype

  mongodb --- http://docs.mongodb.org/manual/ 手册

  MongoDB介绍及安装 --  http://www.cnblogs.com/lipan/archive/2011/03/08/1966463.html

  什么是MongoDB ? ---  http://www.w3cschool.cc/mongodb/mongodb-intro.html

 

  第二部分,配置开发安装包

   ① 配置package.json --- npm init初始配置package包依赖

{
  "name": "pfan",
  "version": "1.0.1",
  "description": "pfan",
  "main": "app.js",
  "dependencies": {
    "express": "^4.12.4",
    "jade": "^1.10.0",
    "mongoose": "^4.0.3"
  },
  "devDependencies": {
    "body-parser": "^1.12.4"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

  这里注意:其实配置package.json非常重要,我们写好所需的依赖模块,然后通过 npm install 就可以将参数里面的依赖一起进行安装,这里其实,我们可以在安装 npm install express generator 生成node项目的目录结构和依赖模块的package.json 

   ②快速建立web mvc 目录结构

    Express是一个轻量级、简洁、易用的Node.js Web MVC开发框架
    全局安装,可以快速建立目录结构web mvc目录结构

npm install -g express-generator

  创建 express webmvc目录结构项目

express devexpress 

    ③安装node module包依赖npm install express

npm install express              //web应用框架
npm install jade              //模版引擎 
npm install ejs                  //模版引擎 
npm install mongoose          //MongoDB的一个对象模型工具,操作更简单
npm install mongodb          //MongoDB的驱动
npm install serve-favicon     //统一设置网站icon
npm install morgan               //HTTP 请求日志中间件
npm install cookie-parser               //cookie解析器
npm install body-parser               //定义数据解析器
npm install bower -g                
bower install bootstrap

    注意:提出一个问题,就是我们在命令窗口,执行npm install  会执行package.json里面的包依赖,则我们通过express 项目名称  这样去执行,之后在通过npm install 就可以了执行项目案例里面的依赖,从而安装整个项目框架

    ⑤启动express项目

npm start    //貌似现在的项目变成这样启动了

 

    第三部分,mongodb的坑  ---mongodb文档(有些老旧的api以作更改)

       1.安装

     首先,安装mongodb,直接解压安装,这里不再赘述。

     下面,我们来讲mongodb和node连接起来,在工程文件夹webapp下新建data用来存放数据

cd node/webapp
mkdir data   //新建data文件用来存放数据

    出现这样的结果,说明连接mongodb成功了!

技术分享

    2.创建数据库

    进入mongodb的安装目录D:\Program Files\mongodb\bin,敲命令mongo,切换数据库webapp

cd  D:\Program Files\mongodb\bin  //进入目录
mongo           //执行mongo
use  webapp    //使用webapp数据库,切换数据库

    插入一个usercollection表,执行:

db.usercollection.insert({ "username" : "testuser1", "email" : "[email protected]" })

    执行,查看插入的数据,是否成功

db.usercollection.find().pretty()   //查看插入的数据,是否成功

    3.给数据库配置用户名和密码

cd  D:\Program Files\mongodb\bin  //进入目录
mongo           //执行mongo
use  webapp    //使用webapp数据库,切换数据库
db.createUser({createUser:"test",pwd:"test",roles:[{role:"dbOwner",db:"webapp"}]})  //设置用户名密码,老版本用的是db.addUser注意
show users   //webapp现在已存在的用户

    

  最后资源分享:

  express例子:https://github.com/pingfanren/express

  express与数据库的例子:https://github.com/pingfanren/expressSimpleBlog

  博文:http://www.cnblogs.com/myzhibie/

  express例子:https://github.com/nswbmw/N-blog/wiki/_pages

  叶小钗博文:http://www.cnblogs.com/yexiaochai/p/3527418.html

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。