是不是少了一点存在感 ლ(゚д゚ლ)
来这里的本身就是支持node,如何撕
node 后端妥妥的
前端最近两年估计也要分流派了,会有注重页面编写的,有偏后端的
有啥可撕得…有这功夫还不如多看看代码, 思考思考对方如何实现, 开拓开拓眼界…
个人还是觉得前端人员就老老实实做前端,我个人还是比较崇拜张鑫旭大神的,他对css的理解很深,node更适合后台开发人员来学习,一个之前是写页面写客户端的人来做node架构,你觉得靠谱么?node给了前端开发人员一个接触后台的机会,而理解一门后台语言来说,前端开发人员和多年工作经验的后台开发人员所看待node的角度是不一样的,也有一些后台大神亲自跑过性能,说node并没有吹的那么神,我觉得,如果项目要用node,那必须架构层是一个经验老道的后台开发人员,具体代码可以让前端开发人员来做,人类社会是一个群体合作社会,没有多少人前后端都精通,十个全栈九个坑
说起微博,我比较同意啊当的观念,但他说话方式有点偏激,惹了很多人
我觉得是时候发展一下咱们的官方APP应用了😂因为想要撕逼就要随时随刻都能回复~
来自酷炫的 CNodeMD
撇开技术不谈,那个阿当连基本逻辑都不过关
@xiaolongXL node最好的归属就是前端工具链以及作为后端和前端之间的桥梁
node 已经被抬出场外了,只从tj 去研究go node这几年没什么大发展, 5.0出了也没什么用, 看看前端react, 过2年 前端基本就是react了. html 和css都不用学了. node是啥, 不过是php ruby 变种
没想到这么简单的东西总是会不断的被炒。
node只是一个运行环境。 只不过这个运行环境是为了高性能服务器而创建出来的。 所以node首先是服务器环境。也就是通常所说的后端。 node从创建之初来看本身跟前端没有任何关系。
但是因为目前几乎所有的前端工具都是建立在node之上的,所以node在前端生态圈里有很重要的作用。 这是几个很显而易见的事实,但是如果有人对于概念不清,就可能会混淆前后是什么,从而导致对node的认知错位。
关于如何区分前后端,可以参考文章: Web开发的前端与后端的界线在那里
难道唐少想撕?
From Noder
那个阿当太逗了,这个时代任何东西都在高速发展,如果连一点求知欲都没有,很容易就会被这个时代抛弃。基础固然很重要,但是不会这些先进的生产工具,生产效率没有提高起来,又哪有时间花在其他事情上。多关注,多学习你所在行业或者相关行业的发展,准没错。至于Node,是整个前端的关键,发展空间非常大,其他大厂们把它弄得更好~~
搞个话题,让大神撕逼,我们围观。<br/><br/><a class=“form” href=“https://github.com/shinygang/Vue-cnodejs”>I‘m webapp-cnodejs-vue</a>
真阿当药丸。是我瓜皮说的。
百花齐放,百家争鸣
@soliury 不想不想。。。。撕不动。。
@XueSeason 果然也开始了
静静的看你们撕
反正我觉得这次撕逼,毫无意义啊
作为一个有逼格的社区,撕逼好么?
看来年终奖没发好。
就一sb,说比如用node做伪服务端路线。。。。笑死了。。。。
无数人黑node,范凯算一个,可是当你真的足够了解的时候,所谓的黑是因为没用明白,或者当时某种场景,承认不承认还重要么?
架构本身就是因地制宜的,演进的,so。。。。扯那些都没有用,解决问题才是王道
悟空给唐僧画了个圈,有人给自已画了个圈
@jinwyp 能跟ruby和php相提并论,难道这个技术还不算成功么。。
有那个撕逼的时间还不如多敲点代码,毕竟实践才是检验技术的标准
真阿当的话有些极端,有些人听了可能会不舒服,但他说的问题有一部分是正确的。大家不要因为忙于站队而忽略了技术本身交流。
他强调基础很重要,基础牢固了,这框架那框架本质上都一样的。基础不牢靠,就会被一个个看似牛逼的技术推着往前走,一般来说,越是基础不牢靠的,越有依靠某种新技术“翻身”的倾向,也越喜欢追新技术。阿当强调基础的重要性肯定是没有错的,但基础和潮流并不矛盾,两者可以并行,但如果只追求潮流,忽略了基础,显然是非常有害的。阿当错在的将两者对立起来了,用基础去否定潮流。
前端其实是很无奈的,标准,平台,语言都是个大杂烩。前端很多看似潮流的东西本质上就是在填坑而已,所谓的潮流更大程度上是拼爹,某个技术有个好爹,大家便趋之若鹜了,但有多少人真真切切的思考过这个技术的本质和背景呢?这种浮躁的暗流才是需要我们警醒的,大家都想当弄潮儿,但潮水终将退去。放下成见,真诚的交流才是正途,撕逼对大家都没好处。
大家对javascript这门语言怎么看?很多年前刚接触的时候,觉得挺简单方便的,但用得越多,反而觉得越来越难了,这是一门典型的入门容易精通难的语言,这种模式的语言还是挺招人喜欢的,跟暴雪的游戏是一样的道理,大家都能玩,有群众基础,又有很好的区分度,容易产生大神。大神 是怎么来的?是坑出来的,坑越多,大神就越多。ES6出来后,我第一个感觉就是javascript看来是走跟c++一样的道路了,原来的坑还在,又默默的挖了不少。新加入的各种语法糖,简直是各种门派的大杂烩啊,已经集合所有编程范式,这是要召唤编程小怪兽的节奏啊。。。
如果我也极端点,我认为javascript要重新设计,推倒重来,这个星球上还找得出其他像javascript一样的语言,被各种重新设计,各种编译的?但我并不极端,javascript是工程产物,是要权衡要妥协的,他不能跟过去一刀两断,他也无法自己的选择未来,他只能走一步算一步。这才是前端悲哀的根本,没人能改变。大家继续去追新技术去吧。。。
真阿当的问题是无知,而不是什么强调基础。 交流是必要的,不懂装懂则是可耻的。 自己知识结构陈旧被时代抛弃还找理由。
基础与潮流从来没有矛盾过。追求新技术从来不会影响你的基础。 那些追不上新技术的人才是基础有问题的人。 能追上新技术人一定基础没问题。 新技术从来不会向基础好的封闭。
真阿当这些人对前端的了解估计也只是皮毛而已。 连sass都不知道,不接受的前端还算个毛的前端。 这种人写书一定会坑死不少人。 这也是我从来不看国内技术书的原因。
@calidion 阿当竟然如此不堪?我表示很震惊啊,我大约知道了为什么这么多人要喷阿当了。
@coordcn 在理啊
@coordcn
首先是分不清node是前端还是后端,
然后是不知道reactjs的应用场景
再次是抱怨新技术
最后发现他什么都不懂。
被ror坑了,却没有发现ror的好处。
并且也没有能力解决ror所出现的问题。
然后发现丫是蟒蛇教的教众,基本可以确认其带有很强的宗教属性。
然后攻击github star多的人。
然后拿ant这种不成熟的前端方案说事(按这种思路,我也可以声称几年前做过跟reactjs类似的工作),
总之,你看完他的博文就知道他的水平了。
然后攻击nodejs,他根本不知道nodejs的优势是什么,瞎攻击。
@calidion 不好意思,我也攻击nodejs的,我黑得比他厉害。。。
如果他是蟒蛇教的,我就是大C教的,跟我一起大声读:
C语言是全宇宙最好语言。。。。
lua是全银河系最好语言。。。。
而javascript只能统治太阳系。。。。
node在我眼里只适合做前端工具链,做做模板渲染,做做小项目。node就是大前端的命,充其量部分替代PHP,JSP。语言是硬硬伤的,具体原因我也说过了,除非javascript推倒重来,但这并不可能。
另外看到大城小胖吐槽阿当的代码,下面各种吐槽,又有一个贴了些c代码,对于那些吐槽魔性代码的人,我建议去看看nodejs最初几个版本的http_parserd代码,再看看现在的http_parser,你没看错,各种goto,各种魔性,各种长函数,但我要告诉大家的是,用c些parser就是这个尿性,代码首要是正确,然后才是好看,有的时候好看也要给性能让位,综合各种要求之后,有些魔性其实是必须的。见多了,也就不会奇怪了,没有字典的语言可不是得一个一个字符去比较?当然阿当python那么用也不是太妥当。
@coordcn 我觉得你去lua社区黑node应该效果更好,哈哈
@calidion 棒棒哒,你说的是最中肯的,欣赏你这种有理有据的回复
@i5ting 看到第二个赶我走的了,这里死粉那么多,还怕我黑?
我黑我的,你觉得不对,可以讲道理,你敢我走,就没有道理了,这样显得你不够包容。
@JacksonTian 我说的是反话,没看出来吗? 未来肯定是nodejs + angular2 前后端集成一套的大而全的框架. 有点像meteor,那样. 但前后端可以分离,不想meteor 集成的太紧密.
至于react 今年就不会火了, 这东西如果真成为前端第一的框架不过是又一个flash, 各大厂商不会让react好过的.learn once ,run everywhere 肯定有一次成为笑话.
@jinwyp react 那是【learn once, write anywhere】
@coordcn 没这意思,看你们黑来黑去的也挺好玩的,哈哈
@alsotang 理想很美好啊,和全栈是一样的
-
小项目如何定义?
-
大前端如何定义?(个人比较反感大前端的提法,估计又是前端盲提出来的) 即有大前端,那必定有小前端? 根据我的看法一定是一些培训机构的无良培训师提出来的。 当年div + css的提法到现在还在毒害一些小白,现在又出来大前端说来毒害小白。
-
basic语言一样可以写出来word这样的强大功能的软件。
语言有领域强弱这是没有疑问的,问题在于你知道他们的强弱在那里吗?
根据我所了解的情况,node语言的核心优势有三个:
- 高性能的异步网络IO
- 可实现前后端一致的语言环境,全栈化
- 基于npm包机制社会化协作机制。
2, 3 目前没有任何一个语言是可以超越的。
node/js的劣势是:
- 异步导致回调过多(目前async/await机制算是一个相对比较终极的方案,只要解析器完善,后继就不会成为大问题)
- 大部分后端开发人员对于异步场景不熟悉
- 时间过短,生产环境的成熟度不够。
至于语言层面的问题,我反而觉得是最小的。 不管是ES5,还是ES6都可以解决绝大多数的问题。 用不用transpiler本身都是无所谓的。
我想说的是,你对node还欠了解,你对前后端还没有很清楚的划分。 你可能也不懂php当年比nodejs更简陋。 如果你了解过CGI,你会发现CGI简直无法进行象样的web开发。 所以扯什么nodejs只能做模板之类的话,表示你离懂nodejs还有距离。
我本身算是做后端的,觉得node算是跨界的东西吧,最适合的地方还是最后一步的整合服务,给最终用户交付。
发这个图会不会被打。。
我只是来活跃下气氛
采用NodeJS轻松套页面 是我作为一个后端开发(Java为主)的一点看法,仅供参考
老妈开发了新菜,好吃,连吃了几天;妈,我们能换下口味吗,又开发了新菜,又连吃了几天……
日子还是要过的 哈哈
我乱说的
我觉得越来越多的人黑node 说明其他语言的从业者开始害怕了 是不是这个道理
看你们说了这么多,感觉这次集体大撕逼毫无意义
来自酷炫的 CNodeMD
@calidion 你了解过我说node哪些不好么?你就断定我对node欠了解?那我是不是同样可以拍脑袋断定你其实才是对node欠了解的,是属于刚学了点皮毛,还没来得及踩坑的那种。
小项目就是三五个人,甚至一个人就能从前干到脚的,也就是所谓全栈能干完的。所以我认为一些外包项目,创业原型比较适合nodejs干,这样的确可以节省成本,团队可以由个把大神带起来。有的人可能要拿什么阿里,paypal来反驳,这些不都是大项目么?这些的确都是大项目,但人家把nodejs就是替代了原来PHP,JSP干的活,只是个模板渲染器而已,核心的还是java干的。这种模式也是大前端的由来,大前端恰恰是这些应用node的大公司提出来的,nodejs就是干这活的。人阿里人说至少在短时间内看不到node可以替代java的希望,全栈呢?全栈呢?全栈呢?说好的全栈呢?其实并没有。在小项目里玩玩还可以,大项目里并不行。顺便说一句,如果阿里的页面不需要在服务端渲染的话,node层都不是必须的。
不行主要还是语言方面的原因,javascript都已经跟不上前端工程的发展了,还想将他大规模的应用于后端?前端看似热闹,新技术层出不穷,其本质大多数是用新瓶装旧酒在填坑,大多是解决前端不成熟造成的问题。要解决这些问题,最极端,最爽快的是推倒重来,这样就没有历史包袱,语言就能重新设计以满足现代前端的要求,javascript就能真正的符合工程化要求,但从现在的条件来看,这并不可能。世界上还有哪种语言如javascript这样语法被各种重写,各种编译?不要告诉我这些才是真正的创新,前端大部分精力恐怕都花在了这种无奈,无聊的事情上了,这恐怕才是很多人厌恶前端新技术出得太快的根本原因,这边还没整明白,那边创造了一门新语言,新技术。从这个角度来讲,真阿当喷得是有道理的,人的时间和精力毕竟有限,但很多人不自觉的把时间都浪费在了追逐新语言,新技术上,真正的编程功底却是要打问号的,文字可以吹牛逼,github上的代码却不会说谎。
1.高性能的异步网络IO
nodejs刚出来的时候提高性能还行,现在来讲高性能?跟谁比?跟PHP比么?那也得跟老版本的PHP比。现在比较聪明的都不提高性能了,同样用v8,nodejs这种纯回调的竟然不如fibjs性能好,跟go差距也很大,这高性能的梦恐怕至少是三年前做的了。不知有汉,无论魏晋啊。。。
2.可实现前后端一致的语言环境,全栈化
我讲两句话与大家分享下:
nodejs最不缺的是人,最缺的也是人。
不要以为你会javascript你就是全栈了。
javascript这种入门容易,精通难的语言。这个或许 @i5ting 是深有体会的,他为此还发过文,吐槽过。大家最后给出的建议是制定团队统一的编码标准,严格执行,不行的请出团队。javascript语法越来越膨胀,很多人,很多团队,其实只是在用他语法的一个子集,这从一定程度上缓解精通难的问题。大家在一起还是以高效完成项目为中心,至于回字有几种写法交给孔已己去研究吧,但javascript偏偏就是这种容易产生孔已己的语言。。。大家还在研究继承有几种实现方式么?我觉得没必要研究了,定死一种写法,其他都是错的就行了,简单粗暴,效率才会高。
3.基于npm包机制社会化协作机制。
碎片化问题是个大问题,javascript这种语言的特性决定了他特别适合做一些小而美的项目,nodejs的包茫茫多,真正精华的有几个?我用某包,某包用另一个某包的某版本,但另一个某包的某版本有bug,但新版本已经修正了。这个时候你要不但要跟某包,另一个某包也要跟,大家可检查下大家所用包依赖树,如果这就叫社会化协作的话,我宁愿稍微封闭点,至少做一下官方推荐和审查。事实上我们经常出现在同类包中不知道选哪个的尴尬,技术选型的能力已经能区分菜鸟和大神了,就凭这点,一些大神心里要暗爽不少次了。。。
1.异步导致回调过多(目前async/await机制算是一个相对比较终极的方案,只要解析器完善,后继就不会成为大问题)
没有显式异步的异步才是终极的,任何显示异步方案都会存在传染性问题。有的人担心没有关键字,不好区分,那函数加个async修饰不就行了?这比非得在函数外围做包装,然后再在编译阶段再转换要简单直接得多。
2.大部分后端开发人员对于异步场景不熟悉
开发nodejs的在你看来是后端还是前端?你这话说的,后端怎么就不熟了?没见人吐槽nodejs起了个大早,赶了个晚集么?很多后端只是没有太高调而已,当nodejs还陶醉在回调坑里的时候,人就async/await了,人就coroutine/goroutine了,人就在用同步代码写异步程序了。建议你去看下openresty,了解下别的语言怎么玩异步的,如果对nginx不熟悉,看不明白,你如果对node理解真的比较透彻的话,你也可以看看我的实现 https://github.com/coordcn/LuaIO ,代码量比openresty少得多,是基于libuv的,你既然自觉对node的了解比我好得多,应该能看懂怎么实现的吧。
3.时间过短,生产环境的成熟度不够。
不成熟的并不是环境,而是人。nodejs最不缺的是人,最缺的还是人,即便是小项目,能够做全栈也是极少的,不要以为自己会javascript就是全栈了。
@coordcn 看来你真是毛都不懂。 一方面不懂前端,一方面不懂全栈。 全栈是指技术所有覆盖的广度,并不是马上应用。 前端与后端分不清是通病,我之前已经与人讨论过。 大前端的说法本身是不成立的。既然你认为我不懂,你给出一个明确的大前端的定义? 我看你连全栈是什么都不懂。
-
关于性能
你拿出来数据。说事。我说的内容是已经有数据证明了。 你的东西还没有见到过数据。 不管是PHP老版还是新版,有数据表明PHP的性能超过了nodejs? -
关于包机制
那么麻烦你举个已经解决这类问题的包机制。如果没有,这种抱怨只能表明你的无知。 只要你证明有比npm的包机制更好的,我明天就可以换成他作为开发言语。 你的luaio有比npm更完善的包机制吗? go有吗? 按你的意思。linux有这么多分支,根本不如windows有价值?你会比较吗? 你怎么不用oc写服务器? 那个真阿当说过用ant作前端工具链,你也可以用lua做一个哦。我看好你。 不过,对于你能不能做起来,我想说,我得静静。下面很多内容我就不想驳了。呵呵。
目前利用nodejs做很多前端工具链的工作,刚好说明js语言本身有优势。 一方面不需要重新学习新语言 一方面可以提高效率集中精力做事情。 不管是前端还是后端都能很好的基于js语言沟通,降低了沟通成本。 既使不是人人都是全栈,也是利大于弊。 对于追求更高性能的后端技术,使用go, c/c++, java完全没有问题, 但这并不影响node是后端,node可以提供前端工具链,node可以更好的辅助前端开发。
这种优势在浏览器能支持多种语言解析DOM前,别的语言不可能有的。
我是来和稀泥的,oc写服务器是不靠谱的,但是swift写服务器是靠谱的,目前已经有类似express这样的了,而且支持linux,所以未来是一个不错的方向的
@i5ting 来看看这个有理有据的讨论吧。这可是你对这位朋友的评价,反正我是各种不懂,各种不懂。。。
1.关于性能
https://cnodejs.org/topic/5672c03fcd926feb0c0c8ebc
我以为你看到 @xicilion 的测试了。
LuaIO我自己测试下来,单进程裸socket性能是ndoejs的两倍,源代码就在那里,github能上了,你己编译了跑一下就清楚了。
./configure之后进/out目录 make一下就行,生成的是debug版的。linux3.9以上内核支持多进程。
2.关于包机制
linux碎片化问题大家讨论得还少么?
npm不但存在碎片化问题,更存在包质量和包选择问题,如果这些对你来说,都不是问题,你已经可以被称为大神了。
oc是什么鬼?不懂啊。。。
LuaIO现阶段还没有好的包管理模式,但LuaIO不好,并不代表我不可以说npm不好,同样linux碎片化了并不能证明npm碎片化是正确的。
你这种预设我不懂的讨论模式已经封死了大家交流的路径,继续下去也没什么意义了,建议还是多了解其他框架,其他语言的实现,有对比才知好坏,否则容易以为自己掌握的总是这世界上最好的。
围观
ES5/ES6的演进确实反映了一些问题, 还有npm3与bower的争论也是反映了一定的问题。 ES6/ES5的演进,表明js语言越来越后端化,工程化。 npm3与bower的争论表明前端与后端的包管理是不是要分离开的问题。 有人支持合并,我更倾向于分离。 但是我希望两个阵营都能很好的发展。 有了A不代表B就是没有价值的。
有了PHP还可以有nodejs. 有nodejs还可以有go. 当然也可以有luaio。
但是前提是你能分清楚各种的优劣势。 不同的语言与环境一定有不同的优势与劣势, 有时候有客观数据,有时候更多的是选择的问题。 最重要的前提不是你选择了什么,而是你知道选择后会面临的问题。
我并不试图说服任何人,但是我希望讨论的前提是有个清楚的概念。 别拿一个错误的,不可验证的概念糊弄人。
作为一个尝试,我肯定会支持luaio。 但是我希望luaio不要试图在没有发展成熟前靠攻击nodejs吸引眼球。 虽然我有一些对于语言的基本判断,但是我尊重选择的自由,我不会反对别人创新或者重复造轮子。 但是前提是请别在没有数据时就胡吹。
我比较尊重以下几点: 1.概念清楚 2.数据证明 3.逻辑通顺
如果我的语言过于犀利,我在此深表歉意。
减少前后端的沟通成本,并不是在模板上减少的。 不要曲解我的意思。有没有模板都是降低了沟通成本。
我没有同意过你的所谓小项目全栈。 全栈就是全栈,跟项目大小是无关的。
前端工具链我从来没有否定过。 node本来就是提供了很好的前端工具链。
- 我没有说过nodejs的性能是最高的。
同时我根据你的语言理解似乎是你想证明新版的php 性能比nodejs高。 至于有语言有框架比nodejs性能高我一点也不怀疑。nodejs刚出来的时候就不是性能最高的。 要想性能最高肯定是C了。 - 关于包机制不要耍流氓
我只要你给出来个经npm包机制更好的就服了。讨论其它的没有意义。 关于包机制的比较,你可以看下。希望你能对lua的包机制作出更大的贡献。 http://blog.versioneye.com/2014/01/15/which-programming-language-has-the-best-package-manager/
全栈只是个泛称吧,不然就只能传说了
我更多的时候在吐槽的是javascript语言,从某种意义上说,nodejs成也javascript,败也javascript,这门语言是工程的产物,设计上瑕疵太多,前端很多的坑,都跟这门语言有很大关系。那么多衍生的语言就说明了这个问题,大家都想用自己的方式避坑,各种新语言,各种编译,最根本的还是语言本身的问题太多。
但我没有有否定javascript的意思,我恰恰是希望他可以变的更简单,更统一。我也没有否定nodejs的意思,但是我认为有不好的东西就应该批评,没有讨论,没有不同的声音,哪里会有技术的进步?显式异步已经被证明对编程是有影响的,从最早的回调,到现在的generator,再到async,这个发展路径其实就是证明了最终的结果,那就是没有异步的异步,就是形式同步。我写luaio是受fibjs的启发,后来又接触了openresty,这些前辈都证明了形式同步是可行的,很多人习惯写同步代码,那形式同步如果被证明是可行的,我们还要显式的异步做什么?人人都享受异步带来的好处,那是一件多么惬意的事情?
我否定的是一些定势的思维,认为前端这种折腾就是创新,就是理所当然的,是不可批判的,谁批判就是不懂,就是不思进取,不跟随潮流。我否定的是某个技术容不得不同的声音,觉得是自己是最好的,宗教式的信仰。nodejs社区封闭和自我陶醉才是最危险的。
我并没有攻击nodejs的意思,更不是黑,我提出的问题都是真实存在的,LuaIO本身依赖libuv,libuv又是nodejs的核心,nodejs发展得好,LuaIO才有可能好。你如果不再次提性能,我也不会拿性能来比较,这种单纯的性能数据其实并没有什么卵用,项目的可用性,稳定性才是根本,LuaIO跟nodejs,openresty,fibjs是没法比的。所以我不会通过攻击nodejs来宣传自己的项目。
我说话也有比较冲的地方,我向你道歉。技术交流,不伤和气才是根本,不过程序员大多喜欢较真,这即是好事,也是坏事。
@coordcn swift就是替代oc的,性能比较oc好非常多,和c差不多。go到现在才1w多star,swfit几天就2w多了,还是很不错的
@calidion lua好像就一个luarock吧,没听过更好的
@calidion 更搞笑的是lua没有一个好的社区。。。。
跳帧比较厉害。 我相信我们一开始讨论的是概念问题。 比如那个什么真阿当认为 node是伪后端,然后你又提了什么大前端。 我认为很多人不去区分概念,导致无法沟通。 大前端是什么鬼?你不懂,我不懂,大家都不懂,然后人人又言必大前端? 如果前端与后端都没有区分好,又来个大前端,结果鸡同鸭讲,好象人人都懂,实际是谁也没有真正搞懂。 在中国概念的错误的事情还少吗? 你再好好翻翻你对nodejs的评价。
第二个js有问题,其它语言一样有问题。 讨论js问题本身并没有什么。 但是别错误的理解。 python升级到3. php升级到7。 都是在解决问题。 php一出来的时候问题更多。
语言的发展跟商品的流通是一样,是满足需求用的。 如果不能满足需求可能即使你做的再好,也不见得有很多人用。 所以语言的流行度与语言本身的优势没有明显的关系。 反而跟环境的关系更大。
你考虑下为什么是现在lua开始流行,而不是vb? 是不是跟你基于nginx还有在游戏行业流行有关呢?
再次强调下,大前端不是我定义出来的,至于怎么理解,各自有自己的理解也很正常。
python和php有说自己是全栈么?
nodejs最不缺的是人,但最缺的也是人。
不要以为会javascript就是全栈了。
不是说语言不能有缺点,但脱离了其适用范围,就会更突出,这也是为什么nodejs招聘这么困难的原因,是人都可以说自己会,但真的会么?
我选择lua不是因为他流行,而是因为他符合我的要求,我能够快速的掌握。我放弃node,根本原因是我觉得很多东西已经超出了我的能力范围,我c++不行,v8绑定搞不来,但我c还可以,lua绑定半天就学会了,我想我都能半天就学会的,其他人就应该更简单,这么简单的语言,我肯定喜欢了。如果你愿意挑战复杂的东西,你可以试着去读一读node的stream实现,我用lua实现的stream比node简单得多,read是形式同步的,write考虑性能还是用的callback,处理方式和nodejs类似,反正我读的时候,已经被绕昏了,也许是我脑子不灵光吧,不能在各种状态之间来回切换。
流行真的不是选择的理由,自己的能力才是根本,我能力就到这块了,选择一个简单点,绝对没有错。至于讲生态,社区,node刚起步的时候有什么?
我先Mark一下,继续看。
来自酷炫的 CNodeMD
@coordcn 关于“流行”,下面是我2009年跟同事分享的一段文字
流行 = 平庸 我以前和其他同事讨论过这个问题,我的看法是用最流行的做法通常会做出流行的应用,但是按照对照着软件开发来说,这通常意味着“平庸”的应用。 这种应用在定制开发或者内部企业的专用应用有很大的需求,这种应用的一个流行的称呼应该是“足够好的应用”
我们现在需要面对的问题,这种流行的做法已经不能符合要求了。所以需要超越流行了。超越的意思是站在前人的肩膀上做的更好,并不是全盘否定。
一种架构得以流行并不会是一个偶然因素,这种架构必定有过人之处。我们需要的是找出这些过人之处,客观的加以利用。能用整包的用整包,能用代码的用代码,能用设计思路的用设计思路。总之程序员的“懒惰”精神不能丢。。
关于开源软件
我们的物理架构基本完全是用流行的开源软件来构建的。 换句话说,我们不是不使用流行的开源软件,而是用另一种方式来使用,这种方式会更大的增加这些开源软件的价值,我个人认为这是对于开源真正的“尊重”。 开源真正的价值不完全在于提供他人可以直接使用的软件包,真正而尊重开源的方法就是深层次的使用,欣赏,改进。
你可能误解我的意思了,我跟 @calidion 说的是我选lua不是因为他流行,跟你说得好像并不相关。
@coordcn 明白,对大部分人来说,随大流还是相对合适的,没有完美的技术,只有合适的技术,但是搞明白流行的本质为己用最重要:)另外,每个人处的位置不同,看法想法不同是最基本的,很难调整
@alsotang 来,我跟你撕
@xadillax 你俩这基情。。。。
再这么撕下去,这个页面滚动就有点卡了,这毕竟不是原生界面啊
所以只有我一个人不喜欢 ES6 么?
@i5ting 同意
@xadillax 我也不不喜欢,哈哈
看撕挺好,开阔视野,拓展思维。 虽然都在撕,觉得都说得挺有理的,竟然没觉得有什么矛盾的地方。。。
那啥,scheme大法好。我不是针对javascript,我是说,所有语言都是。。。
@xadillax 我也不喜欢,没前途
@xadillax 本来我是全部抵触的,现在喜欢上 generator 了。但是 class 和那个匿名函数之类的还是不接受
我后端开发4年+,以前都是用的java,自从node出现之后,一句话,力挺nodejs,我感觉node是一个解放后端生产力的工具,社区和生态非常赞,各种ge,各种yo,各种工具,而且配套的东西越来越完善,最关键还都开源,现在的国内后端可能还是java占优,但是从发展角度看,我觉得3-5年内node必然会占据优势,随着淘宝这种大厂的技术布道,以及踩坑的速度,一旦大阿里完成java转node服务器的切换工作,各种技术积累就完成了,这时候,node成为后端必备语言,指日可待
啊,哪里在撕? 我最喜欢凑热闹了,来晚了
@rpdgcmyk 找到哪里有撕吗,我也想看
感觉他们撕逼斯的好辛苦啊
@jinwyp react还早,css很差的前端我是不敢用,h5移动端的市场也很大,node的性能虽不拔尖,但绝对堪用,而且在前端工具开发方面是有绝对的优势,你看看nginx-lua性能比php,python高了不知道哪里去,也不见几个网站用,一个是人才成本,一个是生态成本
不错,继续撕,撕一件少一件
好腻害的样子,撕吧撕吧,坐收渔翁之利。
现在是撕过来了啊
过个年都被 @ 进来。那就做个广告吧,欢迎大家使用 fibjs,0.2.0 新春大礼震撼发布,超强劲的改善包括但不限于: 重构对象回收系统; 全新的多线程 fiber 内核,更快,更省,更优雅。没错,多线程 fiber 引擎!!! 支持多 vm 并发,充分利用多核。同样没看错,在多线程 fiber 引擎的基础上,fibjs 又开启了多 vm 的时代。
vm之间能够共享数据么?能够给一点更详细的介绍么?
我采用的是多进程方案,我很偷懒,直接用TCP_REUSEPORT来实现的多进程,代码量比nodejs少得多,但兼容性不好,windows,linux3.9以下版本都不支持多进程。进程之间要通过第三方来共享数据。
@coordcn 不能共享数据,只能通过数据通讯交互,所以我把它封装为 rpc 了。用起来比较方便。 http://fibjs.org/multithread.html
求撕
来晚了,大家好像没兴致开思了。。。
大神的世界,我们小民看不懂。我只知道我以前写Java时,老板让我写页面;我写页面时,老板让我写PHP;好了,现在终于只用JavaScript语言了,又可以写前端又可以写后台,何乐而不为之。 不是每个公司都分前端和后台的,反正我遇到的都是前端后台都要写的。不是每个网站都一定要高性能的,500块给你做一个公司宣传网站你还能搞集群? 技术是技术,市场是市场。如果我老板,我就招会JavaScript的,原因很简单嘛,可以少招一个人。所以我现在要做一件事,就是让JavaScript程序员的工资降下来(普通的),这样老板招得多,学习的人就多,这个事业就有发展了。
你最后一段话说到了重点,但更加重点的是,能够达到全能的价格降下来是不现实的,javascript语言本身的特点就决定了精通是很难的,何况又是是前后端都真正精通的牛人?
有的人在为javascrirpt快速的版本迭代,吸收各种语言的特点而欢欣鼓舞。
如果javascript本身设计是合理的,需要这么快速的版本迭代么?
如果javascript本身设计是合理的,需要把自己进化成四不像么?
javascript,有的人说javascript要替代java,我认为用javascript要成为java更加确切,当javascript吸收各种语言的特点,进化成编程语言怪兽的时候,那个简单易学的javascript已经消失了,学习一门语言的成本将超过几门语言。
@coordcn 不管是JavaScript要变成Java,还是JavaScript要代替Java。做为一个底层的码农,我只关心,现在简单易用就行了。那些伤脑子的事情,大神们在上面顶着。 再说拉,每什么让每个人都精通?一个项目里面,都是一个大神带一帮小弟。让一公司全招大神搞项目,这项目肯定得完蛋。市场上小弟的需求量肯定是大于大神的需求量的。小弟的工资降低了,项目成本降低了,做的人多了,基数就大,小弟成为大神的几率就增加了。 和其它语言相比,JavaScript语言最大优势在于只要写网页就要用、就要学。就我个人经验而言,一个会简单JavaScript语法的大学生,我能在1个月内教会他使用Nodejs开发网站。Java行吗?
我们不能低估那些高薪招聘jser公司招聘人员或老板的智商,这门语言的特点注定了靠谱的开发人员难以培养。
nodejs最不缺的是人,但最缺的也是人。
不要以为会javascript就是全栈了。
会javascript的PHPer,javaer也没见多少整天吹嘘自己是全栈,很多时候,越是叫得响的,越有可能并不是那么回事。
任何时候我们都要谨记,talk is cheep,show me the code。说实在的我并不相信你能够让一个会简单javascript语法的大学生在一个月内学会Nodejs开发网站。当然那中有一定javascript基础的原后端人员除外,hello world也除外。你应该明白一个道理,如果真能1一个月速成,nodejs程序员的价格早降下来了。
当然,你可能有你的独门绝技,可以帮助大家降低培养成本,进而降低开发人员工资。你的想法是好的,但关键是实践,还是那句话,show me the code。
我在上面也讲过,nodejs适合创业公司做项目原型,但随着公司规模的扩大,必然会引入java等更加成熟,稳定的语言框架。前后端统一语言可以节省成本是个伪命题,你认为可以节省了,其实是你根本没那个需求。谁会在意一个小公司的后端系统的稳定性和安全性,谁又敢不在意阿里这样的公司的后端稳定性和安全性?
@coordcn 我从来没说全栈,我跟本不懂全栈。另外,一个月后,我让我的学生来跟你聊。 自豪地采用 CNodeJS ionic
如果你不追求全栈,可以无视。至于你的学生,或许不需要来跟我聊,我又不清楚他们的背景,天知道是不是托,随便找个有后端功底的,稍微懂异步的,整一个不太复杂的网站要求低点的话也就能算会了吧。。。
跟你的学生相比,我更希望看到你的代码。
我其实是了乐见你能够挑战各公司招聘人员和老板的智商的,我想如果你成功了,这些人也是乐于承认自己智商不行的,因为你的想法如果能够实施的话,的确可以帮这些公司节省成本。
@coordcn 你呀,真是够认真的
@coordcn 你是大神,我是小弟,不用比代码吧。我教我的学生,你上你的班,没有冲突吧。 我的代码行不行,其实不重要,只要能把工作做好就行。我有没有托,或者能不能达到我的目标,时间会证明,希望你不要在没有证据的情况下指责。你可以看不起我的技术,但你不能指责我的工作。 我希望大家都能给予这个项目一点支持 助学成才 。各位都有做学生来的,都有做菜鸟做小弟的时候,刚走入工作时,受了多少人的冷眼和嘲笑。而我能做的是,将这些小伙伴带入这个行业,获得一份体面的工作。我没想过要挑战别人的智商,但我肯定我做的工作是一定会得到社会的支持。程序员成本肯定会降低的,就像原来的Java一样,精英永远只是一小部分人,而码农才是最大的群体。 就市场而言,我看到NODE是有前途的,我不愁没学生教。
你的项目我是支持的,你不要误解了。但我更希望你的计划不是一个月,而是半年,1年,2年,从javascirpt语言的基础知识,到nodejs基础知识,异步模型,编码规范,到http协议,websocket协议,redis,mongodb,mysql等数据库使用,性能,安全等注意事项,各种模板的使用,模板优化方法,等等。如果你把困难认识得足一点,把时间估计得更充分点,坚持做下去,我相信是可以做出成绩来的。如果你的内容足够精彩,你就是我的老师了。
我也不是什么大神,我也认可精英只是一小部分人,我也希望nodejs程序员价格下降。但我坚持认为nodejs程序员的价格不是经过你的培训就能改变得了的,如果ES真的一年一个版本,这个速度下去,价格只会上涨。
我应对这个问题的办法和你的思路不一样,javascript难于精通,有容易精通的语言,比如lua,跟javascript类似,但语言特性少得多,天然支持协程,可以很方便得将回调异步转换为伪同步,跟es6的generator类似,但比generator简单得多,同步程序员可以无痛转换。即便是lua这么简单的语言,我都不敢说会lua语法一个月就能写网站了,何况是javascript这种天然的精英语言?
我希望看你的代码,是希望通过代码了解你这个人。
但就现在的市场来说,优秀的javascrirpt程序员很难培养,价格高是必然的。javascript语言特性是造成这个局面的根本原因,这个局面不是靠个人力量可以改变的,就如一些社会速成班出来的java,c#水平,java,c#这种设计相对完备,有工业强度的语言都无法速成,你说javascript可以速成,这是要误人子弟的。就一个块级作用域也到ES6才实现了,为了兼容过去,var还存在。我想你应该比我更清楚这些历史包袱和新增特性带来的问题。
大牛撕,撕得我一脸懵逼 自豪地采用 CNodeJS ionic
感觉撕的好凶啊
用得人越多,工资就越降 不论是java还是php 古今中外任何领域都是这个道理, 精英始终只是一小撮,想通过两三个月培训就摇身一变把庸众变成精英纯粹是骗人的,去大公司一线岗位问一下培训班出来的水平怎么样,不过利用企业招人要招能加班有经验的,刚毕业的学生急切想找一份发工资的工作这两种人的心理捞一笔钱是比较现实的
觉得node性能,开发速度,社区活跃程度,包数量全面超越ruby是迟早的事
老听到有人说nodejs做大项目不行, 大项目的标准是什么? 3000个页面? 100万? 24小时不间断服务? 业务复杂? 大企业级应用? 如果是这样的话, 那我用nodejs就已经证明了. 我也有开源项目ejsExcel, 见笑了
@calidion ES6/ES5越来越后端化、工程化,这个还是比较赞同的,可能发展到最后js也会变成java、php这类后端语言会有的一些规范吧,本身带有前端的性质。js本来是简单的,只是后来大家用的时候,都往里面加入一些类、继承的概念,然后就被写入新的规范里面了。
@coordcn 66666
@xiaolongXL 十个全栈九个坑,哈哈哈哈
新人,表示纠结着问题没有必要啊,基础,规范,框架,工具什么都是互补的。 我是一开始被sass的语法吸引啦。才接触node, 然后接触了node才想着把javascript的基础再过一遍牢靠一点。 接触node之后感觉要学的东西好多,不错~~~
Node有他的优势,适用的范围比较广,然后也有自己不适合的业务,所以根据自己的业务需求来确定吧,解决问题才是最重要
Node有适合开发它的应用程序 例如:聊天服务器或者综合服务类网站,电子商务网站的服务器等等。反正就是取长补短
@pzxwhc 还剩一个是变态
今天又来看了一遍, 嗯~~~ 哈哈哈, 我觉得好多人的理解都是片面的,发言就是为了装逼~~~
耶!装X成功!!
Mark