我对此有点困惑,我觉得这个问题有点愚蠢,但我想理解它.
所以,假设我正在使用客户端Web框架,如Backbone,Angular或Durandal.该框架包括路由.
但我当然还有一个服务器用于数据库的东西,等等,它也有路由.
我现在的问题是:
何时使用"客户端路由"或"服务器端路由"?
如何"决定"是否已在客户端执行路由或请求是否首先发送到Web服务器?
我很难想象这一点,因为客户端可以在服务器了解该请求之前进行路由.
如果有人能解释这两个路由系统如何协同工作,我将非常感激.
PS:我没有包含代码示例,因为我不是在寻找有关特定框架的答案,而是关于一般的路由过程.
我想要做的是在调用索引路由(即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)
但那没用.
那么有谁能告诉我我必须做什么?
我正在编写一个处理博客帖子列表的Meteor应用程序.所有博客文章都存储在名为"帖子"的集合中.我使用Iron Router进行路由.
我想向用户显示特定作者创建的所有帖子的列表.此列表将使用Spacebars显示.因此,我需要向模板提供数据.
据我所知,有两种方法可以做到这一点:
选项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)
这两种方法之间是否存在显着差异?是否有理由偏爱另一个?有人提供更好的表现吗?
非常感谢您的回答!
我正在尝试使用libGDX创建一个简单的棋盘游戏.只是你对我想要做的事情有一个粗略的想法,想象一下Bejeweled(虽然我当然不那么复杂).
游戏涉及一个单元格为正方形的棋盘.根据级别,此网格具有不同数量的单元格,如6x6或8x8.我还想要包含一些漂亮的动画来切换两个相邻单元格的位置(比如Bejeweled).当然还需要在屏幕上显示一些按钮.
我的问题是:最好的方法是什么?我应该使用一个舞台,然后使用表格作为网格吗?那么我还可以轻松制作动画(使用通用补间引擎)吗?或者单独绘制精灵更好?还是有另一种完全不同的方法来接近这个?
谢谢您的回答,
干杯,
托尼
我在html中有一个数字输入.我想将内部的文本(即输入)居中.我当然做到了:
text-align: center;
Run Code Online (Sandbox Code Playgroud)
哪种作品.但问题是.现在,当显示这些箭头时,文本居中.但是当箭头消失时,文本保持在同一位置,现在当然不再是中心.

我正在学习Koa JS来构建小型Web应用程序的服务器端部分.看了youtube教程和阅读指南,我看到了句子:"一切都是中间件[在Koa]."
我已经阅读了维基百科关于中间件的文章,并且搜索了这个术语,我对中间件是什么有一个粗略的了解(在非常低级别的东西和高级编程之间的中间层).但我不明白"一切都是中间件"的主张在Web应用程序和NodeJS的上下文中意味着什么,以及为什么这是相关的.
我有一个使用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) 我确定我在这里遗漏了一些非常明显的东西,但我是初学者所以请不要压垮我.我的问题是我有一个视口小于屏幕的舞台.现在我还想直接使用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和一个舞台?还是我做了一些根本错误的事情?
我在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声明和多行.
那么有一个简单,优雅的单线程来实现这一目标吗?
我想在旋转木马里面显示一些帖子.对于旋转木马,我使用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:我也尝试过使用加载模板,但这也无济于事.
我有一个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()部分内循环是否很好.
或者是否有其他替代方案可以提供更好的性能
谢谢您的回答,
托尼
android ×3
java ×3
libgdx ×3
meteor ×3
iron-router ×2
koa ×2
node.js ×2
performance ×2
routing ×2
client-side ×1
css ×1
game-engine ×1
hash ×1
hashmap ×1
html ×1
html5 ×1
input ×1
javascript ×1
meteor-blaze ×1
middleware ×1
openshift ×1
owl-carousel ×1
ruby ×1
server-side ×1
spacebars ×1
sprite ×1
templates ×1
websocket ×1