我一直在学习如何使用MEAN堆栈来构建Web应用程序,到目前为止,这是非常有趣的.而不是使用yeoman generator或npm应用来为我生成代码,而是从头开始构建我的整个应用程序.这样我就知道每一个连接以及我的应用程序发生了什么.当我看着开发者控制台并看见时,我刚刚开始连接我的应用程序的前端和后端
GET http://blog.dev/bower_components/angular/angular.js
不仅有角度,还有其他资源(Modernizr,角线,mootools,restangular等).当您使用yeoman角度发生器时,您可以运行grunt serve命令来启动角度.因为我从头开始构建应用程序,而且我使用npm作为我的构建工具,我不知道如何构建前端服务器.所以,我刚刚用一个简单的Nginx虚拟主机指向我的index.html.这是配置:
server { listen 80; server_name blog.dev; root /home/michael/Workspace/blog/app; index index.html index.htm; location / { try_files $uri $uri/ =404; } }
我不知道有什么其他变量可能会影响到这种情况,所以如果我错过了一些事情,请告诉我,我会很乐意给你你所需要的!
如果您使用的是平均堆栈,则应该能够托管后端并直接为节点提供前端.
我不确定你的项目结构,但这里是我正在工作的一个结构.
/bin --contains a file called www.js (used to launch app) /data /models /node_modules /public -- contains my angular implementation /routes -- contains express routes /temp /upload /views app.js -- main configuration for express api.js -- my apis package.json
在/bin/www.js文件中,您有代码启动您的节点服务器.
var app = require('../app'); app.set('port',process.env.PORT || 3000); var server = app.listen(app.get('port'),function() { debug('Express server listening on port ' + server.address().port); });
您还需要设置快速和您的路线,以便首先查看路线
在路径目录中我有一个名为index.js的文件
在这个文件中,我定义了一个通向我的角度index.html页面的路由.
var express = require('express'); var router = express.Router(); /* GET home page. */ router.get('/',function(req,res) { res.redirect('/pages/index.html'); }); module.exports = router;
当然,你需要设立快递.
process.env.TMPDIR = 'tmp'; // to avoid the EXDEV rename error,see https://stackoverflow.com/q/21071303/76173 var express = require('express'); var path = require('path'); var favicon = require('static-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var multer = require('multer'); var flow = require('./flow-node.js')('tmp'); var multipart = require('connect-multiparty'); var multipartMiddleware = multipart(); var uuid = require('uuid'); var mongoose = require('mongoose'); var session = require('express-session'); var routes = require('./routes/index'); var app = express(); app.use(favicon()); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded()); app.use(cookieParser()); app.use(session({genid: function(req) { return uuid.v4()},secret: 'XXXXXXXXXXX',saveUninitialized: true,resave: true})); app.use(express.static(path.join(__dirname,'public'))); app.use('/',routes); app.use('/users',users); module.exports = app;
现在假设您的Angular文件和javascript在“公共”目录中的某个地方,您应该能够使用以下命令启动Node.
node bin/www
并且您的浏览器在http://localhost:3000的点和业务.
希望这有助于学习和快乐.