由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - Node.js 写的 JS 代码有点难读懂
相关主题
学了这么多语言发现还是coffeescript最好用感觉免费的visual studio是Windows最强IDE
JetBrains自宫,大家可以给丫烧纸了,atom很牛的样子JetBrains要做C# IDE了?
ruby,python有没有自己的ide?Typescript是不是实际上反 functional programming 的?
动态语言和script的区别在那里?这几天试了一下linux c++ IDE
我来说说go的目标对手吧Webstorm 值得花29刀买不?
请推荐linux下c++的IDEBe $#%!ing explicit
工具简单未必是好事-swift用了一下node.js, 看来js要一同天下啊,只要那些人
不要小看jsgo真是好东西
相关话题的讨论汇总
话题: js话题: 代码话题: python话题: callback话题: lib
进入Programming版参与讨论
1 (共1页)
d*******r
发帖数: 3299
1
最近在用 Node.js 做个简单的 RESTful service, 顺便看了下 Node.js 的一些 lib,
感觉异步JS代码是挺难读的。
可能是我 JS 太菜了,读起来挺费劲的。比如 express.js 4.0, 这种应该是 Node 写
的比较好的 lib 了吧。
一些 router.get/post 什么的函数, 我看懂怎么来的都比较费劲。
感觉 JS 比 Python 还不注重类型,我用 JetBrains webstorm 在读代码,对函数变量
用 jump to declaration,经常找不到, 就给出长长的一串备选...
看着看着郁闷了,上大招,设 break point, 跟着走,这样搞 C++ 代码也容易看懂。
然后发现对于各种 callback 匿名函数,因为注册 callback chain 和 实际调用匿名
函数是分开发生的,于是整个逻辑又分成了2部分。比如 breakpoint 开始肯定会停在
注册 callback chain 的地方(注册这个 callback 的 calling function),step into
后,发现calling function这里面又是一堆 magic, 好像这个 calling function 本
身就是从这一堆 magic 里面动态生成的...... 好不容易看懂了一点,觉得好绕呀 ...
... +_+
我觉得我读 JS 代码还没入门。Node.js 这些 lib 用着 magic 一样,慎得慌...
M****z
发帖数: 1058
2
真正的菜鸟在此,所以转投golang了。至少看得明白一些。不过做web app的前端还会
和js碰面的。
r***y
发帖数: 4379
3
不能同意更多
碰到 dynamically typed language, 尤其维护别人的代码极其伤害最弱的小心脏.

【在 d*******r 的大作中提到】
: 最近在用 Node.js 做个简单的 RESTful service, 顺便看了下 Node.js 的一些 lib,
: 感觉异步JS代码是挺难读的。
: 可能是我 JS 太菜了,读起来挺费劲的。比如 express.js 4.0, 这种应该是 Node 写
: 的比较好的 lib 了吧。
: 一些 router.get/post 什么的函数, 我看懂怎么来的都比较费劲。
: 感觉 JS 比 Python 还不注重类型,我用 JetBrains webstorm 在读代码,对函数变量
: 用 jump to declaration,经常找不到, 就给出长长的一串备选...
: 看着看着郁闷了,上大招,设 break point, 跟着走,这样搞 C++ 代码也容易看懂。
: 然后发现对于各种 callback 匿名函数,因为注册 callback chain 和 实际调用匿名
: 函数是分开发生的,于是整个逻辑又分成了2部分。比如 breakpoint 开始肯定会停在

l**********n
发帖数: 8443
4
先写测试,再写代码

【在 r***y 的大作中提到】
: 不能同意更多
: 碰到 dynamically typed language, 尤其维护别人的代码极其伤害最弱的小心脏.

l**********n
发帖数: 8443
5
npm module都是遵循commonJS的,有啥不好读的?

【在 l**********n 的大作中提到】
: 先写测试,再写代码
N********n
发帖数: 8363
6
This is why we said JS is not for big projects. Not even IDE could find
out how sth is defined in JS sometimes. Imagine you'd use it to write
hundred of thousand lines of code. It'd be a mess.

