小编Mat*_*son的帖子

Express和hapi如何相互比较?

从Web应用程序的设计和开发的角度来看,Express和Hapi如何相互比较?对于基本示例,它们看起来很相似,但是我有兴趣了解有关整体应用程序结构的主要差异.

例如,据我所知,Hapi使用不同的路由机制,不考虑注册顺序,可以做更快的查找,但与Express相比是有限的.还有其他重要的区别吗?

还有一篇关于选择Hapi(over Express)开发新npmjs.com网站的文章,本文指出"Hapi的插件系统意味着我们可以通过允许微服务的方式隔离应用程序的不同方面和服务.另一方面,Express需要更多的配置来获得相同的功能",这究竟意味着什么?

frameworks node.js express hapijs

127
推荐指数
2
解决办法
4万
查看次数

Vagrant如何创建专用网络?

什么是Vagrant在设置具有固定IP的专用网络(http://docs.vagrantup.com/v2/networking/private_network.html)时在主机和客户机后面做什么?

Vagrant.configure("2") do |config|
  config.vm.network "private_network", ip: "192.168.50.4"
end
Run Code Online (Sandbox Code Playgroud)

networking virtual-machine vagrant

13
推荐指数
2
解决办法
1万
查看次数

MySQL存储来自SELECT语句的过程变量

我正在尝试创建一个存储过程.这是我到目前为止(不工作):

DELIMITER |
CREATE PROCEDURE getNearestCities(IN cityID INT)
    BEGIN
        DECLARE cityLat FLOAT;
        DECLARE cityLng FLOAT;
        SET cityLat = SELECT cities.lat FROM cities WHERE cities.id = cityID;
        SET cityLng = SELECT cities.lng FROM cities WHERE cities.id = cityID;
        SELECT *, HAVERSINE(cityLat,cityLng, cities.lat, cities.lng) AS dist FROM cities ORDER BY dist LIMIT 10;
    END |
Run Code Online (Sandbox Code Playgroud)

HAVERSINE是我创建的一个功能很好的功能.正如您所看到的,我正在尝试从cities表中获取城市的id,然后将cityLat和cityLng设置为该记录的其他值.我在这里使用SELECTs显然做错了.

这甚至是可能的吗?它似乎应该是.任何帮助将不胜感激.

mysql stored-procedures

12
推荐指数
2
解决办法
10万
查看次数

hapi.js - 404路由VS静态文件路由

我正在尝试将我的Express应用程序迁移到hapi.js,并且我的路线出现问题.我只想要2 GET:我的索引'/',以及不是'/'的所有内容都重定向到'/'.

使用Express我有这个:

// static files
app.use(express.static(__dirname + '/public'));

// index route
app.get('/', function (req, res) { 
  // whatever
}

// everything that is not /
app.get('*', function(req, res) { 
  res.redirect('/');
});
Run Code Online (Sandbox Code Playgroud)

我有hapi.js的问题,以获得相同的行为.我的"静态路"看起来像这样:

server.route({
  method: 'GET',
  path: '/{path*}',
  handler: {
    directory: {
      path: 'public',
      listing: false
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

而我的"404道路"将是:

server.route({ 
  method: 'GET', 
  path: '/{path*}', 
  handler: function (request, reply) {
    reply.redirect('/');
  }
});
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Error: New route /{path*} conflicts with existing /{path*}
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

redirect node.js http-status-code-404 hapijs

11
推荐指数
1
解决办法
3503
查看次数

如何使用docker自动化多服务器部署

这是我的情况:

  • 我有一个用Go编写的项目存储在Github上
  • 我在负载均衡器(app1,app2,app3)后面有3个应用服务器
  • 我有一个Dockerfile作为git项目的一部分,当用于构建映像时,它知道如何安装我的所有应用程序依赖项(包括Go)并为我的应用程序获得工作环境
  • 我在所有3个应用程序服务器上运行容器,一切都运行得非常好

现在我想更改一些代码并将我的更改重新部署到这3个服务器.我可以想到3种可能的方法来促进自动化:

  1. 作为我的dockerfile的一部分,我可以添加一个从Github中提取代码并构建它的步骤.因此,要重新部署,我需要一个登录3个服务器并重建并运行容器的脚本,从而在此过程中提取所有新代码.我最需要推送到服务器的是Dockerfile.
  2. 作为我的Dockerfile的一部分,我可以使用ADD命令将我的代码捆绑到容器中.然后我需要使用像Capistrano或Fabric之类的东西将我的整个项目部署到每个服务器,然后杀死旧容器,重建并运行.
  3. 我可以使用指定的机器(或我的开发环境)根据当前源代码构建新图像.然后将此图像推送到注册表.然后有一个脚本登录到我的服务器并拉下新图像,杀死旧容器并运行新容器.

1号似乎是最容易的,但我在Dockers上阅读的大多数其他讨论都倾向于像3这样的情况,这对我来说似乎相当啰嗦.

什么是最好的选择(或不在这里),我是Docker的新手,所以我错过了什么?我问过一个知道Docker的人,他们的回答是"你没有想到Docker的方式",那么Doc​​ker的方式是什么?

deployment docker

9
推荐指数
1
解决办法
1372
查看次数

hapi.js Cors Pre-flight不返回Access-Control-Allow-Origin标头

我使用(Dropzone js)上传了ajax文件.它将文件发送到我的hapi服务器.我意识到浏览器发送了一个PREFLIGHT OPTIONS METHOD.但我的hapi服务器似乎没有发送正确的响应标头所以我在chrome上遇到错误.这是我得到的错误

XMLHttpRequest cannot load http://localhost:3000/uploadbookimg. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)

这是hapi js路由处理程序

server.route({
        path: '/uploadbookimg',
        method: 'POST',
        config: {
            cors : true,
            payload: {
                output: 'stream',
                parse: true,
                allow: 'multipart/form-data'
            },
        handler: require('./books/webbookimgupload'),
        }
    });
Run Code Online (Sandbox Code Playgroud)

根据我的理解,hapi js应该从Pre-fight(OPTIONS)请求发送所有cors头.不明白为什么不是

来自Chrome的网络请求/响应

**General**
Request Method:OPTIONS
Status Code:200 OK
Remote Address:127.0.0.1:3000

**Response Headers**
view parsed
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
cache-control: …
Run Code Online (Sandbox Code Playgroud)

javascript node.js cors dropzone.js hapijs

9
推荐指数
1
解决办法
1万
查看次数

如何在Node.js中获得服务器正常运行时间?

如何在Node.js中获得服务器正常运行时间,以便我可以通过命令输出它;

if(commandCheck("/uptime")){
  Give server uptime;
}
Run Code Online (Sandbox Code Playgroud)

现在我不知道如何计算服务器启动时的正常运行时间.

javascript node.js

8
推荐指数
3
解决办法
1万
查看次数

React:为什么`this.props.children`未定义?

我正在用ReactJS构建一个电阻计算器.我有一个声明如此的组合组件:

var ResistanceCalculator = React.createClass({
    getInitialState: function() {
        return {bands: [0,0,0,0,0]}
    },
    componentDidMount: function() {
        console.log(this.props.children); // => undefined
    },
    render: function() {
        return (
            <div>
                <OhmageIndicator bands={this.state.bands} />
                <SVGResistor bands={this.state.bands} />
                <BandSelector band={1} />
                <BandSelector band={2} />
                <BandSelector band={3} />
                <BandSelector band={4} />
                <BandSelector band={5} />
            </div>
         );
    }
});
Run Code Online (Sandbox Code Playgroud)

BandSelector呈现<select>元素,当一个更改时,我想更新ResistanceCalculator状态.所以我的想法是我需要将一个事件监听器绑定到ResistanceCalculator子级.然而this.props.children似乎是空的.为什么是这样?

javascript reactjs

7
推荐指数
1
解决办法
1万
查看次数

从另一条路线呼叫hapi路线

我对HapiJS很新.我正在构建一个服务,我有两个路由/ route1和/ route2都使用插件架构.我已在我的清单文件中注册了两个插件.

我想从/ route2调用/ route1,因此/ route2取决于/ route1的有效负载回复.我一直在考虑将/ route2的逻辑放在预处理程序上的/ route1上,但我想将它们分开保存.

不知道如何从另一个调用注册的插件,因为两个插件(路由)正在发出网络请求.谢谢阅读.

谢谢.

javascript node.js hapijs

7
推荐指数
1
解决办法
2847
查看次数

如何使用hapi.js在同一台服务器上支持多个网站?

假设我想在同一台服务器上使用单个IP地址(即使用虚拟主机)托管我的2个网站(cats.com和dogs.com).我想用hapi.js编写它们并将它们作为单个进程运行.

站点可能具有重叠路径,例如它们可能都有/about页面.

我怎么能用hapi实现这个呢?

javascript virtualhost node.js hapijs

7
推荐指数
1
解决办法
544
查看次数