angularjs Nodejs应用程序的最佳部署架构

2024-03-28

我在 AngularJS 和 NodeJS 中有 Moto Adverts 应用程序。 Angularjs-client-side 在 Apache HTTP Server (localhost:8000) 上运行,但 nodejs-server-side 作为 node.js http 服务器 (localhost:3000) 运行。

一段客户端代码(angularjs):

var motoAdsServices = angular.module('motoAdsServices', ['ngResource']);

motoAdsServices.factory('Brand', ['$resource', function($resource) {
    return $resource('http://localhost\\:3000/api/:id', {}, {
      query: {
        method: 'GET',
        params: {
          id: 'brands'
        },
        isArray: true
      }
    });
  }]);

一段服务器端代码(nodejs):

var express = require('express');
var path = require('path');
var http = require('http');
var brands = require('./routes/brands');

var app = express();

var allowCrossDomain = function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  next();
};

app.configure(function() {
  app.set('port', process.env.PORT || 3000);
  app.use(express.logger('dev'));  /* 'default', 'short', 'tiny', 'dev' */
  app.use(express.bodyParser()),
  app.use(allowCrossDomain);
  app.use(express.static(path.join(__dirname, 'public')));
});

app.get('/api/brands', brands.findAll);

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

我的问题是:

  1. 我应该做什么才能在同一台服务器上运行客户端和服务器端。 a) 在 Apache HTTP 服务器 (localhost:8000) 上。 b) 在 Node.js 自 http 服务器上 (localhost:3000)。
  2. 哪种架构最适合生产使用 - 用于客户端和服务器端的两台独立服务器还是只有一台?
  3. 在服务器端使用跨源资源共享(CORS)是否是一个好习惯(如果我应该有两个独立的服务器)?
  4. 我应该做什么才能不硬编码地址http://localhost:3000/api/brands到服务器端(最佳实践)?

  1. Node.js
  2. 一台服务器将更易于维护。为了优化,如果需要,您可以稍后使用 nginx 缓存静态文件。 (只需搜索“nginx Node.js static”,但如果流量较小且没有大量静态文件,则无需搜索即可正常工作)。我不会使用 Apache 做任何事情。

这是一个 nginx 配置示例:

server {
  listen 80;
  server_name myserver.net;

  root /mnt/app;
  index index.html index.htm;

  location /static/ {
       try_files $uri $uri/ =404;
  }

  location /api/ {
       proxy_pass http://127.0.0.1:8080;
  }
}
  1. 您不需要 CORS。
  2. 端口将是相同的,因此这不是问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