【在 d*******r 的大作中提到】
: 最近在用 Node.js 做个简单的 RESTful service, 顺便看了下 Node.js 的一些 lib,
: 感觉异步JS代码是挺难读的。
: 可能是我 JS 太菜了,读起来挺费劲的。比如 express.js 4.0, 这种应该是 Node 写
: 的比较好的 lib 了吧。
: 一些 router.get/post 什么的函数, 我看懂怎么来的都比较费劲。
: 感觉 JS 比 Python 还不注重类型,我用 JetBrains webstorm 在读代码,对函数变量
: 用 jump to declaration,经常找不到, 就给出长长的一串备选...
: 看着看着郁闷了,上大招,设 break point, 跟着走,这样搞 C++ 代码也容易看懂。
: 然后发现对于各种 callback 匿名函数,因为注册 callback chain 和 实际调用匿名
: 函数是分开发生的,于是整个逻辑又分成了2部分。比如 breakpoint 开始肯定会停在

d*******r
发帖数: 3299
7
展开说说呢,是不是熟悉一些 commonJS 的常用pattern,看 node.js 的 lib 代码能
高效些?
但是就我所知,Node.js 设计本身参考了 commonJS,至于 Node 那些 JS lib 的实现
,未必遵循了

【在 l**********n 的大作中提到】
: npm module都是遵循commonJS的,有啥不好读的?
l**********n
发帖数: 8443
8
一般的npm module都有spec吧。

【在 d*******r 的大作中提到】
: 展开说说呢,是不是熟悉一些 commonJS 的常用pattern,看 node.js 的 lib 代码能
: 高效些?
: 但是就我所知,Node.js 设计本身参考了 commonJS,至于 Node 那些 JS lib 的实现
: ,未必遵循了

r***y
发帖数: 4379
9
我是跟statically typed 的对比来讲的.
碰到 dynamically typed, 文件多了, 行数多了. 尤其再不是自己写的, 你这些没用,
一样抓瞎
是 statically typed 的, 几万个文件的项目都没啥压力

【在 l**********n 的大作中提到】
: 先写测试,再写代码
d*******r
发帖数: 3299
10
你指的是API文档吗?express4.0 是有的,还不错
我是说想看懂内部实现

【在 l**********n 的大作中提到】
: 一般的npm module都有spec吧。
相关主题
请推荐linux下c++的IDE感觉免费的visual studio是Windows最强IDE
工具简单未必是好事-swiftJetBrains要做C# IDE了?
不要小看jsTypescript是不是实际上反 functional programming 的?
进入Programming版参与讨论
l**********n
发帖数: 8443
11
你没必要都要看懂实现。Java你也不是都能看懂原代码怎么实现的。那个是需要花时间
的。

【在 d*******r 的大作中提到】
: 你指的是API文档吗?express4.0 是有的,还不错
: 我是说想看懂内部实现

l**********n
发帖数: 8443
12
我一般都是直接在元代码里搜索。一行一行读没时间。

【在 l**********n 的大作中提到】
: 你没必要都要看懂实现。Java你也不是都能看懂原代码怎么实现的。那个是需要花时间
: 的。

l**********n
发帖数: 8443
13
说实话,JS代码量比Java少多了。

【在 l**********n 的大作中提到】
: 我一般都是直接在元代码里搜索。一行一行读没时间。
d*******r
发帖数: 3299
14
我之前的背景决定其实 C++ 读得最多,Java 用的少,当然 Java 读起来应该更舒服
没想到 JS 这么难读,少是少,怎么看着比 C++ 还 magical
可能还是我 JS 太菜

【在 l**********n 的大作中提到】
: 说实话,JS代码量比Java少多了。
l**********n
发帖数: 8443
15
好好学学grunt,干活应该很轻松。grunt就是Java的ant或者maven。
d*******r
发帖数: 3299
16
grunt看我同事在用,据说很好
我还是觉得精确理解 API 有点辛苦,比如 express.js 4.0 的 API
http://expressjs.com/4x/api.html
基本就只有最简单的例子和一点解释,数参数都没有类型注释,也没有详细解释,JS
community 都是这种 style?
感觉 Python 的 API 文档都比这种详细多了, 至少参数啥的有时还解释下.
不知道参数类型,用着总是慎得慌,不能总是下面这样吧:
copy, paste, and modify, then do some black-box tests... expect the magical
programs always work correctly without knowing precise type information of
the parameters...!?
于是去看源码,发现源码也很 magical, 然后看得有点小郁闷

【在 l**********n 的大作中提到】
: 好好学学grunt,干活应该很轻松。grunt就是Java的ant或者maven。
p*****2
发帖数: 21240
17
这个doc看起来没啥问题呀

magical

