找回密码
 FreeOZ用户注册
楼主: ubuntuhk
打印 上一主题 下一主题

[IT技术] 讨论一下AngularJS和Node.js等Web技术

[复制链接]
151#
发表于 8-7-2014 23:12:57 | 只看该作者
提示: 作者被禁止或删除, 无法发言
本帖最后由 black_zerg 于 8-7-2014 23:05 编辑

webstorm 算不错, 但和textlime都要钱。不要钱的有netbeans 和 eclipse,算是凑合用,没有VS快。 notepadd++强烈推荐,还不要钱。

说起来我就不明白为啥很多人爱用macbook,多麻烦。 澳洲客户都用windows,非要搞mac属于找不自在,而且我用过几次不觉得有什么好。

说到JS我因为做java出身,所以对强类型和面向对象有直觉上的好感,所以有阵子对typescript也非常感兴趣。不过后来发现好像没有类我也一样写代码,也没有什么特别不爽的地方。我有阵子写JS都爱用class,就是定义他那个类,在prototype上加函数,用的时候都new,现在看看不用这种面向对象的东东 好像也行。

Douglas Crockford 就反对这个 New :

I have been writing JavaScript for 8 years now, and I have never once found need to use an uber function. The super idea is fairly important in the classical pattern, but it appears to be unnecessary in the prototypal and functional patterns. I now see my early attempts to support the classical model in JavaScript as a mistake.

我觉得其实也蛮有道理。比如angular就没有定义类要你继承。
实在要类,下面这种函数就可以当类使
function Man(){
    var age = 0;
    var _name = 'Jack'
    return {
        setName:function(name){
              _name = name
        }
    }
}

不过我继承用的习惯了,不大清楚如何不用继承而实现复杂的东西。 不知道大家觉得是不是继承可以完全被某类模式替代?


评分

参与人数 1威望 +50 收起 理由
ubuntuhk + 50 谢谢分享!

查看全部评分

回复  

使用道具 举报

152#
 楼主| 发表于 9-7-2014 00:41:11 | 只看该作者


webstorm和texlime并不贵,而且textlime可以无限使用试用版(当然不赞成这样做,大家都是写软件混饭吃的,理所当然要支持一下)。

关于mac和macbook,越资深的windows使用者或开发者,适应期越长,反而是那些菜鸟用户对mac系统更喜爱,对于我来说,从一开始的不知道怎么给mac安装软件,到适应mac的快捷键,也花了不少时间,有一段时间是mac和windows混用,后来发现更混乱(特别是快捷键有些微区别,容易用混),到现在完全转移到mac平台作为日常使用和开发,越用越喜欢。

喜欢mac的原因,主要是好看,从软件到硬件非常一致的那种优雅,以前天天对着小黑,虽然觉得好用(用两三年,各个部件开始老化之后,也不好用了),但还是不喜欢它的外表;

然后就是mac os省心省事,不用担心windows各种烦(防病毒、木马、C盘空间总是不够用、系统越用越慢很想格式化重装又飞不起时间);

还有它基于BSD,控制台和我经常开发的平台Linux接近,让我觉得比较亲近一些。
回复  

使用道具 举报

153#
 楼主| 发表于 9-7-2014 01:09:21 | 只看该作者
black_zerg 发表于 8-7-2014 22:12
webstorm 算不错, 但和textlime都要钱。不要钱的有netbeans 和 eclipse,算是凑合用,没有VS快。 notepadd ...


你这里提到的例子,本来它就是JavaScript里的类(一开始我也非常混淆JavaScript里面的万能function,到现在还有点晕)。

关于JavaScript的继承,这篇文章看起来写得不错(JavaScript里面要支持继承,还是挺迂回):
《JavaScript的实例化与继承:请停止使用new关键字》
http://www.infoq.com/cn/articles ... ion-and-inheritance
回复  

使用道具 举报

154#
发表于 9-7-2014 02:11:42 | 只看该作者
我比较认同的一种观点是:实际开发中能够继承的模型其实非常有限,比如“正方形”就必须非常别扭的继承自“四边形”基类。