angularjs Nodejs应用程序的最佳部署架构 的相关文章

  • Angular js ng-view 渲染事件

    我如何知道 ng view 何时完全渲染 目前我尝试使用 scope on viewContentLoaded function scope on routeChangeSuccess function angular element do
  • 如何通知 AngularJS 表单已由 jQuery 外部填写?

    我在 AngularJS 中有一个页面 其中有一个包含一些字段的表单 加载该页面后 我想要一个书签 单击该书签可根据配置文件中的数据填充字段 正在使用一个 JS 文件 该文件使用 jquery 来填充表单中的数据 当我做 id val ab
  • 从字符串渲染 React 组件

    我在字符串中有一些 React 代码 例如 const component function App return div test div 我希望能够从浏览器内渲染该组件 例如 import React Component from re
  • WebSockets 监听 UNIX 域套接字?

    是否可以在 nginx 服务器后面设置一个 WebSockets 服务器来处理 UNIX 域套接字上的连接 我目前在同一台计算机上有多个 WebSocket 服务器实例 并且存在端口共享问题 所有实例都必须分配一个唯一的端口 我想避免这种情
  • mongodb 中的 $size 与条件

    我正在使用聚合从两个集合中获取值 一个是文件夹 另一个是检查 我正在获取所有数据 但检查计数为 0 我的代码 mongo folder aggregate lookup from inspections localField id fore
  • 有没有办法像我们在bunyan CLI 中显示的那样显示winston 日志文件?

    In Bunyan https github com trentm node bunyanlogger 我们可以看到这样的日志文件 tail f sample log bunyan并以彩色显示日志并漂亮地显示 json 对象 但我找不到类似
  • 使用express-fileupload上传文件

    我正在尝试使用express fileupload上传文件 但没有成功让它工作 我可以让文件 在本例中为图像 上传 因为我可以让控制台显示使用正确文件夹上传的图像 启动 js router get upload function req r
  • 使用 array.map 后如何运行函数?

    我想做的是在使用 array map 之后运行一个函数 理论上 我应该能够在 array map 之后运行 但是 由于某种原因 它在 array map 完成之前运行该函数 我该如何解决 这是我的代码 var channelIds chan
  • Node.js 在 http.request 循环中处理内存不足

    在我的 Node js 服务器中 我无法弄清楚为什么它会耗尽内存 我的node js 服务器为它收到的每个http 请求发出一个远程http 请求 因此我尝试使用下面的示例脚本来复制该问题 该脚本也耗尽了内存 仅当 for 循环中的迭代次数
  • 启动应用程序时,“npm start”和“node app.js”之间的区别?

    我已经使用命令安装了一个应用程序express new filename 我刚刚了解到您可以使用以下方式启动应用程序 npm start 到目前为止我已经使用过 node app js 启动我的服务器 有人知道两者有什么区别吗 谢谢 来自m
  • Angular .controller() 在 .run() AngularJS 之前运行

    我在 run 中有一个 ajax 调用 该调用将一个变量加载到 rootScope 中 该变量在与视图关联的控制器中是需要的 有时 在刷新 F5 时 当 controller 加载时 rootScope SuperCategories 中没
  • 无法从index.js解析模块@babel/runtime/helpers/interopRequireDefault

    我刚刚克隆了这个存储库 反应本机纸 https github com callstack react native paper 但是当我在根目录上运行时 yarn install 我收到以下警告 D react native paper m
  • Azure Media Player 在重新访问视图时无法在 Angular JS 中播放视频

    我已经在我的 angularjs 应用程序中使用了 azure 媒体播放器并且能够观看视频 但是 当重新访问视频标签所在的同一视图时 不会播放视频 而是在后台播放音频 我正在使用 ui router 进行路由 预先感谢您的快速帮助 这是我的
  • Angularjs:排序在 Chrome 和 Firefox 浏览器中显示不同的结果

    您好 我在 chrome 和 firefox 浏览器中得到不同的数据排序结果 Firefox 显示正确的一个 HTML table class datatable thead tr th width 5 class Rank Rank nb
  • 操作 `posts.find()` 缓冲在 10000 毫秒后超时

    当我在本地尝试时 效果非常好 但 Heroku 在服务器部署后出现此错误 有人可以帮忙吗 message Operation posts find buffering timed out after 10000ms index js con
  • NPM 无法安装依赖项 - 尝试解锁尚未锁定的内容

    我一直在尝试在我的 package json 文件上运行 npm install 但遇到了很多麻烦 我的所有依赖项上一直显示 错误 尝试解锁尚未锁定的 XXX 这是其中之一 Error Attempt to unlock tbd 0 6 4
  • Angular ui-router:链接不可点击

    我尝试运行 angular ui router 来处理我的视图 但我遇到了问题 以下视图的两个链接不可点击 带有链接标签的角度更改变量 但我无法单击 我有这样的观点 h1 App h1
  • AngularJS/Bootstrap 推荐的日期选择器是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 使用 Angular Bootstrap 时 有多种添加日期选择器控件的选择 有 更好 的吗 这是我发现的 HTML 5 日期输入类型 不同浏览
  • 离子动态列表分隔符

    我已经被这个问题困扰了一段时间 所以我希望你能让我朝正确的方向前进 我的角度工厂返回一个看起来像这样的对象 name Fall year 20xx id some id 这是一个学期列表 每个学期都有一个对象 其中包含名称 年份和学期 ID
  • 使用 MongoDB Atlas 时 mongo-go-driver 因服务器选择超时而失败

    去版本 1 12 5 我有这个使用 node js mongo 驱动程序的代码 const MongoClient require mongodb MongoClient const uri process env MONGO HOST d

