#19 楼 @huacnlee 因为之前有很多帖子提到这个问题,甚至有详细的对比 Turbolinks 和 React 的渲染速度对比,然后回复就是一片声的赞扬 Turbolinks 的渲染速度。拿服务器渲染和客户端框架渲染速度作对比,就好比用一个 HelloWorld 裸框架和一个提供了很多基础设施的高级框架进行速度对比一样。
这个对比很容易产生一个社区误导:React 速度不行。(我已经在那个帖子看到不少了)
你这个帖子只是略微提一下,那我也是略微提一下(我认为你不要再提这个了,尤其是 Heroku 这种例子,只会让社区更加不理解 React)。
以上,只是我的个人意见,并非抬杠。
再看你的原话:
所以鉴于上面的情况,这是有意义的,因为网络质量是不稳定的(例如,我的演示代码部署在 Heroku,首次打开以后几乎感觉不到 Heroku 的慢了),而且每个用户不同。
强调了 React 在网络质量不稳定下的意义,至于其他的意义,只字未提。你说我理解错了,那就是说需要我脑补其他问题。
我针对的是这个
在网络质量好,服务器带宽足的场景下,大多数时候 Ruby China 这种 HTML 结果直接返回 + Turbolinks 的优化,打开的速度是更快的,因为前端几乎是无运算的,本身 Rails 做好了,单个页面 Response Time 在 100ms 左右,剩下的时间都是网络传输了(大篇幅 HTML 代码)。同时 React 应用典型的问题是首次打开慢。 所以鉴于上面的情况,这是有意义的,因为网络质量是不稳定的(例如,我的演示代码部署在 Heroku,首次打开以后几乎感觉不到 Heroku 的慢了),而且每个用户不同。
1.Heroku 的网络质量不稳定是国情,现在做网站一般多数不考虑这种情况
2.大篇幅 HTML 代码 vs. React 采用的 API 相比,网络传输节约的量微不足道
结论:“所以鉴于上面的情况,这是有意义的,因为网络质量是不稳定的”
你的意思是 React 的意义,就在于网络质量不稳定,节约流量。这个意义不大,现在网络已经不是以前的网络了,我觉得你考虑下 react 是不是简化了你的代码逻辑,易扩展,易维护,这个更值得分享,让我们更清楚哪些情况下更值得使用 React,哪些情况下不值得使用(从你的描述来看,很容易得出结论:如果应对网络状况不佳的用户,React 很有意义)。
现在很多讨论都说 react 渲染和服务端渲染(Turbolinks 本质上还是服务端渲染)速度的比较问题。其实我认为这个讨论没有太大的实质意义:react 试图降低的是前端复杂性,而不是数据传输的大小(react 做 api,减少了 html 标签之类的数据传输微不足道,也不是 react 的重点,其他前后端分离的框架一样能做到;至于 heroku 什么的那是中国国情,也没什么代表性意义)。
比如一个界面组成超复杂,交互逻辑很多,工程师都绕晕了的情况,react 可以极大简化代码逻辑,更易维护。而 ruby-china 论坛这种网页前端复杂性停留在传统 web1.0+ 时代的网站来说,并不是他的应用场景。
turbolinks 比 react 快,结论:服务器渲染比客户端渲染快。这个意义是什么?
#14 楼 @hooopo 正是如此,我觉得大家的讨论一开始就偏离了,CSRF 是“跨站请求伪造”,API(尤其是楼主所说的 APP)根本就不存在“跨站”的问题。所以回答应该是:不是接口需要不需要 CSRF 防护,而是接口完全不能做、没办法做 CSRF 防护。然后才应该是讨论怎么保证 API 的安全性,比如 https 防监听、token 认证之类的。
帮大家复习下:CSRF 是一种依赖 web 浏览器的、被混淆过的代理人攻击(deputy attack)。
请注意加粗字体。
总的来说,这是楼主一个对 CSRF 完全缺乏了解,只是囫囵吞枣知道这是一个安全防范措施的初学者提出的一个伪问题,所以务必首先要纠正这个问题本身。也就是说,这个问题是一个病态的问题,错误的问题,我觉得有必要澄清这一点,防止以讹传讹
#2 楼 @279959599 如果是同时要求这两点,那就是矛盾的。但是文章中否定这两点,那就没问题。意思就是说,写程序既不能草率了事,又不能吹毛求疵,这就是所谓的中庸吧。
高中毕业买的也是 NEXUS ONE,有着 GOOGLE 的信仰 但是在大三换了 IP5S,这条路就断了
因为用了 iphone 就断了做安卓程序员的念头,楼主我也是醉了
#2 楼 @imwildcat 没有让你将这个作为最终解决方案;测试过这个之后看看,就可以明确是不是这个原因导致的,如果是,你再考虑解决方案。
楼主我遇到过类似的情况,但是因为你的环境我不是很了解。是不是 Rails5?如果是 Rails5 的话,请定位到:
config/initializers/new_framework_defaults.rb
将
Rails.application.config.action_controller.forgery_protection_origin_check = true
改为
Rails.application.config.action_controller.forgery_protection_origin_check = false
看问题是否得到解决。
说到底,这件衣服是从她手里还到了店里,也就是说她从 100% 占有变成了 50% 占有,将其中 50% 的价值转让给了你老婆。
所以你老婆需要为其中的 50% 的价格支付给她;她不能理解的就是为什么 70 块钱的东西交出来了,只拿到了 35 元,而事实上,你应该告诉她,衣服还在店里,她的另外那 35 元在衣服上(换句话来说,这件衣服如果卖出去了,挣的钱,她不还是有份吗?)
合理解释就可以了。
支持下老同事 @rubyu2
#5 楼 @sheisnuclear 这个月 15 号,刚刚离开合肥回杭州,合肥招不到 Ruby 程序员,其他语言的程序员水平也较有限,加上家里在杭州,就回杭州了。合肥总体而言,这几年 IT 发展看势头都不会太好。
想问下 byebug 有哪些方面让你排斥?
这个帖子的意义在什么地方?
楼主大大的坏,标题是个“转载”,意图躲避火力,点进去转载地址一看,正准备战斗,尼玛,不还是你自己吗?
你贴的代码明明是修改课程的,哪里是添加课程了?
而且这个是 bootstrap 弹出对话框,跟 ajax 无关,只是本地的一个页面实现而已,地址栏当然没变化。你应该关注的是弹出来的对话框的代码。
#10 楼 @uestc_bird 我觉得你如果真的看了《Ruby 元编程》,并且看懂了的话,就不会提这种问题。
里面说的非常清楚,在 Ruby 里面,类也是实例,是 Class 类的实例,在 Java 也是一样,不知道有什么好困惑的。
你的问题用层层递进的三段式就可以回答: 1)Ruby 中一切都是对象(object),对象都是类(class)的实例 2)依据第一条,既然一切都是对象(object),那么类(class)同样也是对象,它们都是 Class 的实例 3)依据第二条,既然类也是对象,那么 Class 也必须是对象,它是 Class 的实例 请注意class和Class的大小写不同
你唯一困惑的大概是 Class 是 Class 的实例,这个叫“自指”,Java 里面也常用,典型的单例模式:
Class MyClass {
private static MyClass myClass;
public static MyClass getInstance() {
if(null == myClass){
myClass = new MyClass();
}
return myClass;
}
}
在这段代码中,MyClass 暂时还不存在,怎么能在自身的代码中生成自己呢?其实就是一个占位功能来自指而已,编译器怎么实现是它自己的事情,你能理解就好了,还用得着看源代码深究?
如果对 Ruby 元编程其他内容没看懂的,建议看我的另一篇帖子:分析 Ruby 代码的执行环境
我觉得前提就不成立,谁说“国企程序员往往被人鄙视和不屑”?依据是什么?
#67 楼 @lyfi2003 dotenv 明明在首页清楚地写道:
Credentials should only be accessible on the machines that need access to them. Never commit sensitive information to a repository that is not needed by every development machine and server.
简单翻译
凭证应当遵循“谁访问,谁存储”的原则。永远不要将并非开发所需要的敏感信息提交到代码仓库中。
怎么在你口中就成了:
dotenv 建议开发者提交一些配置到 .env, 和提交 .env.production 之类的,不是配置的最安全做法,只要你提交过敏感,一旦源代码泄漏,就有黑客能轻易攻击你。所以我说安全性会降低。
我就是遵循 dotenv 的建议,将敏感信息存储在部署服务器上,将非敏感信息提交到代码库。你自己实践方式不对,却说作者建议你把.env.production 提交到仓库,这样不妥吧?
Hybrid 不是 Hybird...