【在 d*******r 的大作中提到】
: grunt看我同事在用,据说很好
: 我还是觉得精确理解 API 有点辛苦,比如 express.js 4.0 的 API
: http://expressjs.com/4x/api.html
: 基本就只有最简单的例子和一点解释,数参数都没有类型注释,也没有详细解释,JS
: community 都是这种 style?
: 感觉 Python 的 API 文档都比这种详细多了, 至少参数啥的有时还解释下.
: 不知道参数类型,用着总是慎得慌,不能总是下面这样吧:
: copy, paste, and modify, then do some black-box tests... expect the magical
: programs always work correctly without knowing precise type information of
: the parameters...!?

d*******r
发帖数: 3299
18
Go 现在主要在哪一块流行?

【在 M****z 的大作中提到】
: 真正的菜鸟在此,所以转投golang了。至少看得明白一些。不过做web app的前端还会
: 和js碰面的。

d*******r
发帖数: 3299
19
挺好,就是不详细,参数类型一个都没解释

【在 p*****2 的大作中提到】
: 这个doc看起来没啥问题呀
:
: magical

p*****2
发帖数: 21240
20
grunt 跟 cake 比是啥情况呀

【在 l**********n 的大作中提到】
: 好好学学grunt,干活应该很轻松。grunt就是Java的ant或者maven。
相关主题
这几天试了一下linux c++ IDE用了一下node.js, 看来js要一同天下啊,只要那些人
Webstorm 值得花29刀买不?go真是好东西
Be $#%!ing explicitjava笑node的
进入Programming版参与讨论
p*****2
发帖数: 21240
21
感觉也是最web server

【在 d*******r 的大作中提到】
: Go 现在主要在哪一块流行?
s****r
发帖数: 125
22
异步代码本来就不好读,和是不是js没有关系。这也是google为什么要搞go的原因。

【在 d*******r 的大作中提到】
: 最近在用 Node.js 做个简单的 RESTful service, 顺便看了下 Node.js 的一些 lib,
: 感觉异步JS代码是挺难读的。
: 可能是我 JS 太菜了,读起来挺费劲的。比如 express.js 4.0, 这种应该是 Node 写
: 的比较好的 lib 了吧。
: 一些 router.get/post 什么的函数, 我看懂怎么来的都比较费劲。
: 感觉 JS 比 Python 还不注重类型,我用 JetBrains webstorm 在读代码,对函数变量
: 用 jump to declaration,经常找不到, 就给出长长的一串备选...
: 看着看着郁闷了,上大招,设 break point, 跟着走,这样搞 C++ 代码也容易看懂。
: 然后发现对于各种 callback 匿名函数,因为注册 callback chain 和 实际调用匿名
: 函数是分开发生的,于是整个逻辑又分成了2部分。比如 breakpoint 开始肯定会停在

r***y
发帖数: 4379
23
grunt 真心不错.
扫了一眼文档, 感觉更象 java 的 gradle , 不是 ant, maven

【在 l**********n 的大作中提到】
: 好好学学grunt,干活应该很轻松。grunt就是Java的ant或者maven。
N*****m
发帖数: 42603
24
grunt更主流吧

【在 p*****2 的大作中提到】
: grunt 跟 cake 比是啥情况呀
p*****2
发帖数: 21240
25
我怎么感觉grunt用处不大呢 不过cake也break了

【在 N*****m 的大作中提到】
: grunt更主流吧
N*****m
发帖数: 42603
26
用处太大了,基本上就是java的maven, gradle

【在 p*****2 的大作中提到】
: 我怎么感觉grunt用处不大呢 不过cake也break了
p*****2
发帖数: 21240
27
说说常用的plugin?

【在 N*****m 的大作中提到】
: 用处太大了,基本上就是java的maven, gradle
N*****m
发帖数: 42603
28
karma, serve, watch

【在 p*****2 的大作中提到】
: 说说常用的plugin?
p*****2
发帖数: 21240
29
karma是写前端用的?

【在 N*****m 的大作中提到】
: karma, serve, watch
p*****2
发帖数: 21240
30
我用coffee做rest 有什么推荐的plugin吗

【在 N*****m 的大作中提到】
: karma, serve, watch
相关主题
感觉解决JS callback hell的最佳解决办法就是MonadJetBrains自宫,大家可以给丫烧纸了,atom很牛的样子
有写ui的朋友么,如何让代码清晰 简练ruby,python有没有自己的ide?
学了这么多语言发现还是coffeescript最好用动态语言和script的区别在那里?
进入Programming版参与讨论
N*****m
发帖数: 42603
31


