大前端之路node第(2)天:Express Generator搭建node项目后台

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21423689/article/details/84071281

使用 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数据库,下篇待续

猜你喜欢

转载自blog.csdn.net/qq_21423689/article/details/84071281