由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 不要小看js
相关主题
尼玛 callback 真是反人类学了这么多语言发现还是coffeescript最好用
这年头async IO成了流行了看了一下Meteor很不错
Scala Clojure 难以抉择看看大牛们为什么都远离.net
The rewards of running server-side JavaScript revealed哪些 web framework 可以 很容易 scale 到 multiple server 上面?
Node.js 写的 JS 代码有点难读懂多线程,异步,并发冲突,fp和其它
同步编程真郁闷真正对异步有需求的应该是游戏类服务器
asynchronous vs non-blocking用node怎么把多个mysql query 的结果合起来
看了一下C#的async awaitnode 求算法
相关话题的讨论汇总
话题: callback话题: function话题: node话题: async话题: web
进入Programming版参与讨论
1 (共1页)
p*****2
发帖数: 21240
1
node真不是那么容易驾驭的
所以node转go我真不奇怪
l*********s
发帖数: 5409
2
二爷也看好go了啊,all-in了!
p*****2
发帖数: 21240
3
不是看好 傻瓜语言最容易流行 比如java python go
不过跟我都没啥关系 我不在乎语言 我在乎的是生产力

【在 l*********s 的大作中提到】
: 二爷也看好go了啊,all-in了!
c******o
发帖数: 1277
4
我们的游戏是nodejs的。
网站是ruby的,用户数据平台后端和大数据分析后段都是scala的。
DevOPs是ruby/shell
各有各的应用。
p*****2
发帖数: 21240
5
赞大牛
我们前端node 后端scala devops ruby
跟你们类似了

【在 c******o 的大作中提到】
: 我们的游戏是nodejs的。
: 网站是ruby的,用户数据平台后端和大数据分析后段都是scala的。
: DevOPs是ruby/shell
: 各有各的应用。

l*********s
发帖数: 5409
6
:-), 流行就是一切了。

【在 p*****2 的大作中提到】
: 不是看好 傻瓜语言最容易流行 比如java python go
: 不过跟我都没啥关系 我不在乎语言 我在乎的是生产力

y**********u
发帖数: 6366
7
羡慕啊
你们这些都是技术型公司

【在 p*****2 的大作中提到】
: 赞大牛
: 我们前端node 后端scala devops ruby
: 跟你们类似了

l**********n
发帖数: 8443
8
The problem with node is you can't do any parallel code execution.
NodeJS works pretty well for webapp servers as most of the time is actually
spent on waiting for network or disk (database / sockets) and the logic is
not really CPU intensive.
Anything CPU intensive is problematic for node.
b***e
发帖数: 1419
9
So the question is, in the past 5 year, how many CPU intensive work did you
need to do?

actually

【在 l**********n 的大作中提到】
: The problem with node is you can't do any parallel code execution.
: NodeJS works pretty well for webapp servers as most of the time is actually
: spent on waiting for network or disk (database / sockets) and the logic is
: not really CPU intensive.
: Anything CPU intensive is problematic for node.

w**z
发帖数: 8232
10
node.js 适合web application 倒是真的。但现在大部分写软件的都在写web app。不
过这在本版好像不符合。

you

【在 b***e 的大作中提到】
: So the question is, in the past 5 year, how many CPU intensive work did you
: need to do?
:
: actually

相关主题
同步编程真郁闷学了这么多语言发现还是coffeescript最好用
asynchronous vs non-blocking看了一下Meteor很不错
看了一下C#的async await看看大牛们为什么都远离.net
进入Programming版参与讨论
N*****m
发帖数: 42603
11
主要是前后端通吃,这点很重要

【在 p*****2 的大作中提到】
: node真不是那么容易驾驭的
: 所以node转go我真不奇怪

d****i
发帖数: 4809
12
This is not a problem for Node at all. JavaScript is already super fast now
thanks to V8. For applications where you really need bare-metal performance,
you can use node-fft to call native libraries written in C/C++ easily,
pretty much like what JNI and JNA does for Java.
https://www.npmjs.com/package/node-ffi

