小编tom*_*met的帖子

何时使用"客户端路由"或"服务器端路由"?

我对此有点困惑,我觉得这个问题有点愚蠢,但我想理解它.

所以,假设我正在使用客户端Web框架,如Backbone,Angular或Durandal.该框架包括路由.

但我当然还有一个服务器用于数据库的东西,等等,它也有路由.

我现在的问题是:

何时使用"客户端路由"或"服务器端路由"?

如何"决定"是否已在客户端执行路由或请求是否首先发送到Web服务器?

我很难想象这一点,因为客户端可以在服务器了解该请求之前进行路由.

如果有人能解释这两个路由系统如何协同工作,我将非常感激.

PS:我没有包含代码示例,因为我不是在寻找有关特定框架的答案,而是关于一般的路由过程.

routing web-applications server-side client-side

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

使用koa.js显示静态html文件

我想要做的是在调用索引路由(即localhost:3000)时提供index.html文件.

我使用koa-router进行路由,所以我的路由如下:

app.all("/", function * (next){
    //Send the file here
});
Run Code Online (Sandbox Code Playgroud)

我试着像这样使用koa-static:

var serve = require('koa-static');
 app.all("/", function * (next){
        serve("index.html");
    });
Run Code Online (Sandbox Code Playgroud)

但那没用.然后我尝试使用co-views(我现在将html文件放在公共目录中):

var views = require("co-views");
var render = views("public");
app.all("/", function * (next){
    this.status = 200;
    this.body = yield render("index.html");
});
Run Code Online (Sandbox Code Playgroud)

但那没用.

那么有谁能告诉我我必须做什么?

javascript node.js koa

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

我应该在路由逻辑或流星模板助手中提供数据吗?

例:

我正在编写一个处理博客帖子列表的Meteor应用程序.所有博客文章都存储在名为"帖子"的集合中.我使用Iron Router进行路由.

我想向用户显示特定作者创建的所有帖子的列表.此列表将使用Spacebars显示.因此,我需要向模板提供数据.

问题:

据我所知,有两种方法可以做到这一点:

  1. 使用模板助手
  2. 使用我的路线的'data'属性

选项1示例:

Template.postList.helpers({
postsToDisplay: function(){
    return Posts.find({author: 'someAuthor'});
}
})
Run Code Online (Sandbox Code Playgroud)

选项2示例:

//Inside my route
data: function(){
    return {postsToDisplay: Posts.find({author: 'someAuthor'})};
}
Run Code Online (Sandbox Code Playgroud)

这两种方法之间是否存在显着差异?是否有理由偏爱另一个?有人提供更好的表现吗?

非常感谢您的回答!

performance routing meteor iron-router spacebars

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

libGDX:为棋盘游戏创建网格

我正在尝试使用libGDX创建一个简单的棋盘游戏.只是你对我想要做的事情有一个粗略的想法,想象一下Bejeweled(虽然我当然不那么复杂).

游戏涉及一个单元格为正方形的棋盘.根据级别,此网格具有不同数量的单元格,如6x6或8x8.我还想要包含一些漂亮的动画来切换两个相邻单元格的位置(比如Bejeweled).当然还需要在屏幕上显示一些按钮.

我的问题是:最好的方法是什么?我应该使用一个舞台,然后使用表格作为网格吗?那么我还可以轻松制作动画(使用通用补间引擎)吗?或者单独绘制精灵更好?还是有另一种完全不同的方法来接近这个?

谢谢您的回答,

干杯,

托尼

java android game-engine libgdx

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

html编号输入中的中心文本

我在html中有一个数字输入.我想将内部的文本(即输入)居中.我当然做到了:

text-align: center;
Run Code Online (Sandbox Code Playgroud)

哪种作品.但问题是.现在,当显示这些箭头时,文本居中.但是当箭头消失时,文本保持在同一位置,现在当然不再是中心.

没有箭头,文本不会出现居中.

html css html5 input

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

"一切都是中间件"

我正在学习Koa JS来构建小型Web应用程序的服务器端部分.看了youtube教程和阅读指南,我看到了句子:"一切都是中间件[在Koa]."

我已经阅读了维基百科关于中间件的文章,并且搜索了这个术语,我对中间件是什么有一个粗略的了解(在非常低级别的东西和高级编程之间的中间层).但我不明白"一切都是中间件"的主张在Web应用程序和NodeJS的上下文中意味着什么,以及为什么这是相关的.

middleware web-applications node.js koa

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

Meteor:匹配错误:Match.OneOf或Match.Optional验证失败(websocket)

