AngularJS+Satellizer+Node.js+MongoDB->Instagram-10

Build an Instagram clone with AngularJS, Satellizer, Node.js and MongoDB

10.Express Skeleton

instagram 目录下新建一个 server 文件夹,和 client 并排放在一起。

https://hackhands.com/wp-content/uploads/2014/10/Screenshot-2014-10-28-22.03.00.png

server 目录下新建两个文件: package.jsonserver.js。打开 package.json 把下面的代码复制进去,这是我们整个应用所要用到的依赖:

<!-- lang: js -->
{
  "name": "instagram-server",
  "version": "0.0.0",
  "scripts": {
    "start": "node server.js"
  },
  "dependencies": {
    "bcryptjs": "^2.0.2",
    "body-parser": "^1.8.1",
    "cors": "^2.4.2",
    "express": "^4.9.0",
    "jwt-simple": "^0.2.0",
    "moment": "^2.8.3",
    "mongoose": "^3.8.17",
    "request": "^2.44.0"
  }
}

然后把下面代码复制到 server.js:

<!-- lang: js -->
var bcrypt = require('bcryptjs');
var bodyParser = require('body-parser');
var cors = require('cors');
var express = require('express');
var jwt = require('jwt-simple');
var moment = require('moment');
var mongoose = require('mongoose');
var path = require('path');
var request = require('request');

var app = express();

app.set('port', process.env.PORT || 3000);
app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, 'public')));

app.listen(app.get('port'), function() {
  console.log('Express server listening on port ' + app.get('port'));
});

注意: 所有的后台代码都在这里,除非另有说明。也就是说,我不打算把我们的 Express 应用分成多个 models, controllers, routes, 之类的。这样做没别的理由,只为了简单起见。

让我们安装包依赖,看看我们的服务器有没有问题。打开终端,进入 instagram/server 目录,然后输入 npm install:

https://hackhands.com/wp-content/uploads/2014/10/Screenshot-2014-10-28-22.17.54.png

插播个广告,我用的是 fish shell ,来自 oh-my-fish 工程。我超级爱它的自动补全功能。还有些超赞的功能比如说它能记住你最后一条命令。如果比如我输入 py 它会提示 python -m SimpleHTTPServer 这正是我所需要的。

安装完所有的应用依赖之后,我们现在可以启动服务器了。

https://hackhands.com/wp-content/uploads/2014/10/Screenshot-2014-10-28-22.18.31.png

你可以执行 npm start 或者 node server.js 来启动 Express 应用。如果所有的设置都正确的话,你会看到下面的这句:

Express server listening on port 3000

如果你以前有做过 Express 应用这段代码你应该很熟悉。有一点应该值得注意的是 cors() 中间件。由于我们的 AngularJS 应用是运行在另一个独立端口的,我们需要做跨域请求支持(cross-origin requests support),正如我第一部分提到的那样,这个 web 服务最厉害的地方在于独立。你可以找一些屌丝去开发前端,有它自己独立的 Git 仓库来维护,以及像例子里面的运行在 Heroku,另外一波屌丝来开发后台,把它发布到 Azure 或者 OpenShift 上。这样最大的优势就是你可以让一堆屌丝独立并行的进行开发,而他们没有借口说别的小组拖进度。

注意: 关于如何微调 CORS, 参考 https://github.com/troygoode/node-cors#configuring-cors.

你可能感兴趣的:(AngularJS,express,nodejs,node,node.js,OAuth,oauth2,Satellizer,OAuthn)