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吧。
|
|
|
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。
|
|
|
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
|
|
|
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那层次就不一样了。 糙快猛就是直接拿来用不需要 : 问为什么啊。
|
|
|
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 的大作中提到】 : 楼主很奇怪。 : 有括号才不乱呢 : 没括号才乱死了。
|