login 是什么东东
你如果用过腾讯的浏览器或者用嗖嗖搜过资料,或者在 QQ 上聊过相关话题,广告匹配在技术上都是可行的。
做成真正实时不仅需要较多工作量,而且在这个案例可能也没有必要。
我觉得 Long polling by Javascript 应该是比较合适的方案。
Long polling 很简单,就是用 setInterval 来不断地请求服务器。
setInterval(callServerOnStock(), 1000);
后台有更新就回一个信息,比如某商品已经被卖掉。然后前端根据这个信息把那个商品描黑。虽然不能 100% 避免冲突,但应该足够了,而且后台还是有另一层保护的。
你可以只在这个页面或 View 中设置 long polling。
Long polling 的最大弊端就是服务器负荷大,因为请求多。但在你的情况中应该完全不成问题,毕竟管理系统只有很少人在同时使用的,而且只在特定的页面。
其实不是很慢,而是 Heroku 的免费 Dyno 一个小时没收到请求就会睡眠。过了这个时间的请求就需要重新唤醒 Dyno, 需要较长的时间,所以你会觉得很慢。访问的人多了就不会。
@zyjloveher 不敢当,一点看法而已。
@zyjloveher 外部的数据库顾名思义肯定会有一个外部的 App 来操作它,不管是 Rails, PHP 还是其他。然后你这边又有一个 Rails app 来操作数据库。那谁来对数据负责呢?谁来保证一致性呢?用 JSON 其实就是 API 啦,这边 Rails 发一个请求到外部的 App, 然后外部 App 负责回复和操作数据。请求可以通过内部端口比如 localhost:3001, 并阻止外来请求。
外部数据库问题多多,关联太紧密。用 JSON 交换信息靠谱很多。
没有遇到过这种问题,都是分行贴上去的。不如试试老版本吧。
你都知便宜买不到好衣服,其实人都一样。
@levi0214 , 挺有意思的文章。不过我是不会用我的茶杯上网的:)
这种导航的设计给人带来固定导航的期待,但实际上是滚动的,感觉有点不太舒服。
导航链接和 breadcrumb 粘在一起,并且内容近似,感觉重复。
楼主好几次把 Javascript 写成了 Java, 完全不是一回事哦:)
node 就用 this, 浏览器既可以用 this 也可以用 window
@nagae_memooff , 如果你的变量最后要输出为其他 method 的参数,render_result result
, 设定默认值是好的做法,还可以节约条件。如果有好几个变量的话,更需要默认值了。你在 3 楼的表述不太清楚,直接拿出需求和原来的代码看能不能改进吧。
@coderek, 指导不敢当:)Service 放哪里都可以的。如果是为 controller 服务的,我一般放在 app/services/里面。如果关系不大就放在/lib 里面。
这个 fetching 的逻辑我觉得都可以直接放在 controller 里,彻底和 model 脱离。
# FeedsController
def create
# ...
if @feed.save
FeedFetchingService.process(feed)
end
end
还有 Chrome 里面的 Postman
我觉得做得挺好。界面很简洁,功能大致齐全。
粗粗浏览了部分代码,略发表一点点看法:
前端用纯粹 Backbone,代码简洁,组织得挺好。查看了一下,没有任何僵尸,所以不用种向日葵了...跑题...
Feed model 有点累赘,fetch feed 的逻辑不应出现在 model 中,单独用一个服务会比较好。
def fetch_feed
FeedFetchService.process(self)
end
现在更新 feed 的逻辑基于每个单独的请求。如果用了上述的服务,会方便将来直接从后台更新 feed。
Feed model 中使用 helper 并出现 render 逻辑不妥。
其他没细看,感觉总体挺不错的。
看你的第二步和第三步,你没有办法既用到 Rails 的功能,又脱离 Rails。
其实直接用 Asset Pipeline 没什么不好,版本管理也有,编译也有,环境变量也有,你还需要别的什么?
想要完全分离也不是不可以。完全用 Bower, grunt 等做一个静态网站就可以了,同时再用 Rails 做一个纯 api 服务器。然后静态网站直接呼叫 api。
对很多应用来说我不觉得后台很有必要。很多管理工作可以直接在网站上做。增加、删除、修改,这些都可以。服务器端设置好各种权限的权力,然后不同的链接/按钮就可以了。甚至可以都全部输出然后分别隐藏,这样 cache 也方便。
@hxygsh 我没有否定你的精神,我只是说你的水平还有待提高。其实教基础的东西反而需要比较高的水平,因为你不能教错误的东西。我浏览了一下你的教程就发现了三四个语法错误,中文引号都不提了。记学习笔记是好事,但可以等成熟一些再分享出来。
貌似很强大。不过不理解为什么要用 singleton 呢?API 不太友好的样子。用 class method 或者 instance 感觉会常见些。
没用过 Ember, 不过第一个例子的语法不是可以在 Handlebars 里面直接用吗?
楼主用了很多心。但还是不赞成你写教程,觉得你水平不够,而且现成的教程、文档已经够丰富的了,生命中宝贵的时间可以做更多有意义的事情。更不赞成用中文写教程,因为代码中其实是英文,要对应起来好像要学两种语言,而且中文没法准确对应。更更不赞成你用“经典”两个字。
文言文就看中文,其他的要看英文。翻译的不能看,编著的更不能看。
It's not about closure. Of course you can access global variables within a function.
The problem is, if you load javascript in head by default, when the script executes $back = $("#back_to_index")
, such dom elements is not loaded yet, so $back
is null.
Putting it inside jquery ready will solve this issue because at that time the element does exist.
“暂停”显然不合理。
可以把它理解为收益,代表增加的部分,就是 block 带来的部分。yield i
就是把 i 放入增加的部分里面来计算。在 Rails 里面没什么特别意思,是 Ruby 的。
@small_fish__ , this one https://github.com/marionettejs/backbone.wreqr, Extracted from Marionette to decouple modules. The pattern App.request
, App.vent
is very useful in my opinon. Allow me to reply in English as Pinyin is buggy on Opera in Ubuntu.
@lgn21st, 同感,那本书我也看过,很不错。本质是把 bbclonemail 加深理解。Brian 的视频也是很好的。