1. 首先安装好最基本的nodejs和mongodb
nodejs很好安装:http://www.nodejs.org 直接官网install安装到本机
mongodb相比nodejs麻烦一点:http://www.mongodb.org 直接安装,然后需要打开终端指定数据存储目录(这里建议百度和google搜索一下安装教程,我这里当时折腾了一会才弄好,开启自动启动我还不会弄,所以我每次都是手动启动)
手动启动办法很简单:指定到mongodb文件夹目录/bin 找到mongod 双击运行就可以了(这里mac和window都是一样直接到目目录点击文件启动)。
2. 安装Express
打开终端,输入:npm install -g express
npm 是node的一个安装东西的方法
-g 表示全局安装express 插件
3. 新建一个工程,使用ejs摸版引擎
window下例如新建到d: 盘
windows 下打开 cmd 切换到 D 盘,输入 express -e ejs know
mac下也是cd 到指定目录,输入 express -e ejs know
mac下出现:
备注:mac下我安装了一个iTerm 代替原本的终端,所有下面看着是黑色的
表示新建成功,我们需要继续安装新建模块里面需要的一些插件:
打开know/package.json
看到下面代码:
"dependencies": {
"express": "3.2.6",
"ejs": "*"
}
表示这个框架需要依赖express插件和ejs插件
下面我们使用node 的安装方法npm:
首先在终端输入 cd know
回车后继续 npm install
这里表示安装package.json文件里面需要的插件
表示安装成功
回车后输入node app
终端出现:Express server listening on port 3000
浏览器打开:localhost:3000
浏览器出现
Express
Welcome to Express
这表示Express安装成功了
4. 安装我们会需要到的插件:
下面这个是我做完一次后,package.json中整个需要的所有插件:
在package.json的"dependencies": {} 改为一下内容:
"express": "3.3.1",
"ejs": "*", //摸版引擎
"mongodb": "*", //连接mongodb的插件
"connect-mongo": "*",//会话支持
"connect-flash": "*", //页面通知插件
"request": "*", //爬虫抓取时的一个插件
"cheerio": "*", //爬虫抓取时的一个插件
"socket.io": "*", //在线实时交流的一个插件
"gm": "*", //国外一个需要依赖 电脑安装ImageMagick 的插件,处理图片,压缩,剪裁等
"node-images": "*" // 国内一个不需要依赖处理图片的插件
我们先集中安装:
在package.json中添加上面插件,然后npm install
安装时间有点长,有时候会可能会没安装成功(我之前就有几次没安装成功),就继续npm install 尝试几次
检查是否安装成功的办法很简单:
对照下 node_modules 文件下的目录是不是下面图片里面一样,有没有缺少的,缺少的就表示安装失败
5. 安装gm插件的一个依赖包imagemagick:
window用户可以到http://www.imagemagick.org/script/index.php 下载window 的exe 文件安装(一直点击下一步即可)。安装好就可以配合gm实用了,不需要任何配置。window下安装好还会是一个图片处理的小软件。
mac 建议直接 http://cactuslab.com/imagemagick/ 下载安装第一个和第二个(两个都安装) With XQuartz support 版本的 ,一键安装。也是安装好就可以配合gm使用了。
6.连接数据库
在konw目录下建一个 settings.js 文件
内容如下:
module.exports = { cookieSecret: 'myKonw', db: 'know', host: 'localhost' };
cookieSecret cookie的一个什么设置,暂时我还不了解
db是数据库的名称
host是数据库的地址
在konw目录下再建一个文件夹
内容如下:
var settings = require('../settings'),
Db = require('mongodb').Db,
Connection = require('mongodb').Connection,
Server = require('mongodb').Server;
module.exports = new Db(settings.db, new Server(settings.host, Connection.DEFAULT_PORT, {}), {safe: true});
这段就是连接数据库不需要了解太多,很多项目中可以直接复制使用,
但是下面还是将我当时看的参考资料引用出来:
-----------------------------------以下为引用------------------------------------------------------------
首先我们需要在node.js下安装mongodb争对node的驱动。
npm install mongodb
下面就可以开始写代码了。首先当然是在node代码引用mongodb:
var mongodb = require("mongodb");
其次就是连接到mongodb数据库server:
var server = new mongodb.Server('localhost',27017,{auto_reconnect:true});
其中第一、二分参数分别是IP地址和端口,由于我们这里没有设计到验证,因此便不需要验证参数。最后的参数是一个对象,我们设置了一个属性auto_reconnect为true,就表示如果当程序与mongodb失去连接便回自动重连。
var server = new mongodb.Server('localhost',27017,{auto_reconnect:true},10);
通常情况下我们可以不管最后一个参数,这个参数是线程池的数量,系统默认的设置是5,也就是说可以同时支持打开5个数据库连接,并进行操作。当然我们可以根据自己需要设置希望的值。
然后就是获取或者创建一个DB实例。
var db = new mongodb.Db("mydb2",server);
------------------------------------------------------------------------------------------------------------
引用来源:http://toozhao.com/2012/10/nodejs-mongo-one/
7. 安装会话支持配合mongodb
会话支持对应connect-mongo插件
打开app.js, 在 , path = require('path') 后添加以下代码:
, MongoStore = require('connect-mongo')(express)
, settings = require('./settings');
在 app.use(express.methodOverride()); 后添加:
app.use(express.cookieParser());
app.use(express.session({
secret: settings.cookieSecret,
key: settings.db,
cookie: {maxAge: 1000 * 60 * 60 * 24 * 30},//30 days
store: new MongoStore({
db: settings.db
})
}));
其中 express.cookieParser() 是 Cookie 解析的中间件。express.session() 则提供会话支持,secret 用来防止篡改 cookie,key 的值为 cookie 的名字,通过设置 cookie 的 maxAge 值设定cookie的生存期,这里我们设置 cookie 的生存期为30天,设置它的 store 参数为 MongoStore 实例,把会话信息存储到数据库中,以避免丢失。我们可以通过 req.session 获取当前用户的会话对象,以维护用户相关的信息。
下面检测mongodb是否安装成功:
终端cd到know: node app
然后查看mongodb是否有新的数据库:
我mac上使用的是mongoHub
如下图:
左侧有一个know 的文件,就表示连接成功。
window 可以安装:http://www.mongovue.com
8. 前端框架
使用的是http://www.bootcss.com
Bootstrap这个不用做太多介绍了
9. 前端摸版
我用的underscore 中的一个摸版引擎,这个可以用在前端和node上,很给力
这个我之前有写过详细介绍,参考:Underscore.js实用功能template模板
10. 调试技巧
nodejs可以直接在Chrome下面调试,设置断点。和调试前端没有什么差别。
nodejs在线调试工具node-inspector
nodejs每次修改完需要重启,可以使用supervisor
nodejs调试避免重新启动的supervisor插件用法
ps: 上面调试的有的需要管理员权限
转自: