小编Ste*_*n-v的帖子

控制器和路由器之间的区别?

我目前正在整理一些用于练习的mvc框架,我有一些laravel经验,因此大致基于此。我做了一个路由器,它只是为您设置的网址返回一个指定的视图。

现在,我还制作了控制器,用于拆分URL,并将基本URL后的第一部分用作控制器,第二部分用作操作。这将加载与控制器相对应的文件,并在该文件中加载与操作相对应的方法。

因此,如果url类似于:url.com/users/index,它将加载UsersController.php文件并在该文件中查找index()方法。

现在我想知道控制器和路由器之间的确切区别是什么?它像指定的吗?其中路由器稍微简单一点,并且只对给定的确切网址做出反应,而路由器将其切碎并增加深度?

我目前所拥有的似乎有很多重叠。

php url model-view-controller controller url-routing

2
推荐指数
2
解决办法
3123
查看次数

php路由的基础

我正在寻找有关如何进行非常基本的 php 路由的教程或解释。

例如,当我访问像 mywebsite.com/users 这样的链接时,我想运行路由类的 get 方法来提供数据,就像 laravel 那样。

Route::get('users', function()
{
    return 'Users!';
});
Run Code Online (Sandbox Code Playgroud)

有人可以解释如何做到这一点或向我提供更多信息吗?

php url-routing laravel laravel-routing

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

Laravel 如何根据类型提示解决依赖关系?

我知道控制反转容器是如何工作的,并且我知道如何自己创建一个。但我只知道如何通过使用注册和解析方法来做到这一点。

我查看了 Laravel 文档,但我一直试图弄清楚 Laravel 如何基于类型提示来解决依赖关系。该部分缺失的链接在哪里?

当我使用更传统的 IoC 容器来手动解析内容时,我至少必须调用静态方法才能开始。Laravel 似乎不需要这些。

有人可以引导我走向正确的方向或举一个小例子吗?

我已经通过以下方式努力了:

http://code.tutsplus.com/tutorials/dependency-injection-huh--net-26903

作为回顾。也许有人可以建立一个自动解析打字提示的快速示例,或者这真的很复杂吗?

php ioc-container inversion-of-control laravel laravel-5

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

为什么使用redis进行websocket通信?

请帮我澄清一些困惑.

Laravel允许你设置redis来与socket.io进行通信:

https://laravel.com/docs/5.4/broadcasting#configuration

据我所知,Redis只是将数据保存在内存中类似于memcached的数据?这允许socket.io等第三方软件获取数据.这真的是websocket行为吗?

我知道你也可以在PHP中做这样的事情:

$address = 'localhost';
$port = 5600;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, $address, $port);
Run Code Online (Sandbox Code Playgroud)

他们为什么不选择上面的东西,而不是让你设置Redis?这可能是一个很好的答案,但我没有使用Redis或websockets的那么多经验.

任何有关这方面的信息将不胜感激.

php sockets node.js laravel

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

如何在matchMedia查询中组合最大宽度,最小宽度?

我正在使用matchMedia API来确定javascript中的视口,因此我可以最大程度地减少dom操作的发生。

display: none我没有使用v-ifVue 的指令来确定是否将元素插入DOM,而不是在各处使用。

我已经这样设置了:

resize() {
    this.mobile = window.matchMedia('(max-width: 767px)').matches;
    this.tablet = window.matchMedia('(max-width: 767px)').matches;
    this.desktop = window.matchMedia('(min-width: 992px)').matches;
}
Run Code Online (Sandbox Code Playgroud)

可以使用移动Match媒质查询,但是如何确定平板电脑的尺寸呢?我想知道是否可以在matchMedia查询中合并max-widthmin-width值。

我当然可以做这样的事情:

resize() {
    this.mobile = window.matchMedia('(max-width: 767px)').matches;
    this.desktop = window.matchMedia('(min-width: 992px)').matches;
    this.tablet = !this.mobile && !this.desktop;
}
Run Code Online (Sandbox Code Playgroud)

我想知道这是否像这样正确设置。

javascript matchmedia vue.js

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

Vue slot 在 slot v-if 语句启动之前加载异步组件

我遇到一个问题,同步组件 JavaScript 在实际显示之前就已加载。

使用a 导入的组件dynamic-import显示v-if为在需要时加载它们。当它们显示时,它们的 JavaScript 也会被加载。但在 v-if 的情况下,slot不会阻止组件加载其生成的 JavaScript 块并将其附加到 DOM。

下拉组件:

<template>
    <li class="dropdown" :class="{ open: visible }">
        <div class="heading" @click.stop="toggle">
            <span>{{ heading }}</span>
        </div>

        <div class="slot-content" v-if="visible">
            <slot></slot>
        </div>
    </li>
</template>
Run Code Online (Sandbox Code Playgroud)

组件与google-map插槽中的异步组件的用法:

<dropdown>
    <google-map>
        <map-marker :data="{{ $marker }}"></map-marker>
    </google-map>
</dropdown>
Run Code Online (Sandbox Code Playgroud)

即使槽有一个v-if,组件 JavaScript 仍在加载。奇怪的是,安装的或创建的都没有被解雇。所以看起来除了组件的异步加载之外,一切都遵守正确的规则。

最好我可以使用带有 a 的插槽,v-if并且不触发加载该async组件生成的块。

显然,如果它是异步加载的话,这并不是一个大问题,但即使是 HTTP2 在请求方面也有其局限性。我宁愿在需要时加载它。

javascript webpack vue.js vue-component vuejs2

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

Vue.js动态类名?

我需要根据评论等级来降低颜色。我希望像这样在Vue.js中完成一些工作:

<div class="review" :style="reviewColor(hotel.average)">
Run Code Online (Sandbox Code Playgroud)

在我的方法中,我有这样的东西:

reviewColor() {
    return 'green';
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这没有给我提供'green'课程。我希望在该方法中进行颜色计算。

如果等级小于7,则必须是特定的颜色,如果介于7到8之间并且高于8。

I need these calculations in a clean matter. Is there any alternative?

I can't inline it because I have 2 elements that need to respond to a class.

javascript vue.js vuejs2

0
推荐指数
1
解决办法
1943
查看次数

如何根据 2 个属性删除数组中的重复对象?

我有一个房间对象数组,我目前正在根据它们的room_rate_type_id属性从数组中删除重复的对象:

const rooms = [{
    room_rate_type_id: 202,
    price: 200
  },
  {
    room_rate_type_id: 202,
    price: 200
  },
  {
    room_rate_type_id: 202,
    price: 189
  },
  {
    room_rate_type_id: 190,
    price: 200
  }
];

const newRooms = rooms.filter((room, index, array) => {
  const roomRateTypeIds = rooms.map(room => room.room_rate_type_id);
  // Returns the first index found.
  return roomRateTypeIds.indexOf(room.room_rate_type_id) === index;
});

console.log(newRooms);
Run Code Online (Sandbox Code Playgroud)

但是,我还需要确保对象不仅在room_rate_type_id匹配时而且在价格时才会被删除。

我可以理解过滤器功能在我给定的示例中是如何工作的,但我不确定如何干净地检查价格,最好是在 ES6 中。

javascript arrays filter ecmascript-6

0
推荐指数
1
解决办法
2267
查看次数