使用 Express Generator
Express Application Generator 能够快速创建一个Express应用框架。
npm install express-generator -g
express myapp --view=pug
cd myapp
npm install
# Run the myapp on Windows
SET DEBUG=myapp:* & npm start
# Run myapp on Linux/Mac OS X
DEBUG=myapp:* npm start
去http://localhost:3000/ 看看刚才创建的Express应用长什么样。
添加nodemon
在开发的时候,每次修改文件,都需要重启 express 服务,比较麻烦。使用nodemon,修改文件后可以自动重启 express 服务。
npm install --save-dev nodemon
修改 package.json 的 scripts 内容:
"scripts": {
"start": "node ./bin/www",
"devstart": "nodemon ./bin/www"
}
之后,使用 SET DEBUG=myapp:* & npm run devstart
启动 express 服务。这样在开发过程中修改文件的时候,express服务就会自动重启,非常方便。
生成的文档目录结构
/myapp
app.js
/bin
www
package.json
/node_modules
[about 4,500 subdirectories and files]
/public
/images
/javascripts
/stylesheets
style.css
/routes
index.js
users.js
/views
error.pug
index.pug
layout.pug
www file
/bin/www 是应用的主入口。应用的真正入口是app.js文件,所以www文件先把app.js文件引进来,其余的内容主要就是创建了一个node HTTP server。
app.js
这个可是主要文件,得好好唠唠,在app.js里面,主要做了这些事儿:
1.引入之前使用npm install
下载的包,并创建express对象:
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var app = express();
2.使用上面引入的包:
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
3.引入routes文件夹里面的文件,这些文件主要处理URL路由。
var index = require('./routes/index');
var users = require('./routes/users');
4.关联路由路径与引入的文件:
app.use('/', index);
app.use('/users', users);
5.设置模板,views 设置了模板的位置;view engine设置了要使用的模板引擎。
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
6.最后处理错误的http请求:
//设置跨域访问
router.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By",' 3.2.1')
res.header("Content-Type", "application/json;charset=utf-8");
next();
});
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
routes文件夹
以users.js为例,首先加载express,通过express获取到router对象。使用router对象指定路由的方法和路径。由于在app.js已经指定 /users
到本文件,因此当浏览器请求/user时,会执行下面的回调函数。
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
module.exports = router;
回调函数有第三个参数next,主要用于中间件中,即将数据传递到下一个方法去处理。
接下来写一下可能遇到的问题:
1、自定义端口:
2、package.json: script:{键值:可执行脚本语句} 使用:npm run 键值 这里借助nodemon实现热启动
3、view文件夹可以放前端渲染模板,前后分离可忽略。
4、routes为渲染路由 下面是为其配置同意前缀
接下来就是熟悉数据库 这里我选用的mongodb,你也可以其他sql,
服务器搭建完成,接下来就是如何与数据库打交道了,
那么首先我们得先了解mongodb数据库,下篇待续