【问题标题】:Node js as http server and host angularJS SPANode js 作为 http 服务器和主机 angularJS SPA
【发布时间】:2015-10-06 18:14:12
【问题描述】:

我有一个用 angularJS 编写并由 grunt 构建的应用程序。有没有办法可以从节点 js 创建一个 http 服务器并将其托管在那里。请分享任何有帮助的代码 sn-p 或文档。谢谢

【问题讨论】:

  • 获取 node 教程。如何开始使用,仅此而已....您不必在 stackoverflow 上询问
  • Rohit,你能分享一个链接吗?我可以获得很多文档并尝试了一些代码 sn-ps。我可以创建一个服务器。但这并没有占用我的申请。
  • 如果您在配置应用程序时遇到问题,请在此处发布... Node.js 将花费更多时间来学习,而不是您提供的内容...所以请耐心等待并尝试更多...虽然我可以给你一些链接,但我想你也知道自己谷歌...
  • 如果您遇到问题并且遇到需要帮助的特定错误,请随时更新问题。由于它和 cmets 现在都在编写,您似乎在请求指向教程或其他场外资源的链接,这与 Stack Overflow 无关,因为这些问题会产生大量固执己见的答案和垃圾邮件。

标签: angularjs node.js gruntjs single-page-application httpserver


【解决方案1】:
  1. (最简单)如果您没有任何服务器端逻辑,您可以通过 npm 中的 http-server 模块简单地为客户端 AngularJS/HTML/css 提供服务。 https://www.npmjs.com/package/http-server 只需通过安装它 $>npm install -g http-server 并转到您的客户端文件夹,键入 http-server 并按 Enter。

  2. 如果您编写了服务器端代码,(ExpressJS 或 restify web api)然后使用 $>nodemon server.js

  3. 如果您正在寻找生产应用程序的选项,请考虑 forever/pm2 https://www.npmjs.com/package/pm2 https://www.npmjs.com/package/forever

【讨论】:

  • 是的,我也将客户端和服务器分开。我使用 http-server 运行客户端,使用 nodemon/forever 运行服务器。当您投入生产时,您可以选择在 cloudfront/CDN 上部署客户端。 (如果它对你有用,请按右键接受答案)。
  • 我知道这是一篇很老的帖子。但是您如何获得正确的 css/样式以与客户端代码一起显示?
【解决方案2】:

在您的app.js 文件中使用以下代码。

var express = require('express');

var path = require('path');
var bodyParser = require('body-parser');
var app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(express.static(path.join(__dirname, 'public')));

/* GET home page. */
app.get('/', function(req, res, next) {
  //Path to your main file
  res.status(200).sendFile(path.join(__dirname+'../public/index.html')); 
});

module.exports = app;

使用node app.js 运行app.js 文件

【讨论】:

  • 感谢我所需要的。我猜我应该把我的整个 Angular 应用程序放在 public/ 文件夹中
  • 您不能在此方法中使用 url 进行路由,也就是说,您可以浏览 Angular 应用程序的页面,但如果您重新加载页面,您的 nodejs 应用程序将收到 404 错误Angular 应用的页面
【解决方案3】:

这个例子在任何情况下都适用于我

不管你有没有base-url

source code here

var express = require('express');
var path = require('path');
var bodyParser = require('body-parser');
/**
 * This server should host angular appliation with or without base-url
 * The angular static resources should be under `./public`
 */
var app = express();
app.use(function(req, res, next) {
  console.log('Time:', Date.now() + ":", req.originalUrl)
  next()
})
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: false
}));
app.use(express.static(path.join(__dirname, 'public')));
app.use('/base-here-if-any', express.static(path.join(__dirname, 'public')))

app.get('*', function(req, res, next) {
  //Path to your main file
  res.status(200).sendFile(path.join(__dirname + '/public/index.html'));
});


const port = 3000


app.listen(port, () => console.log(`Example app listening on port ${port}!`))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-27
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    相关资源
    最近更新 更多