【在 p*****2 的大作中提到】
: karma是写前端用的?
N*****m
发帖数: 42603
32
watch and serve总要用吧
watch可以监视coffee script

【在 p*****2 的大作中提到】
: 我用coffee做rest 有什么推荐的plugin吗
p*****2
发帖数: 21240
33
好 回头看看

【在 N*****m 的大作中提到】
: watch and serve总要用吧
: watch可以监视coffee script

s***o
发帖数: 2191
34
建议先学clojure,等你一眼扫过去就能数清是用了108个还是204个括号时,回头再看
这些js code 肯定跟玩似的 :)

【在 d*******r 的大作中提到】
: 最近在用 Node.js 做个简单的 RESTful service, 顺便看了下 Node.js 的一些 lib,
: 感觉异步JS代码是挺难读的。
: 可能是我 JS 太菜了,读起来挺费劲的。比如 express.js 4.0, 这种应该是 Node 写
: 的比较好的 lib 了吧。
: 一些 router.get/post 什么的函数, 我看懂怎么来的都比较费劲。
: 感觉 JS 比 Python 还不注重类型,我用 JetBrains webstorm 在读代码,对函数变量
: 用 jump to declaration,经常找不到, 就给出长长的一串备选...
: 看着看着郁闷了,上大招,设 break point, 跟着走,这样搞 C++ 代码也容易看懂。
: 然后发现对于各种 callback 匿名函数,因为注册 callback chain 和 实际调用匿名
: 函数是分开发生的,于是整个逻辑又分成了2部分。比如 breakpoint 开始肯定会停在

l**********n
发帖数: 8443
35
就没有一种editor帮你找括号的匹配?

【在 s***o 的大作中提到】
: 建议先学clojure,等你一眼扫过去就能数清是用了108个还是204个括号时,回头再看
: 这些js code 肯定跟玩似的 :)

h******b
发帖数: 6055
36
用netbeans,点一个{,对应的}自动highlight. 自动排版,自动列function/class表。
这些所有IDE都有吧。 很容易啊。
楼主非要读懂node的source code那层次就不一样了。 糙快猛就是直接拿来用不需要
问为什么啊。
m******t
发帖数: 635
37
lighttable

【在 l**********n 的大作中提到】
: 就没有一种editor帮你找括号的匹配?
g****t
发帖数: 31659
38
这世界上其实哪有那么多big projects阿。很多大的projects其实都是设计或者需求分
析没弄好,或者business logic没弄清楚。
我记得发明Unix那哥们当初就这么说的。他说科学家都是从小到大的。
Einstein方程也就几行而已。他喜欢写的也是小的solid程序。

This is why we said JS is not for big projects. Not even IDE could find
out how sth is defined in JS sometimes. Imagine you'd use it to write
hundred of thousand lines of code. It'd be a mess.

【在 N********n 的大作中提到】
: This is why we said JS is not for big projects. Not even IDE could find
: out how sth is defined in JS sometimes. Imagine you'd use it to write
: hundred of thousand lines of code. It'd be a mess.

d*******r
发帖数: 3299
39
所以 Unix/Linux 那一套管理 project 的东西 (make, bash) 真是无比难用 ......

【在 g****t 的大作中提到】
: 这世界上其实哪有那么多big projects阿。很多大的projects其实都是设计或者需求分
: 析没弄好,或者business logic没弄清楚。
: 我记得发明Unix那哥们当初就这么说的。他说科学家都是从小到大的。
: Einstein方程也就几行而已。他喜欢写的也是小的solid程序。
:
: This is why we said JS is not for big projects. Not even IDE could find
: out how sth is defined in JS sometimes. Imagine you'd use it to write
: hundred of thousand lines of code. It'd be a mess.

d*******r
发帖数: 3299
40
还没读 Node.js 的代码,据说总量不大。
读了下 express.js 这个 lib 的代码,因为它 API 解释太精炼了.

表。

【在 h******b 的大作中提到】
: 用netbeans,点一个{,对应的}自动highlight. 自动排版,自动列function/class表。
: 这些所有IDE都有吧。 很容易啊。
: 楼主非要读懂node的source code那层次就不一样了。 糙快猛就是直接拿来用不需要
: 问为什么啊。