actually

【在 l**********n 的大作中提到】
: The problem with node is you can't do any parallel code execution.
: NodeJS works pretty well for webapp servers as most of the time is actually
: spent on waiting for network or disk (database / sockets) and the logic is
: not really CPU intensive.
: Anything CPU intensive is problematic for node.

l*********s
发帖数: 5409
13
What is the benchmark between node vs go?

now
performance,

【在 d****i 的大作中提到】
: This is not a problem for Node at all. JavaScript is already super fast now
: thanks to V8. For applications where you really need bare-metal performance,
: you can use node-fft to call native libraries written in C/C++ easily,
: pretty much like what JNI and JNA does for Java.
: https://www.npmjs.com/package/node-ffi
:
: actually

l**********n
发帖数: 8443
14
这不是比快慢。

now
performance,

【在 d****i 的大作中提到】
: This is not a problem for Node at all. JavaScript is already super fast now
: thanks to V8. For applications where you really need bare-metal performance,
: you can use node-fft to call native libraries written in C/C++ easily,
: pretty much like what JNI and JNA does for Java.
: https://www.npmjs.com/package/node-ffi
:
: actually

j********x
发帖数: 2330
15
js好歹是web前段的统治级语言
有人会小看么
。。。

【在 p*****2 的大作中提到】
: node真不是那么容易驾驭的
: 所以node转go我真不奇怪

p*****2
发帖数: 21240
16

actually
you can't do any parallel code execution
你怎么能犯这么低级的错误呢?

【在 l**********n 的大作中提到】
: The problem with node is you can't do any parallel code execution.
: NodeJS works pretty well for webapp servers as most of the time is actually
: spent on waiting for network or disk (database / sockets) and the logic is
: not really CPU intensive.
: Anything CPU intensive is problematic for node.

l**********n
发帖数: 8443
17
async = require('async')
async.parallel([
function(callback){
for (var i = 0; i < 1000000000; i++) /* Do nothing */;
console.log("function: 1")
},
function(callback){
console.log("function: 2")
}
]);
what result you expect?

【在 p*****2 的大作中提到】
:
: actually
: you can't do any parallel code execution
: 你怎么能犯这么低级的错误呢?

l**********n
发帖数: 8443
18
async = require('async')
request = require('request')
async.parallel([
function(callback){
request("http://google.jp", function(err, response, body) {
if(err) { console.log(err); callback(true); return; }
console.log("function: 1")
callback(false);
});
},
function(callback){
request("http://google.com", function(err, response, body) {
if(err) { console.log(err); callback(true); return; }
console.log("function: 2")
callback(false);
});
}
]);
what would you expect of this?
L***s
发帖数: 1148
19
node做web server是合适的,因为不同用户的请求之间基本相互独立,
单线程异步的模型非常合适。
比如贱厂的web,一个页面大概包含3-6个micro services,每个service在
10-30个VMs上跑,每个VM大概起60-120个node进程,每个进程跑同一个app。
单个进程崩溃、重启、又崩溃、又重启,是家常便饭,不影响整体availability。
跟DB/storage打交道的逻辑,一般不在web server上做,是后台独立的,
跟web server之间用RESTful API隔离。

actually

【在 l**********n 的大作中提到】
: The problem with node is you can't do any parallel code execution.
: NodeJS works pretty well for webapp servers as most of the time is actually
: spent on waiting for network or disk (database / sockets) and the logic is
: not really CPU intensive.
: Anything CPU intensive is problematic for node.

p*****2
发帖数: 21240
20
从来不用这些