随机推荐

  • Android可取消启动画面

    我正在尝试按照以下规则创建一个具有横幅和取消按钮的启动页面 如果没有按下任何按钮 5 秒后转到主要活动 如果按下取消按钮 则立即转到主要活动 如果横幅被按下 则转到其他活动 My code public class BannerSplash
  • java.net.SocketException:打开的文件太多

    我有一个java应用程序 它运行得很好 在Ubuntu 10 04上 几个小时 直到它遇到 java net SocketException 打开文件太多 Sender java的代码可以找到here https code google c
  • 在 ansible shell 命令中使用 {{ 和 }}

    我的剧本里有这个 name Get facts about containers shell docker ps f name jenkins format raw Names endraw register container 请注意 我
  • Extjs4 在组合框中添加一个空选项

    我在 ExtJS4 中有一个带有此初始配置的组合框 xtype combobox name myCombo store MyStore editable false displayField name valueField id empty
  • 将 Hessian 矩阵定义为零

    在使用 scipy optimize minimize 和 trust constr 方法时 我得到了这个 UserWarning scipy optimize hessian update strategy py 187 UserWarn
  • 为什么 token.py 的存在会导致内置 help() 崩溃? [复制]

    这个问题在这里已经有答案了 作为一个爱好 学习项目 我正在用 Python 编写一个解析器生成器 我的一个代码文件名为 token py 其中包含几个用于将纯字符串转换为 Token 对象的类 我刚刚发现 在 Python 中使用控制台中的
  • ASPNETDB.MDF 文件未显示在 APP_DATA 中

    我正在了解 Microsoft 关于 MVC 2 表单身份验证的演练 http msdn microsoft com en us library ff398049 aspx http msdn microsoft com en us lib
  • 找不到 support-fragment.jar (com.android.support:support-fragment:27.0.2)

    我克隆了我的项目并使用 Android studio 打开 但构建失败并出现以下错误同一个项目对其他人来说运行良好 What went wrong Could not resolve all files for configuration
  • 字符串比较 Objective-C

    我一直在努力进行简单的比较 但无法让它发挥作用 我正在读取一个 XML 文件 我需要比较其中的数据才能显示正确的图片 http www cleaner se larm xml http www cleaner se larm xml 解析示
  • 带有数字键的 Django postgres Json 字段

    我有带有 postgres json 字段的模型 class MyModel models Model data JSONField null True 然后 我这样做 m1 MyModel objects create data 10 2
  • 摆脱 django testsuite 中的空 models.py

    我有两个纯服务应用程序 它们充当我的核心模型的仆人 因此 他们没有任何自己的模型 虽然第一个服务的测试套件运行良好 但第二个服务会抛出以下错误 django core exceptions ImproperlyConfigured App
  • C++:在另一个函数中声明一个函数不是编译器错误,那么...它是什么?

    我无意中编译了一个与此类似的源 void y optionally declaring y void x some code void y some code void y some code optionally defining y 这
  • python re.search 不适用于多行字符串

    我已将此文件加载到字符串中 some preceding stuff static char header data 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1
  • py中的pyc文件反编译失败

    感谢您的关注 我有一个pyc文件 我需要获取它的源代码 我已经尝试了很多库 但是版本有错误 这是尝试反编译时的命令行输出 C Users nigga22nd Downloads gt uncompyle6 bot pyc uncompyle
  • .NET中的序列号(注册密钥)算法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有一些关于 IP 安全等的及时帖子 但我找不到专门针对算法的帖子 在我当前的一个项目中 我们决定采用离线注册密钥系统的路线 我想我们最
  • NSD昨天的日期

    我如何创建一个NSDate具有当前日期以外的自定义日期的对象 例如 我想创建昨天或两天前的变量 你应该使用NSCalendar https developer apple com library mac documentation Coco
  • 使用QMediaPlayer播放资源中的mp3文件

    我尝试播放资源中声明的 mp3 文件 但它显示 Btn clicked current media qrc sound sound FarAway mp3 Error QMediaPlayer FormatError Media state
  • 读取字符串和整数

    我想要做的是从文本文件中读取一行 其中包含一个长度 Name Surname 1 14 我知道如果我读取字符串 字符串将是所有字符 直到空格 但是 getline 将整行读取为字符串 那么我该如何阅读这样的一行呢 有什么简单的方法或者我必须
  • 将字符串拆分为字符串数组

    我正在尝试找到一种将字符串拆分为字符串数组的方法 每当遇到白色香料时我都需要将其拆分 例如 嗨 我是保罗 into 嗨 我是 保罗 如何使用正则表达式表示 split 方法中的空格 你需要一个正则表达式 例如 s 意思是 每当遇到至少一个空
  • angularjs Nodejs应用程序的最佳部署架构

    我在 AngularJS 和 NodeJS 中有 Moto Adverts 应用程序 Angularjs client side 在 Apache HTTP Server localhost 8000 上运行 但 nodejs server