相关主题
动态语言和script的区别在那里?工具简单未必是好事-swift
我来说说go的目标对手吧不要小看js
请推荐linux下c++的IDE感觉免费的visual studio是Windows最强IDE
进入Programming版参与讨论
d*******r
发帖数: 3299
41
没有那么多括号数吧,就是各种 JS 匿名函数,和动态生成的函数,有点多

【在 s***o 的大作中提到】
: 建议先学clojure,等你一眼扫过去就能数清是用了108个还是204个括号时,回头再看
: 这些js code 肯定跟玩似的 :)

L***s
发帖数: 1148
42
我觉得还是熟练程度吧
当初学Python就没有对类型问题抓狂过?
用熟了就好了

【在 d*******r 的大作中提到】
: 最近在用 Node.js 做个简单的 RESTful service, 顺便看了下 Node.js 的一些 lib,
: 感觉异步JS代码是挺难读的。
: 可能是我 JS 太菜了,读起来挺费劲的。比如 express.js 4.0, 这种应该是 Node 写
: 的比较好的 lib 了吧。
: 一些 router.get/post 什么的函数, 我看懂怎么来的都比较费劲。
: 感觉 JS 比 Python 还不注重类型,我用 JetBrains webstorm 在读代码,对函数变量
: 用 jump to declaration,经常找不到, 就给出长长的一串备选...
: 看着看着郁闷了,上大招,设 break point, 跟着走,这样搞 C++ 代码也容易看懂。
: 然后发现对于各种 callback 匿名函数,因为注册 callback chain 和 实际调用匿名
: 函数是分开发生的,于是整个逻辑又分成了2部分。比如 breakpoint 开始肯定会停在

d*******r
发帖数: 3299
43
我也是写 Python 的,Python 代码比 JS 直白多了...

【在 L***s 的大作中提到】
: 我觉得还是熟练程度吧
: 当初学Python就没有对类型问题抓狂过?
: 用熟了就好了

M****z
发帖数: 1058
44
感觉很多是在玩而已。
web后端的话,搜golang martini框架,这个势头最猛。
和node比,可以拿来就用的东西会少很多。不过你有基础的人应该学的快。我是啥基础
都没有,就写过不到半年的objective-c。node我也是发现看不懂,去看express源代码
,仍然不懂,问了个朋友,讲明白了,不过我还是不太容易理解。时间紧迫,正好有
golang看着势头不错,初学门槛似乎比node低,就放弃了。
不过我太菜,上stackoverflow问了一直没搞明白的callback,人家讲解了一二,压根
没明白是怎么回事。可能是还不习惯这种方式吧。
仅供参考。

【在 d*******r 的大作中提到】
: Go 现在主要在哪一块流行?
l*********s
发帖数: 5409
45
一回事。不过python的括号是比较少,代码格式又严格,没js这么乱。

【在 d*******r 的大作中提到】
: 我也是写 Python 的,Python 代码比 JS 直白多了...
p*****2
发帖数: 21240
46

用coffee就简单很多了吧?

【在 l*********s 的大作中提到】
: 一回事。不过python的括号是比较少,代码格式又严格,没js这么乱。
t**r
发帖数: 3428
47
楼主很奇怪。
有括号才不乱呢
没括号才乱死了。
d*******r
发帖数: 3299
48
我冤... 我压根没想讨论括号问题... 是前面 stdio 硬扯到 clojure 括号多云云...
我哪点关心括号了,你仔细再读读帖子呢

【在 t**r 的大作中提到】
: 楼主很奇怪。
: 有括号才不乱呢
: 没括号才乱死了。

1 (共1页)
进入Programming版参与讨论
相关主题
go真是好东西我来说说go的目标对手吧
java笑node的请推荐linux下c++的IDE
感觉解决JS callback hell的最佳解决办法就是Monad工具简单未必是好事-swift
有写ui的朋友么,如何让代码清晰 简练不要小看js
学了这么多语言发现还是coffeescript最好用感觉免费的visual studio是Windows最强IDE
JetBrains自宫,大家可以给丫烧纸了,atom很牛的样子JetBrains要做C# IDE了?
ruby,python有没有自己的ide?Typescript是不是实际上反 functional programming 的?
动态语言和script的区别在那里?这几天试了一下linux c++ IDE
相关话题的讨论汇总
话题: js话题: 代码话题: python话题: callback话题: lib