第1章 述与环境搭建
来源:互联网 发布:阿里云 nodejs 编辑:程序博客网 时间:2024/05/19 00:41
请关注我的小站:http://oideas.herokuapp.com/
1.自述
为什么要自述?嗯,先把一些东西说一说吧,首先,我不是什么大神,只是一个刚刚脱离了单身(毕业于2013年,脱于2014年2月8日)的苦B而已,对于nodejs的研究,加起来也不过两周而已,以前是搞java的(现在也是,随便搞搞而已),出于对node的好奇,花了半天时间研究了一下,然后...就有了然后....。那么为什么不是Oideas的demo相关blog,而是OMinds的blog呢?For,青出于蓝胜于蓝....更进一步而已。
另,本站的学习有很多地方参考了@nswbmw大神的blog,有想搭建blog的同学可参见TA的wiki另,如果blog写的不好,请随便喷。
2.环境搭建
本站的环境
Node.js : 0.10.25
Express : 3.2.6
Mongodb : 2.4.9
开发工具
nodeeclipse
环境安装(如果环境已搭建,请跳过步骤) 以下皆在windows平台
- 安装nodejs,到Node官网下载相应的msi(我的是64bit,下载的是Windows Installer (.msi) 64-bit),点击安装,猛按next.检验环境是否安装成功 在cmd下输入node -v 显示相关的版本
- 安装express ,cmd下,输入:
npm install -g express
等待下载即可。 - 安装mongodb ,到mongo官网下载,相应的包解压即可。
- eclipse下安装node开发插件,可到http://www.nodeclipse.org/查看最新的update site. 目前是:http://dl.bintray.com/nodeclipse/nodeclipse/0.10.0/ ,那么打开eclipse help->install new software 填写update site地址即可,不必安装所有东西,一般core要安装,其他的tools选择安装。
3.新建工程
打开eclipse,新建 Node.js Express Project .名称为OMinds,Template Engine 选择ejs (其他模板自己研究),至此project已经ok了,在cmd下切换到你的项目目录输入node app.js
,服务器启动打开浏览器:http://localhost:3000/可以看到如下图:
(注:另一种建项目的方法,直接新建项目名,cmd切换到项目的同级目录,如:项目为d:\OMinds,那么cmd切换到d盘即可,然后键入:
express -e OMinds
安装成功后cd OMinds :npm install
,两种方法均可)。4.工程目录
(该部分主要借鉴nswbmw大神的讲解)
app.js:启动文件,或者说入口文件
package.json:存储着工程的信息及模块依赖,当在 dependencies 中添加依赖的模块时,运行 npm install
,npm 会检查当前目录下的 package.json,并自动安装所有指定的模块
node_modules:存放 package.json 中安装的模块,当你在 package.json 添加依赖的模块并安装后,存放在这个文件夹下
public:存放 image、css、js 等文件
routes:存放路由文件
views:存放视图文件或者说模版文件
打开 app.js,内容如下图:
/** * Module dependencies. */var express = require('express');var routes = require('./routes');var user = require('./routes/user');var http = require('http');var path = require('path');var app = express();// all environmentsapp.set('port', process.env.PORT || 3000);app.set('views', path.join(__dirname, 'views'));app.set('view engine', 'ejs');app.use(express.favicon());app.use(express.logger('dev'));app.use(express.json());app.use(express.urlencoded());app.use(express.methodOverride());app.use(app.router);app.use(express.static(path.join(__dirname, 'public')));// development onlyif ('development' == app.get('env')) { app.use(express.errorHandler());}app.get('/', routes.index);app.get('/users', user.list);http.createServer(app).listen(app.get('port'), function(){ console.log('Express server listening on port ' + app.get('port'));});
app.set('port', process.env.PORT || 3000):设置端口为 process.env.PORT 或 3000。
app.set('views', __dirname + '/views'):设置 views 文件夹为存放视图文件的目录,即存放模板文件的地方,dirname 为全局变量,存储当前正在执行的脚本所在的目录。
app.set('view engine', 'ejs'):设置视图模版引擎为 ejs。
app.use(express.favicon()):connect 内建的中间件,使用默认的 favicon 图标,如果想使用自己的图标,需改为app.use(express.favicon(dirname + '/public/images/favicon.ico')); 这里我们把自定义的 favicon.ico 放到了 /public/images 文件夹下。
app.use(express.logger('dev')):connect 内建的中间件,在开发环境下使用,在终端显示简单的日志,比如在启动 app.js 后访问 localhost:3000,终端会输出:
Express server listening on port 3000GET / 200 21ms - 206bGET /stylesheets/style.css 304 4ms>
假如你去掉这一行代码,不管你怎么刷新网页,终端都只有一行 Express server listening on port 3000。
app.use(express.bodyParser()):connect 内建的中间件,用来解析请求体,支持 application/json, application/x-www-form-urlencoded, 和 multipart/form-data。
app.use(express.methodOverride()):connect 内建的中间件,可以协助处理 POST 请求,伪装 PUT、DELETE 和其他 HTTP 方法。app.use(app.router):调用路由解析的规则。
app.use(express.static(path.join(__dirname, 'public'))):connect 内建的中间件,设置根目录下的 public 文件夹为存放 image、css、js 等静态文件的目录。
if ('development' == app.get('env')) { app.use(express.errorHandler());}
开发环境下的错误处理,输出错误信息。app.get('/', routes.index):路由控制器,如果用户访问 / (主页),则由 routes.index 来处理,routes/index.js 内容如下:
exports.index = function(req, res){ res.render('index', { title: 'Express' });};
通过 exports.index 导出 index 函数接口,app.get('/', routes.index) 相当于:app.get('/', function(req, res){ res.render('index', { title: 'Express' });});
以上的内容介绍均来自nswbmw大神,为什么我直接拿过来了呢,因为TA讲的却是很好,而且这一部分还是很有用的。 那么现在,app.js文件中删除:app.get('/', routes.index);app.get('/users', user.list);
添加:routes(app);
并在index.js中修改为如下:
module.exports = function(app) { app.get('/', function (req, res) { res.render('index', { title: 'Express' }); });};
再次在cmd下启动服务,打开浏览器看一下,你会发现效果是一样的。为什么要删掉上面两行代码呢,app.get('/users', user.list);//路由控制每加一个路由控制就要接一句app.get()或者是app.post(),当路由很多时,app.js里面的代码就会很多,不便于维护和修改。所以换一种写法,在index.js里面写路由控制。
以上是本章的主要内容,下一章开始建我们的OMinds。
- 第1章 述与环境搭建
- 第1章 python环境的搭建
- 第1章 python-环境的搭建
- 第1章 搭建s2sm开发环境
- 疯狂Java笔记:第 1 章 Java简介与开发环境的搭建
- 第1章 (4)ArcGis Server silverlight 环境搭建
- 第1章、搭建Android的开发环境
- 疯狂Java讲义——第1章 环境搭建
- RH413企业安全加固 第1章 RH413环境搭建
- 第1章 搭建Android源码工作环境
- 第1章 JAVA 简介及开发环境的搭建
- 第2章 Openwrt开发环境搭建
- Android开发第1篇 环境搭建
- 黑马程序员第一天 Java概述与环境搭建
- 第2讲 zookeeper 集群环境的搭建与测试
- android 自学初级第一天 环境搭建与hello word
- 第一篇 搭建开发环境
- android第一天-------环境搭建
- 营销工具的智慧
- 【PAT 1034】 Head of a Gang 图论DFS
- java web注册实现邮箱验证
- CocoaPods安装和使用教程
- 近段时间处理JT809大量数据方式
- 第1章 述与环境搭建
- 1子级div margin属性影响父级div margin属性
- linux学习之 rsync VS. cp
- MyEclipse安装插件的几种方法
- Rails new, build, create, save方法区别
- maven jetty基本命令
- Android之Home键监听
- Android如何加载硬件OpenGLES库
- iOS XCode4.6.3 SVN 配置