【在 l**********n 的大作中提到】
: async = require('async')
: request = require('request')
: async.parallel([
: function(callback){
: request("http://google.jp", function(err, response, body) {
: if(err) { console.log(err); callback(true); return; }
: console.log("function: 1")
: callback(false);
: });
: },

相关主题
哪些 web framework 可以 很容易 scale 到 multiple server 上面?用node怎么把多个mysql query 的结果合起来
多线程,异步,并发冲突,fp和其它node 求算法
真正对异步有需求的应该是游戏类服务器node.js child process: 怎样保证1个命令执行完了再执行下一个?
进入Programming版参与讨论
d****n
发帖数: 1637
21
你这个 写法block了, wrap each task in setImmediate and try minimize each
task size
async = require('async')
async.parallel([
function(callback){
setImmediate(function(){
for (var i = 0; i < 1000000000; i++) {;}/* Do nothing */;
console.log("function: 1")
callback();
});
},
function(callback){
setImmediate(function(){
console.log("function: 2");
callback();// you missed callback here,不用谢了 :)
});
}
]);
另外:这个也不是multiple threads, event queue 而已

【在 l**********n 的大作中提到】
: async = require('async')
: request = require('request')
: async.parallel([
: function(callback){
: request("http://google.jp", function(err, response, body) {
: if(err) { console.log(err); callback(true); return; }
: console.log("function: 1")
: callback(false);
: });
: },

d****n
发帖数: 1637
22
好奇二爷的node都是怎么用的?

【在 p*****2 的大作中提到】
: 从来不用这些
b***e
发帖数: 1419
23
这个也不行。中间的big loop怎么说也是一个even handling。逃不掉。只能在i++上加
timeout。node.js的确不是用来做cpu intensive的东西的。象他写的这个例子,就像
是京二说的,是应该避免的。

【在 d****n 的大作中提到】
: 你这个 写法block了, wrap each task in setImmediate and try minimize each
: task size
: async = require('async')
: async.parallel([
: function(callback){
: setImmediate(function(){
: for (var i = 0; i < 1000000000; i++) {;}/* Do nothing */;
: console.log("function: 1")
: callback();
: });

b***e
发帖数: 1419
24
Then just answer the question. Or if you prefer, let's survey it out on the
board.

【在 w**z 的大作中提到】
: node.js 适合web application 倒是真的。但现在大部分写软件的都在写web app。不
: 过这在本版好像不符合。
:
: you

p*****2
发帖数: 21240
25
裸写monad

【在 d****n 的大作中提到】
: 好奇二爷的node都是怎么用的?
b***e
发帖数: 1419
26
coffee-monad没有composability,过于玩具化。实际中用得上么?我原来做过一个带
transformer的。有空整理出来。我倒是感兴趣你有没有做出过什么非常规的monad。

【在 p*****2 的大作中提到】
: 裸写monad
z****e
发帖数: 54598
27
红果果地打那些说前后端一起做的脸
你说的这些,那些前端程序员能看懂么?
像金字塔一样的callback陷阱真是让人无语
都说try catch恶心,callback陷阱没几个前端程序员能绕开的

【在 L***s 的大作中提到】
: node做web server是合适的,因为不同用户的请求之间基本相互独立,
: 单线程异步的模型非常合适。
: 比如贱厂的web,一个页面大概包含3-6个micro services,每个service在
: 10-30个VMs上跑,每个VM大概起60-120个node进程,每个进程跑同一个app。
: 单个进程崩溃、重启、又崩溃、又重启,是家常便饭,不影响整体availability。
: 跟DB/storage打交道的逻辑,一般不在web server上做,是后台独立的,
: 跟web server之间用RESTful API隔离。
:
: actually

p*****2
发帖数: 21240
28
在某些情况可以利用这个pattern
比如串行执行很多命令 但是其中一个fail了可以继续执行 结束条件则可以自定义
不需要其他library 自己实现monad就可以了

【在 b***e 的大作中提到】
: coffee-monad没有composability,过于玩具化。实际中用得上么?我原来做过一个带
: transformer的。有空整理出来。我倒是感兴趣你有没有做出过什么非常规的monad。

L***s
发帖数: 1148
29
我现在就做“前端”啊,包括browser端的html/css/js assets,和web server端
的nodejs micro service —— 由于业务逻辑上耦合很紧,都放在一个repo里。
nodejs micro service 主要是服务请求、做页面渲染(由于SEO/SEM的原因,
越来越多的页面放到服务器上去渲染);browser端js做强交互性的东西。
我们从用户浏览器到DB,大概经过这么几层,每下一层都有一次RESTful call:
1. Browser JS
2. Nodejs micro services (at customer facing web servers)
3. API layer (external; for web, mobile web, mobile apps)
4. Backend services (DB access, indexing, ...)
5. Downstream backend services
由于“前”和“后”是相对的,取决于你的站位,我一般避免这样称呼。
如果实在要说,API layer以上(包括1 & 2)的我们统称“前端”。
有些小公司把2称作“后端”,并且把2和4/5放到同层的web server上,
那是因为他们没有一个API layer把后端服务封装起来。

【在 z****e 的大作中提到】
: 红果果地打那些说前后端一起做的脸
: 你说的这些,那些前端程序员能看懂么?
: 像金字塔一样的callback陷阱真是让人无语
: 都说try catch恶心,callback陷阱没几个前端程序员能绕开的

L***s
发帖数: 1148
30
二爷的node像是非典型用法,呵呵。他的应用场景,可选的技术很多,
所以可以经常在不同技术栈之间摇摆。我们前端开发选node,
是因为其实没有这么多好的选项。

【在 d****n 的大作中提到】
: 好奇二爷的node都是怎么用的?
相关主题
问个 rxjava 的问题这年头async IO成了流行了
发现真的有点老了Scala Clojure 难以抉择
尼玛 callback 真是反人类The rewards of running server-side JavaScript revealed
进入Programming版参与讨论
s***o
发帖数: 2191
31
第一层js是从第二层还是第三层取数据?

【在 L***s 的大作中提到】
: 我现在就做“前端”啊,包括browser端的html/css/js assets,和web server端
: 的nodejs micro service —— 由于业务逻辑上耦合很紧,都放在一个repo里。
: nodejs micro service 主要是服务请求、做页面渲染(由于SEO/SEM的原因,
: 越来越多的页面放到服务器上去渲染);browser端js做强交互性的东西。
: 我们从用户浏览器到DB,大概经过这么几层,每下一层都有一次RESTful call:
: 1. Browser JS
: 2. Nodejs micro services (at customer facing web servers)
: 3. API layer (external; for web, mobile web, mobile apps)
: 4. Backend services (DB access, indexing, ...)
: 5. Downstream backend services

L***s
发帖数: 1148
32
第二层。每一层只能跟临近层通信。所以,如果每一层都没有cache,
浏览器要取到DB数据,要经过若干次RESTful API calls。
第二层的nodejs micro service主要是面向 传统桌面web 和 移动端浏览器
上的web(终端设备form factor不一样,但tech stack一样)。
mobile apps (iOS, Adroid, WP, ...) 直接调第三层API。
所以我们把1&2层统称“前端”:桌面web、移动web、移动apps,是三种不同的“前端
”。

【在 s***o 的大作中提到】
: 第一层js是从第二层还是第三层取数据?
l**********n
发帖数: 8443
33
node handle cpu intensive job 的方法不外乎
cluster
webworker-thread
chunk up the job.
node只有一个worker thread.
netty有thread pool.

【在 L***s 的大作中提到】
: 第二层。每一层只能跟临近层通信。所以,如果每一层都没有cache,
: 浏览器要取到DB数据,要经过若干次RESTful API calls。
: 第二层的nodejs micro service主要是面向 传统桌面web 和 移动端浏览器
: 上的web(终端设备form factor不一样,但tech stack一样)。
: mobile apps (iOS, Adroid, WP, ...) 直接调第三层API。
: 所以我们把1&2层统称“前端”:桌面web、移动web、移动apps,是三种不同的“前端
: ”。

l**********n
发帖数: 8443
34
my question is
单线程快,还是多线程快。

【在 l**********n 的大作中提到】
: node handle cpu intensive job 的方法不外乎
: cluster
: webworker-thread
: chunk up the job.
: node只有一个worker thread.
: netty有thread pool.

s***o
发帖数: 2191
35
这个架构跟用nginx做Web Server,用js直接从第三层api取数据相比,有什么好处?

【在 L***s 的大作中提到】
: 第二层。每一层只能跟临近层通信。所以,如果每一层都没有cache,
: 浏览器要取到DB数据,要经过若干次RESTful API calls。
: 第二层的nodejs micro service主要是面向 传统桌面web 和 移动端浏览器
: 上的web(终端设备form factor不一样,但tech stack一样)。
: mobile apps (iOS, Adroid, WP, ...) 直接调第三层API。
: 所以我们把1&2层统称“前端”:桌面web、移动web、移动apps,是三种不同的“前端
: ”。

N*****m
发帖数: 42603
36
nginx是http server;楼上说的是web service,不单单是一个http server

【在 s***o 的大作中提到】
: 这个架构跟用nginx做Web Server,用js直接从第三层api取数据相比,有什么好处?
z****e
发帖数: 54598
37
一样的
没啥本质上的区别
多了两个无聊的http methods
这种构架是典型的企业构架
某些公司死守node让人很无语
我见过不只一个公司用其他的http server来做ws
本来restful就用了http
更何况node很多公司就是用来做web server而不是web service server的
还有就是现在很多http server也都能提供异步和web service的功能

【在 N*****m 的大作中提到】
: nginx是http server;楼上说的是web service,不单单是一个http server
z****e
发帖数: 54598
38
那你们换node.js的障碍就只剩下一个npm了
你们不是没有选择
是你们老板不愿意丢掉sunk cost
一条路走到黑
另外app直接调第三层api这个也没有必要
用node就可以做一个ws server,而不仅仅是web server
做点安全验证啥的在这一层

【在 L***s 的大作中提到】
: 第二层。每一层只能跟临近层通信。所以,如果每一层都没有cache,
: 浏览器要取到DB数据,要经过若干次RESTful API calls。
: 第二层的nodejs micro service主要是面向 传统桌面web 和 移动端浏览器
: 上的web(终端设备form factor不一样,但tech stack一样)。
: mobile apps (iOS, Adroid, WP, ...) 直接调第三层API。
: 所以我们把1&2层统称“前端”:桌面web、移动web、移动apps,是三种不同的“前端
: ”。

z****e
发帖数: 54598
39
如果我没猜错的话
异步,web service和npm是当时的主要考虑
现在异步已经烂大街了
什么http server都有了,ws也差不多
就剩下npm了,这个其实也不是完全不可替代的
就是轮子造起来麻烦
说到底还是懒
你上次抱怨的那一层层的callback的代码可维护性强么?
看上去简直就是噩梦一般的存在
跟fp的一堆嵌套起来的括号有一拼

【在 L***s 的大作中提到】
: 二爷的node像是非典型用法,呵呵。他的应用场景,可选的技术很多,
: 所以可以经常在不同技术栈之间摇摆。我们前端开发选node,
: 是因为其实没有这么多好的选项。

L***s
发帖数: 1148
40
nginx是web server,我们用nodejs写的service也是跑在nginx上的。
我上面写的第1层就是前端里的client端,第2层是前端里的server端。
(client-server之间其实还有a cluster of load balancers,
由于属于non-functional需求,我前面略去不提。)
“用js直接从第三层api取数据相比”——你是说第1层client端的js吗?
原因A:client js是你首次访问url时,server返回给你浏览器的,
既然需要server参与,“绕过server直接从client访问api”这种需求就没有意义。
原因B:绝大多数的业务逻辑必须server端实现,因为:1. 业务本身的复杂性
(各种scenarios, internationalization/localization, A/B testing ...);
2. server-side page rendering for SEO/SEM;3. 商业机密、安全原因;
4. 体积尺寸(我们一个micro service有约40万行coffee代码,编译成js要近百万);
这些都决定了这些不可能写成client js,只能放在server端。
mobile app是特殊情况,因为你已经在手机上下载了我们的app,于是原因A无效。
其次,我们mobile app能实现的功能是桌面web的一个比较小的子集,
业务逻辑相对简单,所以原因B无效。所以mobile app允许(也只能)直接call API。

【在 s***o 的大作中提到】
: 这个架构跟用nginx做Web Server,用js直接从第三层api取数据相比,有什么好处?
相关主题
The rewards of running server-side JavaScript revealedasynchronous vs non-blocking
Node.js 写的 JS 代码有点难读懂看了一下C#的async await
同步编程真郁闷学了这么多语言发现还是coffeescript最好用
进入Programming版参与讨论
L***s
发帖数: 1148
41

debugging callback hell还是比较痛苦的。我觉得困难倒不在于callback本身,
而在于levels of indirection。“Every problem can be solved with
another level of indirection”——于是indirection容易被滥用,
读代码时大脑很容易爆栈。
就js而言,client端可以在runtime用browser来debug(比如chrome你可以开
async mode看call stack),30层callback捉虫起来困难也不是太大。
server端就比较麻烦,我一直没有找到称手的工具,一直是console.log大法。

【在 z****e 的大作中提到】
: 如果我没猜错的话
: 异步,web service和npm是当时的主要考虑
: 现在异步已经烂大街了
: 什么http server都有了,ws也差不多
: 就剩下npm了,这个其实也不是完全不可替代的
: 就是轮子造起来麻烦
: 说到底还是懒
: 你上次抱怨的那一层层的callback的代码可维护性强么?
: 看上去简直就是噩梦一般的存在
: 跟fp的一堆嵌套起来的括号有一拼

z****e
发帖数: 54598
42
30层还不够痛苦啊?
你真牛逼
java代码多来几层try catch,下面一堆人骂娘
30层估计有人爆发了,呵呵
我一直很佩服你,用chrome来debug
用vi来写代码,这种工作效率其实是不高的
我用dart,基本上就不需要chrome和vi
一个人最近写了上万行代码,都一个人做的
别人维护起来也没啥大问题,debug没有ide帮忙感觉都很痛苦
我做很多项目第一件事就是下ide,呵呵
运行时断点+看内存的value是ide里面非常常用的一个工具
这个vi就做不了了

【在 L***s 的大作中提到】
:
: debugging callback hell还是比较痛苦的。我觉得困难倒不在于callback本身,
: 而在于levels of indirection。“Every problem can be solved with
: another level of indirection”——于是indirection容易被滥用,
: 读代码时大脑很容易爆栈。
: 就js而言,client端可以在runtime用browser来debug(比如chrome你可以开
: async mode看call stack),30层callback捉虫起来困难也不是太大。
: server端就比较麻烦,我一直没有找到称手的工具,一直是console.log大法。

L***s
发帖数: 1148
43
动态语言,IDE帮助不大的,js/ruby/python都一样,维护都是grep大法。

【在 z****e 的大作中提到】
: 30层还不够痛苦啊?
: 你真牛逼
: java代码多来几层try catch,下面一堆人骂娘
: 30层估计有人爆发了,呵呵
: 我一直很佩服你,用chrome来debug
: 用vi来写代码,这种工作效率其实是不高的
: 我用dart,基本上就不需要chrome和vi
: 一个人最近写了上万行代码,都一个人做的
: 别人维护起来也没啥大问题,debug没有ide帮忙感觉都很痛苦
: 我做很多项目第一件事就是下ide,呵呵

k****i
发帖数: 101
44
# Truth of Node in ls
{sleep} = require sleep
delay = (sec, seq) ->
<-! setTimeout _, 1000 * sec
console.log seq
# blocking
delay 3 2nd
sleep 4
console.log 1st
# non-blocking
delay 2 4th
delay 1 3rd

【在 l**********n 的大作中提到】
: async = require('async')
: request = require('request')
: async.parallel([
: function(callback){
: request("http://google.jp", function(err, response, body) {
: if(err) { console.log(err); callback(true); return; }
: console.log("function: 1")
: callback(false);
: });
: },

T*******e
发帖数: 4928
45
what is the good ide for dart?

【在 z****e 的大作中提到】
: 30层还不够痛苦啊?
: 你真牛逼
: java代码多来几层try catch,下面一堆人骂娘
: 30层估计有人爆发了,呵呵
: 我一直很佩服你,用chrome来debug
: 用vi来写代码,这种工作效率其实是不高的
: 我用dart,基本上就不需要chrome和vi
: 一个人最近写了上万行代码,都一个人做的
: 别人维护起来也没啥大问题,debug没有ide帮忙感觉都很痛苦
: 我做很多项目第一件事就是下ide,呵呵

z****e
发帖数: 54598
46
dart editor
官方有自己的ide

【在 T*******e 的大作中提到】
: what is the good ide for dart?
d****n
发帖数: 1637
47
bluebird || highland work with async.
debug 实在是callback hell 引进来得,如果能结合promise and async, 再用些
commercial tools, e.g nodetime, strongLoop ?

【在 L***s 的大作中提到】
: 动态语言,IDE帮助不大的,js/ruby/python都一样,维护都是grep大法。
s***o
发帖数: 2191
48
多谢分享。
就是说第二层并不是第三层api的一个简单wrapper,而是加了很多其他东西?你们用的
什么Web framework?据说express的作者已经跑路了。另外40万行的coffee
maintainability怎么样?

【在 L***s 的大作中提到】
: nginx是web server,我们用nodejs写的service也是跑在nginx上的。
: 我上面写的第1层就是前端里的client端,第2层是前端里的server端。
: (client-server之间其实还有a cluster of load balancers,
: 由于属于non-functional需求,我前面略去不提。)
: “用js直接从第三层api取数据相比”——你是说第1层client端的js吗?
: 原因A:client js是你首次访问url时,server返回给你浏览器的,
: 既然需要server参与,“绕过server直接从client访问api”这种需求就没有意义。
: 原因B:绝大多数的业务逻辑必须server端实现,因为:1. 业务本身的复杂性
: (各种scenarios, internationalization/localization, A/B testing ...);
: 2. server-side page rendering for SEO/SEM;3. 商业机密、安全原因;

W***o
发帖数: 6519
49
the express author wrote this new framework: koa
https://github.com/koajs/koa

【在 s***o 的大作中提到】
: 多谢分享。
: 就是说第二层并不是第三层api的一个简单wrapper,而是加了很多其他东西?你们用的
: 什么Web framework?据说express的作者已经跑路了。另外40万行的coffee
: maintainability怎么样?

l**********n
发帖数: 8443
50
yield现在很多browser不支持

【在 W***o 的大作中提到】
: the express author wrote this new framework: koa
: https://github.com/koajs/koa

相关主题
看了一下Meteor很不错多线程,异步,并发冲突,fp和其它
看看大牛们为什么都远离.net真正对异步有需求的应该是游戏类服务器
哪些 web framework 可以 很容易 scale 到 multiple server 上面?用node怎么把多个mysql query 的结果合起来
进入Programming版参与讨论
d*******r
发帖数: 3299
51
你们第3层主要做个 adapter, 屏蔽前后端的各种细节,认证什么的,也在这里做吗

【在 L***s 的大作中提到】
: 我现在就做“前端”啊,包括browser端的html/css/js assets,和web server端
: 的nodejs micro service —— 由于业务逻辑上耦合很紧,都放在一个repo里。
: nodejs micro service 主要是服务请求、做页面渲染(由于SEO/SEM的原因,
: 越来越多的页面放到服务器上去渲染);browser端js做强交互性的东西。
: 我们从用户浏览器到DB,大概经过这么几层,每下一层都有一次RESTful call:
: 1. Browser JS
: 2. Nodejs micro services (at customer facing web servers)
: 3. API layer (external; for web, mobile web, mobile apps)
: 4. Backend services (DB access, indexing, ...)
: 5. Downstream backend services

W***o
发帖数: 6519
52
所以说是next generation 的

【在 l**********n 的大作中提到】
: yield现在很多browser不支持
k***5
发帖数: 583
53
没IDE是很痛苦,但console.log是很多时候唯一的选择。IDE很多时候会莫名其妙不灵
,所以还是只能靠最原始的办法。

【在 z****e 的大作中提到】
: 30层还不够痛苦啊?
: 你真牛逼
: java代码多来几层try catch,下面一堆人骂娘
: 30层估计有人爆发了,呵呵
: 我一直很佩服你,用chrome来debug
: 用vi来写代码,这种工作效率其实是不高的
: 我用dart,基本上就不需要chrome和vi
: 一个人最近写了上万行代码,都一个人做的
: 别人维护起来也没啥大问题,debug没有ide帮忙感觉都很痛苦
: 我做很多项目第一件事就是下ide,呵呵

b*******s
发帖数: 5216
54
node is a light weight 'backend' like thing
not a real backend

【在 p*****2 的大作中提到】
: node真不是那么容易驾驭的
: 所以node转go我真不奇怪

b*******s
发帖数: 5216
55
if you adopt console dev, it takes time to build a tool chain. but worth it

【在 k***5 的大作中提到】
: 没IDE是很痛苦,但console.log是很多时候唯一的选择。IDE很多时候会莫名其妙不灵
: ,所以还是只能靠最原始的办法。

l**********n
发帖数: 8443
56
胡说。

【在 b*******s 的大作中提到】
: node is a light weight 'backend' like thing
: not a real backend

b***e
发帖数: 1419
57
0.12会从很大的程度上改善这种情况,如果generators被广泛的使用。Callback hell
将不复存在。

【在 L***s 的大作中提到】
: 动态语言,IDE帮助不大的,js/ruby/python都一样,维护都是grep大法。
b***e
发帖数: 1419
58
这个各有所好。不过你node做的还不够多。

【在 b*******s 的大作中提到】
: node is a light weight 'backend' like thing
: not a real backend

g****t
发帖数: 31659
59
obama都写javascript,不服来辩。

【在 p*****2 的大作中提到】
: node真不是那么容易驾驭的
: 所以node转go我真不奇怪

l**********n
发帖数: 8443
60
巴马是写爪哇吧,还用了design pattern

【在 g****t 的大作中提到】
: obama都写javascript,不服来辩。
相关主题
node 求算法发现真的有点老了
node.js child process: 怎样保证1个命令执行完了再执行下一个?尼玛 callback 真是反人类
问个 rxjava 的问题这年头async IO成了流行了
进入Programming版参与讨论
i***h
发帖数: 12655
61
动态的维护是个问题,换个人可能还不如重新写

【在 L***s 的大作中提到】
: 动态语言,IDE帮助不大的,js/ruby/python都一样,维护都是grep大法。
1 (共1页)
进入Programming版参与讨论
相关主题
node 求算法Node.js 写的 JS 代码有点难读懂
node.js child process: 怎样保证1个命令执行完了再执行下一个?同步编程真郁闷
问个 rxjava 的问题asynchronous vs non-blocking
发现真的有点老了看了一下C#的async await
尼玛 callback 真是反人类学了这么多语言发现还是coffeescript最好用
这年头async IO成了流行了看了一下Meteor很不错
Scala Clojure 难以抉择看看大牛们为什么都远离.net
The rewards of running server-side JavaScript revealed哪些 web framework 可以 很容易 scale 到 multiple server 上面?
相关话题的讨论汇总
话题: callback话题: function话题: node话题: async话题: web