用composition pattern取代inheritence pattern也是主流设计模式。

我公司的产品是个10年前设计的产品,最初用C#1.1写的,后来升级到C#4.0。鉴于10年前的设计,继承层次很多很复杂,出问题时那些virtual override methods追溯起来非常困难。多态看起来很美,其实没什么大用。

评分

参与人数 1威望 +30 收起 理由
ubuntuhk + 30 谢谢分享!

查看全部评分

回复  

使用道具 举报

155#
发表于 9-7-2014 08:15:40 来自手机 | 只看该作者
提示: 作者被禁止或删除, 无法发言
本帖最后由 black_zerg 于 9-7-2014 07:31 编辑
ubuntuhk 发表于 9-7-2014 00:09
你这里提到的例子,本来它就是JavaScript里的类(一开始我也非常混淆JavaScript里面的万能function,到 ...


Technically the 'class' in JavaScript is something else, in my example the prototype link is not utilized at all
回复  

使用道具 举报

156#
发表于 9-7-2014 08:20:40 来自手机 | 只看该作者
提示: 作者被禁止或删除, 无法发言
本帖最后由 black_zerg 于 9-7-2014 07:42 编辑

I am not entirely convinced that new is always bad. I haven't implemented complex application without the 'new'. It must be doable,but also the code needs to look good. I only use function class most of the time now, but have been using classic oop design for most of my JavaScript libs. Next time I will avoid new and inheritance in the whole design, see if it will work

ok here is an example, a drawing application. Following OOP you will have Canvas(hold shapes) & Shape class(which has a draw method), then Polygon, then Rectangle, then TextBox. How should I reuse code and separate concerns without  inheritance? What is the functional way?
回复  

使用道具 举报

157#
发表于 9-7-2014 11:07:42 | 只看该作者
本帖最后由 woodheadz 于 9-7-2014 10:13 编辑
superopengl 发表于 9-7-2014 01:11
我比较认同的一种观点是:实际开发中能够继承的模型其实非常有限,比如“正方形”就必须非常别扭的继承自“ ...


同意。 类的继承实际实际上是想通过一个手段同时完成对象间交互协议描述,以及工作逻辑复用两个事。在业务逻辑比较单纯的时候可能挺方便。但现实情况是常常会有多个因素同时作用导致子类发生变化,这时候还用继承就很容易乱。
所以现在设计中经常采用接口来对对象间交互协议进行描述,用独立的helper类来完成逻辑的复用。 继承用的少很多。

评分

参与人数 1威望 +40 收起 理由
ubuntuhk + 40 谢谢分享!

查看全部评分

回复  

使用道具 举报

158#
发表于 9-7-2014 12:34:54 来自手机 | 只看该作者
提示: 作者被禁止或删除, 无法发言
So we only implement no extend right. To be practical,maybe we can set the rule that only one level inheritance is allowed?
回复  

使用道具 举报

159#
发表于 9-7-2014 15:02:49 | 只看该作者
ubuntuhk 发表于 8-7-2014 21:54
IDE方面,我参加了两次meetup,看到大多数人用的是webstorm和textlime,这两个IDE都是跨平台的。很多 ...

webstorm是挺不错的
回复  

使用道具 举报

160#
发表于 9-7-2014 17:55:49 来自手机 | 只看该作者
提示: 作者被禁止或删除, 无法发言
本帖最后由 black_zerg 于 9-7-2014 19:12 编辑

I think inheritance is rarely needed in web apps. Because web apps are too simple. Just crud, hit server, populate the page, read values back. nothing to inherit. That is why JavaScript rules the world.
我觉得其实游戏还是蛮有意思的。不过估计游戏要跑得快 JS目前还是弱一点。但跑个2d应该是没问题的
回复  

使用道具 举报

161#
 楼主| 发表于 9-7-2014 21:05:32 | 只看该作者
black_zerg 发表于 9-7-2014 07:15
Technically the 'class' in JavaScript is something else, in my example the prototype link is not ...


没太看懂你说什么,class这个关键字目前还没正式加入JavaScript吧,我看到大家探讨探讨的所谓class,都是基于funciton关键字的。
回复  

使用道具 举报

162#
发表于 9-7-2014 21:50:58 | 只看该作者
提示: 作者被禁止或删除, 无法发言
本帖最后由 black_zerg 于 9-7-2014 21:11 编辑

是的class关键字没用。 确实基于function但是有两种:
第一种是接近主流类概念的
function Man(){
       this.location=0;
}
Man.prototype={
     walk:function(){
         this.location++;
     }
}
用的时候是 new Man(); 这个在方法里都得用this.
这个里面牵涉到prototype的链。可以联一长串。可以达到类似继承的效果。 这个类会建在内存,new的时候会建实例,链接到这个类。我的理解这玩意是设计者心里想的javascript类
据说下个版本就会用上class关键字,这玩意就好看了

还有一种就是

function Man(){
     var location=0;
     return {
          walk:function(){
               location++;
          }
     }
}
这种就不会用new 也不用this. 跟一般的oop语言差很多。有人觉得js就不该有类,就用这个就行。
我个人的理解就是这个不能算类,就是函数运行期造个Object而已。但是javascript 有个很牛的东西就是function scope,所以可以用这个方法达到类似类的效果。用起来还是很不一样,比如继承,比如那些个properties都私有了,只有方法能公开。比如第二个方式造出来的实例,就没有 man.location

因为我是java出身的,所以设计复杂东西的时候,不自觉的就会用第一种。这第一种类其实还是很好用的就是丑了点,但是很容易理解。因为就跟一般类差不多

评分

参与人数 1威望 +50 收起 理由
ubuntuhk + 50 谢谢分享!

查看全部评分

回复  

使用道具 举报

163#
 楼主| 发表于 9-7-2014 22:18:55 | 只看该作者
black_zerg 发表于 9-7-2014 20:50
是的class关键字没用。 确实基于function但是有两种:
第一种是接近主流类概念的
function Man(){



实际上有三种方法可以设计JavaScript的类,这个博客写得还不错(但是还是不能掩盖JavaScript的类定义还是有点丑,我个人的看法):
http://www.ruanyifeng.com/blog/2 ... vascript_class.html

不过大家也基本都是建议用你提到的第一种方法。
回复  

使用道具 举报

164#
发表于 10-7-2014 08:37:42 来自手机 | 只看该作者
提示: 作者被禁止或删除, 无法发言
Thanks UB, excellent links
回复  

使用道具 举报

165#
发表于 10-7-2014 14:03:10 | 只看该作者
ubuntuhk 发表于 8-7-2014 23:41
webstorm和texlime并不贵,而且textlime可以无限使用试用版(当然不赞成这样做,大家都是写软件混饭吃的 ...

顺便问一下,买webstorm的钱是自己掏腰包呢?还是让老板付呢?如果让老板付的话,以啥理由呢?
回复  

使用道具 举报

166#
 楼主| 发表于 10-7-2014 14:15:30 | 只看该作者
DDD888 发表于 10-7-2014 13:03
顺便问一下,买webstorm的钱是自己掏腰包呢?还是让老板付呢?如果让老板付的话,以啥理由呢?


大部分公司乐于提供有助于提高开发效率的设备和工具。

不愿意的就只能自己掏腰包了,同时开始准备找好点的下家吧
回复  

使用道具 举报

167#
发表于 10-7-2014 14:22:17 | 只看该作者
ubuntuhk 发表于 10-7-2014 13:15
大部分公司乐于提供有助于提高开发效率的设备和工具。

不愿意的就只能自己掏腰包了,同时开始准备找 ...

问题是好点的下家很难找啊
回复  

使用道具 举报

168#
 楼主| 发表于 10-7-2014 14:29:38 | 只看该作者
DDD888 发表于 10-7-2014 13:22
问题是好点的下家很难找啊



那就只能骑驴找马了。

这个webstorm的personal license也就49美刀,当减肥饿两餐吧
回复  

使用道具 举报

169#
发表于 10-7-2014 14:50:16 | 只看该作者
ubuntuhk 发表于 10-7-2014 13:29
那就只能骑驴找马了。

这个webstorm的personal license也就49美刀,当减肥饿两餐吧

在谈加工资的时候,我和老板说我用自己的钱来买了30寸的显示器工作用,他问我又没有人要你用30寸的显示器工作用
回复  

使用道具 举报

170#
 楼主| 发表于 10-7-2014 14:53:34 | 只看该作者
DDD888 发表于 10-7-2014 13:50
在谈加工资的时候,我和老板说我用自己的钱来买了30寸的显示器工作用,他问我又没有人要你用30寸的显示器 ...


你是说用自己掏钱买工作用的设备来和老板讨论加工资?

我觉得买显示器这种事情,如果希望老板能帮你报销,那就买之前和老板讨论是否允许。

加工资就用自己的工作业绩和老板来谈,会更有说服力一些。
回复  

使用道具 举报

171#
发表于 10-7-2014 15:03:38 | 只看该作者
本帖最后由 DDD888 于 10-7-2014 14:08 编辑
ubuntuhk 发表于 10-7-2014 13:53
你是说用自己掏钱买工作用的设备来和老板讨论加工资?

我觉得买显示器这种事情,如果希望老板能帮你 ...


他问我为啥他给我今年NZ$2,500 bonus的时候我没有非常激动的感谢他(我和他提要加工资到十万新西兰元以上,他不愿意,说这样的话会比公司的CEO工资还高),我和他解释说我扣税后实际到手是NZ$1700左右,我买个30寸的显示器刚好花了这点钱,是这个情况提到的,我自己diy一台计算机从amazon买配件花了NZ$2200以上,所以得到的bonus还不够买计算机的钱,他告诉我说他绝不会为员工买超过NZ$2000的计算机的,他情愿员工用慢的计算机,这样一来写出来的程序用到客户的快的机器上就会更快

我的工作业绩我觉的不错,澳大利亚客户非常满意我们公司的服务, 老板这周一去澳大利亚签了合同,拿到了三年期的合约,还另外拿到了新西兰网站的合同,原先只是澳大利亚的合同。我写的网站有29家澳大利亚公司使用,每天web request 50万次
回复  

使用道具 举报

172#
 楼主| 发表于 10-7-2014 15:12:35 | 只看该作者
DDD888 发表于 10-7-2014 14:03
他问我为啥他给我今年NZ$2,500 bonus的时候我没有非常激动的感谢他(我和他提要加工资到十万新西兰元以 ...



其实我也不擅长和老板谈工资,不过谈工资主要就是看谁的筹码多,老板肯定是想尽量少花钱,自己多留点利润或减少点开支。如果你没有更好的下家,老板又死抠门,也只能是继续委曲求全,签支票的笔在他手里。

好像有点离题了,咱们还是接着聊web技术,怎么侃工资,提高自己的收入,我觉得应该重新开个帖子,应该会很实用
回复  

使用道具 举报

173#
发表于 10-7-2014 15:21:03 | 只看该作者
本帖最后由 jojopig2002 于 10-7-2014 14:22 编辑
ubuntuhk 发表于 9-7-2014 21:18
实际上有三种方法可以设计JavaScript的类,这个博客写得还不错(但是还是不能掩盖JavaScript的类定义 ...


上次你介绍的js core也有js类的3种构建方式。
http://dmitrysoshnikov.com/ecmascript/javascript-the-core/
现在js也支持传统class的定义方法,我们公司现在也用这个方法来写类,传统的定义方法,可读性最强,同时这种定义方法在各种编辑器里浏览起来非常方便, js prototype和funtion prototype创建的class,可读性稍差。另一个好处是其他oo语言转过来的,上手很快。

class Foo {
  constructor(name) {
    this._name = name;
  }

  getName() {
    return this._name;
  }

}


class Bar extends Foo {
  getName() {
    return super.getName() + ' Doe';
  }
}

var bar = new Bar('John');
console.log(bar.getName()); // John Doe

评分

参与人数 1威望 +50 收起 理由
ubuntuhk + 50 谢谢分享!

查看全部评分

回复  

使用道具 举报

174#
发表于 10-7-2014 15:23:29 | 只看该作者
本帖最后由 superopengl 于 10-7-2014 13:25 编辑
DDD888 发表于 10-7-2014 13:03
他问我为啥他给我今年NZ$2,500 bonus的时候我没有非常激动的感谢他(我和他提要加工资到十万新西兰元以 ...

看来你老板的思维还停留在90年代——能跑就行。程序员的机子再好也快不过服务器。程序员用好机子是提高效率,开发、debug都快,跟最终运行速度毛关系没有。

如果开发机子慢,程序员可能会盲目地纠结于一些效率问题,导致发布推迟。而这些问题在高性能的server上跑的时候根本不会发生。
再有就是慢机子和可能跑不了更多的能提高工作效率的新开发工具和插件。

你老板鼠目寸光,不懂软件。换老板。道不同不相为谋。

评分

参与人数 1威望 +50 收起 理由
ubuntuhk + 50 我很赞同!老板自己可以倒是用慢的机器做测.

查看全部评分

回复  

使用道具 举报

175#
发表于 10-7-2014 15:30:23 | 只看该作者
jojopig2002 发表于 10-7-2014 14:21
上次你介绍的js core也有js类的3种构建方式。
http://dmitrysoshnikov.com/ecmascript/javascript-the ...

这class 是所有浏览器都支持吗?
回复  

使用道具 举报

176#
 楼主| 发表于 10-7-2014 15:39:22 | 只看该作者
jojopig2002 发表于 10-7-2014 14:21
上次你介绍的js core也有js类的3种构建方式。
http://dmitrysoshnikov.com/ecmascript/javascript-the ...



谢谢分享,这个link非常好,很仔细地分析了JavaScript的函数、对象、类的定义背后的机制。

不过class的关键字目前应该还没有正式公布(如果没理解错的话,应该是在JavaScript 2.0/ ECMAScript-262 v6中会正式公布),浏览器上的兼容性支持方面应该不好,你们是用在服务器端开发(nodejs?)吗?

回复  

使用道具 举报

177#
发表于 10-7-2014 16:20:41 来自手机 | 只看该作者
提示: 作者被禁止或删除, 无法发言
I really hope that I could work from home. DDD works from home if I remember correctly. It's a good job
回复  

使用道具 举报

178#
 楼主| 发表于 10-7-2014 20:12:07 | 只看该作者
分享一篇Node.js的文章,值得一读:

《Javascript 的前后端统一是个"笑话"吗?》
http://jianshu.io/p/5f6637bf15fd
回复  

使用道具 举报

179#
发表于 10-7-2014 20:33:45 | 只看该作者
black_zerg 发表于 10-7-2014 15:20
I really hope that I could work from home. DDD works from home if I remember correctly. It's a good  ...

围城啦

这就和中国人想移民到澳大利亚,或者已经移民生活在澳大利亚但有想回中国的一样

在家工作的想到办公室工作,在办公室工作的想在家工作
回复  

使用道具 举报

180#
发表于 10-7-2014 20:39:05 | 只看该作者
DDD888 发表于 10-7-2014 19:33
围城啦

这就和中国人想移民到澳大利亚,或者已经移民生活在澳大利亚但有想回中国的一样

我好像也有点这种感觉。老觉得上班和生活分不开,没有中间的状态转换
回复  

使用道具 举报

您需要登录后才可以回帖 登录 | FreeOZ用户注册

本版积分规则

小黑屋|手机版|Archiver|FreeOZ论坛

GMT+11, 27-10-2024 04:20 , Processed in 0.046133 second(s), 53 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表