我有一个使用Meteor 0.9的网站.我已经在OpenShift(http://www.truthpecker.com)上部署了这个网站.

我遇到的问题是,当我去我的网站(/ discover)上的路径时,有时(虽然不总是),Meteor不会获取所需的数据.相反,我得到以下错误:

在客户端:

WebSocket connection to 'ws://www.truthpecker.com/sockjs/796/3tfowlag/websocket' failed: Error during WebSocket handshake: Unexpected response code: 400 
Run Code Online (Sandbox Code Playgroud)

在服务器端:

Exception from sub rD8cj6FGa6bpTDivh Error: Match error: Failed Match.OneOf or Match.Optional validation
    at checkSubtree (packages/check/match.js:222)
    at check (packages/check/match.js:21)
     at _.extend._getFindOptions (packages/mongo-livedata/collection.js:216)
    at _.extend.find (packages/mongo-livedata/collection.js:236)
    at Meteor.publish.Activities.find.user [as _handler] (app/server/publications.js:41:19)
    at maybeAuditArgumentChecks (packages/livedata/livedata_server.js:1492)
    at _.extend._runHandler (packages/livedata/livedata_server.js:914)
    at _.extend._startSubscription (packages/livedata/livedata_server.js:764)
    at _.extend.protocol_handlers.sub (packages/livedata/livedata_server.js:577)
    at packages/livedata/livedata_server.js:541
Sanitized and reported to the client as: Match failed [400]
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我消除此错误并使网站工作?我将非常感激!

托尼

PS:我从未使用localhost获得此错误.

编辑:

造成问题的线就是这个(第41行):

return …
Run Code Online (Sandbox Code Playgroud)

websocket openshift meteor

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

libGdx:存在阶段时不会绘制Sprite

我确定我在这里遗漏了一些非常明显的东西,但我是初学者所以请不要压垮我.我的问题是我有一个视口小于屏幕的舞台.现在我还想直接使用Sprite.draw(SpriteBatch)在屏幕上绘制一个Sprite.Sprite和舞台的位置不重叠.舞台绘制得很好,但Sprite不可见.当我在render-method中注释掉stage.draw()部分时,Sprite是可见的.

代码:这是我的渲染方法:

@Override
public void render(float delta) {
    Gdx.gl.glClearColor(0.851f, 0.894f, 0.992f, 1f);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    camera.update();

    stage.act(delta);

    batch.setProjectionMatrix(camera.combined);
    batch.begin();
    stage.draw();
    logoSprite.draw(batch);
    batch.end();
}
Run Code Online (Sandbox Code Playgroud)

在这里,我初始化相机和舞台(stageHeight是一个只有3/5*屏幕高度的int):

camera = new OrthographicCamera();
    camera.setToOrtho(false, SwapItGame.WIDTH, SwapItGame.HEIGHT);
    stage = new Stage();
    stage.setViewport(1080, stageHeight, true, 0, 0, 1080, stageHeight); //The button part of the menu takes up 3 fifth of the Height of hte screen
    stage.setCamera(camera);
Run Code Online (Sandbox Code Playgroud)

在这里我初始化我的Sprite(精灵的位置值相当复杂,只是忽略它.它肯定在舞台之上):

        logoSprite = skin.getSprite("logo");
        logoSprite.setPosition((SwapItGame.WIDTH-logoSprite.getWidth())/2, (SwapItGame.HEIGHT-stageHeight-logoSprite.getHeight())/2 + stageHeight);
Run Code Online (Sandbox Code Playgroud)

是不可能在同一个屏幕上有一个Sprite和一个舞台?还是我做了一些根本错误的事情?

java android libgdx

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

如果密钥存在,添加一些哈希值?

我在Ruby中有一个哈希:

hash = Hash.new
Run Code Online (Sandbox Code Playgroud)

它有一些关键的价值对,比如说:

hash[1] = "One"
hash[2] = "Two"
Run Code Online (Sandbox Code Playgroud)

如果哈希包含一个键2,那么我想在其值中添加"Bananas".如果哈希没有密钥2,我想创建一个新的密钥值对2=>"Bananas".

我知道我可以通过首先检查哈希是否2通过使用密钥has_key?然后采取相应行动来做到这一点.但这需要一个if声明和多行.

那么有一个简单,优雅的单线程来实现这一目标吗?

ruby hash hashmap

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

Meteor:模板用数据渲染后的调用函数

我想在旋转木马里面显示一些帖子.对于旋转木马,我使用OwlCarousel.

    <div class="owl-carousel" id="featured-carousel">
        {{#each featuredPosts}}
        <div>
            <h2>
                {{postTitle}}
            </h2>
        </div>
        {{/each}}
    </div>
Run Code Online (Sandbox Code Playgroud)

我这样叫我的旋转木马:

Template.featuredCarousel.rendered = function(){
$('#featured-carousel').owlCarousel({
    loop:true,
    autoplay:true,
    autoplayTimeout:3000,
    items:1,
    smartSpeed:1080,
    padding:80
});
this.rendered = true;
};
Run Code Online (Sandbox Code Playgroud)

我得到的结果是Owl基本上认为我只有一个项目要在转盘中显示多个div.显然,在模板的#each-part完成之前或数据到达之前调用Template.featuredCarousel.rendered中的函数.

如何在完全呈现模板(包括所有数据)后调用实例化轮播的功能?

非常感谢您的帮助.

PS:我使用铁路由器进行路由,如下所示:

Router.map(function(){
this.route('home', {
    path: '/',
    waitOn: function(){
        return Meteor.subscribe('featured');
    },
    data: function(){
        return {featuredPosts: Featured.find({})};
    }
});
});
Run Code Online (Sandbox Code Playgroud)

PPS:我也尝试过使用加载模板,但这也无济于事.

templates meteor iron-router meteor-blaze owl-carousel

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

LibGDX:循环时使用SpriteBatches

我有一个2d的Sprite数组,包含大约.50个精灵.我想在render方法中绘制它们.我不知道什么会给我最好的表现.这些是我提出的两种选择:

batch.begin();
for(Sprite[] row : sprite2d) {
    for(Sprite cell : row) {
        cell.draw(batch);
    }
}
batch.end();
Run Code Online (Sandbox Code Playgroud)

要么:

for(Sprite[] row : sprite2d) {
    for(Sprite cell : row) {
        batch.begin();
        cell.draw(batch);
        batch.end();
    }
}
Run Code Online (Sandbox Code Playgroud)

我想第一种选择更好,因为我不会一遍又一遍地启动批处理.另一方面,我不确定在batch.begin() - batch.end()部分内循环是否很好.

或者是否有其他替代方案可以提供更好的性能

谢谢您的回答,

托尼

java performance android sprite libgdx

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