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

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

[复制链接]
61#
发表于 29-6-2014 02:35:57 | 只看该作者
让人抓狂的是:库、框架、工具、模版实在多如牛毛,让人吐血!
Backbone.js: Provides models with key-value binding and custom events, collections, and connects it all to your existing API over a RESTful JSON interface.
AngularJS: A toolset based on extending the HTML vocabulary for your application.
Ember.js: Provides template written in the Handlebars templating language, views, controllers, models and a router.
Knockout: Aims to simplify JavaScript UIs by applying the Model-View-View Model (MVVM) pattern.
Agility.js: Aims to let developers write maintainable and reusable browser code without the verbose or infrastructural overhead found in other MVC libraries.
CanJS: Focuses on striking a balance between size, ease of use, safety, speed and flexibility.
Spine: A lightweight framework that strives to have the most friendly documentation for any JavaScript framework available.
Maria: Based on the original MVC flavor as it was used in Smalltalk - aka "the Gang of Four MVC".
ExtJS: Amongst other things offers plugin-free charting, and modern UI widgets.
Sammy.js: A small JavaScript framework developed to provide a basic structure for developing JavaScript applications.
Stapes.js: A tiny framework that aims to be easy to fit in an existing codebase, and because of its size it's suitable for mobile development.
Epitome: Epitome is a MVC* (MVP) framework for MooTools.
soma.js: Tries help developers to write loosely-coupled applications to increase scalability and maintainability.
PlastronJS: MVC framework for Closure Library and Closure Compiler.
rAppid.js: Lets you encapsulate complexity into components which can be easy used like HTML elements in your application.
Serenade.js: Tries to follow the ideas of classical MVC than competing frameworks.
Kendo UI: Combines jQuery-based widgets, an MVVM framework, themes, templates, and more.

评分

参与人数 3威望 +120 收起 理由
ubuntuhk + 50 颇有万马奔腾的气势:)
black_zerg + 20 神马都是浮云
nickyang + 50 你太有才了!

查看全部评分

回复  

使用道具 举报

62#
发表于 29-6-2014 08:04:46 | 只看该作者
回复  

使用道具 举报

63#
发表于 29-6-2014 11:38:31 | 只看该作者
职场也是一个先有鸡,先有蛋的迷局。很多公司要现成的鸡,但是都不肯孵蛋。而实际上,除非新项目,很多公司用不到这些,只是招人的时候赶时髦,谁还好意思说我要找asp.net web form的程序员?即便公司一大堆web form,甚至vb6,classic asp的东西。

现在把web当作服务/数据提供越来越明显,本来web的设计只是纯文本和可连接来换取任何地方,任何系统都可以展现。自从javascript开始上位,web的功能是越来越强,但是原本那种简单明了的兼容性就弱了。浏览器都在打仗。html5实际上是浏览器厂商共同提出的。真正的w3c对于web的标准化方向xhtml,脱离了实际,基本没有web可以符合完整的xhtml要求。

微软这几年一直很被动,只有在.net 2.0的时候风光了一回。本来很希望学会.net,走遍天下都不怕的。现在是不行了,程序员将越来越陷入厂商混战,平台混战,框架混战,而实际能学的,能用的又有多少呢?关键还是看工作内容啊。。。还有兴趣。。。
回复  

使用道具 举报

64#
发表于 29-6-2014 11:46:28 | 只看该作者
ubuntuhk 发表于 28-6-2014 23:58
mason这段话我看懂了一半,学到一个新词MVVM(Model-View—ViewModel),搜到这个网页,有个评论挺有趣 ...

从二进制到纯文本我感觉是tcp到http,两种协议服务的需求不同。最早的html/http是讲究纯文本的通用性的。但是后来对html/http的发展产生了更多的需求,通过css/javascript/json/restful这些技术又是可以满足一些新需求的,这样http上就不单是跑纯文本了,纯文本形式描述数据,进而提供服务就出来了。SPDY什么的,可能是想让二进制服务能跑在http上,跨越防火墙。而json主要是能通过javascript直接解析,统一了序列化方面的标准,开销比二进制大一些,但是兼容性也应该更大。

web是比较动态,大家都想做领头羊,又都是推自己的一套理解和做法,而这个纯文本的平台还真能提供这样的舞台给他们表演,蛮不错的。
回复  

使用道具 举报

65#
发表于 29-6-2014 14:57:37 | 只看该作者
提示: 作者被禁止或删除, 无法发言
本帖最后由 black_zerg 于 29-6-2014 14:43 编辑
ubuntuhk 发表于 28-6-2014 23:23
不知道你说的交互性很重的网站有什么例子吗?AngularJS肯定不是依赖Model来“画”交互,Model在Augla ...


angularJS会检查model实例是否有变化,如果变化了,就刷新这部分页面。所以它的实现理念是依赖于Model和模板的。angularJS的价值就在于一般的情况下,他能够让你很容易把model的变化反映到界面上。如果我的应用场景很特殊,必须创建很多自己的directive (而且这些directive 完全没有重用性),那就失去了使用angularJS的意义。

可能我没有说明什么叫做交互重,举个例子 office的系列软件,photoshop,各种游戏,就是本质上是软件程序,并不是网站。并不是围绕一个domain model的CRUD。gmail , google map我就会归为这类。

看起来好像我在反对AngularJS,其实不是那么回事。我只是说没有银弹。如果你觉得这个好,第一要动手验证,第二必须要明白其设计理念,不然就是手里有锤子,看什么都是钉子。现在浏览器都不错,javascript功能也已经很强。没有必要太依赖于框架。像jquery这种,我写控件就不会依赖他,但是在写网站的时候觉得有用就包括进来。总之就是什么顺手用什么。

AngularJS 在我看来是绝对的开发网页的利器。加上是google来的,学一下是完全值得的。但是如果我去开发系统,就得看团队,大家一起商量,还要看老板和客户。大家觉得好才是真的好。

评分

参与人数 2威望 +70 收起 理由
cais + 20 谢谢分享!
ubuntuhk + 50 谢谢分享!

查看全部评分

回复  

使用道具 举报

66#
发表于 29-6-2014 18:33:39 | 只看该作者
我已经患上了Javascript学习资料收集强迫症:

Javascript基础
http://eloquentjavascript.net/contents.html
https://developer.mozilla.org/en ... ction_to_JavaScript
https://developer.mozilla.org/en ... rectslug=JavaScript
http://yuiblog.com/crockford/
http://javascript.crockford.com/
http://bonsaiden.github.io/JavaScript-Garden/
http://learn.jquery.com/
http://www.ecma-international.org/ecma-262/5.1/

Javascript对象模型
https://developer.mozilla.org/en ... of_the_Object_Model
http://stackoverflow.com/questio ... class-in-javascript
http://stackoverflow.com/questio ... nstructor-property/
http://stackoverflow.com/questio ... he-new-keyword-here
http://javascriptweblog.wordpres ... part-2-inheritance/

Javascript类型
http://jibbering.com/faq/notes/type-conversion/
http://javascriptweblog.wordpres ... ascript-primitives/
http://javascriptweblog.wordpres ... pt-typeof-operator/
http://tobyho.com/2011/01/28/checking-types-in-javascript/
http://stackoverflow.com/questio ... heck-js-object-type

Javascript创建对象
http://a-developer-life.blogspot ... -in-javascript.html
http://stackoverflow.com/questio ... eate-instead-of-new
http://stackoverflow.com/questio ... totype-is-undefined
http://www.htmlgoodies.com/beyon ... -in-javascript.html
http://stackoverflow.com/questio ... bject-create-vs-new
https://developer.mozilla.org/en ... jects/Object/create
http://www.adobe.com/devnet/html ... bject-creation.html
http://stackoverflow.com/questio ... var-necessary-befor

Javascript Libraries 大全
http://jster.net/
http://todomvc.com/
http://www.jsdb.io/
http://www.nodecloud.org/

Frontend
http://angularjs.org/
http://emberjs.com/
http://backbonejs.org/
http://underscorejs.org
http://knockoutjs.com
http://dojotoolkit.org/
http://getbootstrap.com/
http://embeddedjs.com/
http://handlebarsjs.com/
http://sass-lang.com/
http://lesscss.org/
http://requirejs.org/
http://bower.io/
http://browserify.org/

Backend
http://nodejs.org/
http://gruntjs.com
http://expressjs.com/
http://geddyjs.org/

其他工具
http://dailyjs.com/
http://codepen.io/
http://www.appcelerator.com/
http://www.meteor.com/
http://yeoman.io/

评分

参与人数 1威望 +50 收起 理由
ubuntuhk + 50 很给力!

查看全部评分

回复  

使用道具 举报

67#
 楼主| 发表于 29-6-2014 22:29:22 | 只看该作者
viewpl 发表于 29-6-2014 01:35
让人抓狂的是:库、框架、工具、模版实在多如牛毛,让人吐血!
Backbone.js: Provides models with key-va ...


感觉现在是Web的战国时代,各方神仙各显神通,就看最后谁能突围而出,建立一个一统江山的标准。
回复  

使用道具 举报

68#
 楼主| 发表于 29-6-2014 22:31:47 | 只看该作者
mason00 发表于 29-6-2014 10:38
职场也是一个先有鸡,先有蛋的迷局。很多公司要现成的鸡,但是都不肯孵蛋。而实际上,除非新项目,很多公司 ...



未来的世界,归根结底会是web的世界,这个趋势难以阻挡,程序员只有投身web大潮,顺势而为。
回复  

使用道具 举报

69#
发表于 29-6-2014 22:57:34 | 只看该作者
ubuntuhk 发表于 29-6-2014 21:31
未来的世界,归根结底会是web的世界,这个趋势难以阻挡,程序员只有投身web大潮,顺势而为。

难说,我觉得今后还是平台之争。google I/O 这次推出的adriod L,大力开发smart TV,wearable,Home等各种设备领域。我觉得google对未来多种设备之间的通信有一些蓝图,而这个大架构是基于adriod平台的。web是个开放平台,历来越是兼容好,越是跨平台的技术越是难挣钱,赚大钱的都是封闭技术。比如google的搜索,苹果的ios,微软的各种os,office。web现在流行,主要是公司解决一般业务还是需要一些统一的普遍解决方案。这一块算是企业级的。未来新的利润点,还是在个人移动设备,智能设备上。现在看苹果是主流,google的眼光和设想以及研发实力是最强的。微软历来都是跟风,走得慢一拍但是稳。从windows 8的metro设计来看,大方向是OK的,就是在如何解决desktop的问题上决策有问题,想搞大统一。其实desktop是legacy market了,主要是企业用户的使用习惯不可能向个人用户那样转。搞得很多企业都被迫转向其他平台。因为跟随windows 8和微软的代价太大,同时其他解决方案也不差太多了。

评分

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

查看全部评分

回复  

使用道具 举报

70#
 楼主| 发表于 29-6-2014 22:57:40 | 只看该作者
mason00 发表于 29-6-2014 10:46
从二进制到纯文本我感觉是tcp到http,两种协议服务的需求不同。最早的html/http是讲究纯文本的通用性的。 ...


仔细看了一下SPDY,它实际上是在TCP和HTTP之间的一层协议,用于复用单一TCP连接,提过多路的HTTP资源,并且用压缩和SSL传输,提高速度和安全性。但是在应用层是不需要关心这个,只是浏览器和Web server之间的协议(服务器端可以利用SPDY来主动推送资源到客户端,这个会影响一些后端的开发模式)。
回复  

使用道具 举报

71#
 楼主| 发表于 29-6-2014 23:06:10 | 只看该作者
black_zerg 发表于 29-6-2014 13:57
angularJS会检查model实例是否有变化,如果变化了,就刷新这部分页面。所以它的实现理念是依赖于Model ...


大概明白你的意思,不过限于自己在Web开发上的经验不足,无法评论太多,现在的AngularJS肯定不是一个完美的可以替代其它框架的终极框架,还是需要配合其它框架来实现复杂的Web应用。

最后两句我很赞同,一个再先进的框架是否应该采用,还是要看公司和团队的能力以及客观条件再决定,不能盲目采用。
回复  

使用道具 举报

72#
 楼主| 发表于 29-6-2014 23:07:08 | 只看该作者
viewpl 发表于 29-6-2014 17:33
我已经患上了Javascript学习资料收集强迫症:

Javascript基础

很好的信息收集工作,有需要的适合挑着看,赞一个
回复  

使用道具 举报

73#
发表于 29-6-2014 23:16:12 | 只看该作者
还有一个新闻,Adriod的手机总体卖的比苹果多了,但是app market的利润还是苹果最好。为什么?就是Adriod是开放平台,价格低甚至免费。所以用户消费习惯,采用低价平台的必然没有太高的消费能力,这同样在开发人员中适用。Adriod的app多半以植入广告赚钱,收费app不是第一选择,要收费,也是低廉收费。

web不是一个好赚钱的平台,这和它的设计初衷有关系。web上最赚钱的是广告,这也和它的设计初衷有密切的关系。提供服务赚钱的还是封闭平台好,独此一家,门槛就是付费。web有时候因为太通用,可以视作硬件无关的纯软件平台,这样的平台又是开放的,复制和拷贝的成本就太低了。很多产品,web只是一个用户界面,背后的软硬件完全又是另一套东西。比如google的搜索。

记得Jobs相关视频里谁说过那句话,软件公司最终是要自己设计硬件的。这一点,google和苹果,包括以前的IBM和Oracle都是做得不错的,就连微软,也有intel联盟,做支撑。赚钱的产品通常是软硬件打包销售。Jobs的眼光独到之处,就是能找到硬件和软件最大利润的可能性。这种眼光也推动了软硬件的发展方向,也就是找到市场的需求,甚至创造市场的需求。

唉,想想自己,70%的代码是循环迭代,20%大概是封装,继承,有10%算是在找一些好的解决办法去处理一些tricky的问题,完全没有程序员的感觉啊。。。

评分

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

查看全部评分

回复  

使用道具 举报

74#
发表于 30-6-2014 00:06:56 | 只看该作者
mason00 发表于 29-6-2014 21:57
难说,我觉得今后还是平台之争。google I/O 这次推出的adriod L,大力开发smart TV,wearable,Home等各种 ...

平台太多。作为老程序员,感觉总是慢半拍。
就算是只想专注做后端,这要求也会因为前端平台的不同而有所变化。

评分

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

查看全部评分

回复  

使用道具 举报

75#
发表于 1-7-2014 13:45:11 | 只看该作者
强帖留名
回复  

使用道具 举报

76#
发表于 1-7-2014 15:38:09 | 只看该作者
mason00 发表于 29-6-2014 22:16
还有一个新闻,Adriod的手机总体卖的比苹果多了,但是app market的利润还是苹果最好。为什么?就是Adriod是 ...

做web确实很少会有“程序员”的感觉,因为web的层次太高了。如果做底层,天天和内存、驱动玩;或者做DSP相关的,比如自己写个数字滤波器,做个音频压缩算法,我觉得这才有感觉。

当然,web做到十分深入之后,也是可以关注到底层的。

可惜澳洲这边真正的“程序员”工作太少了。
回复  

使用道具 举报

77#
 楼主| 发表于 1-7-2014 19:01:17 | 只看该作者
mason00 发表于 29-6-2014 22:16
还有一个新闻,Adriod的手机总体卖的比苹果多了,但是app market的利润还是苹果最好。为什么?就是Adriod是 ...


苹果的做法没有别家能模仿得来,再者,乔布斯仙去之后,苹果的红旗还能再抗几年是个未知之数,我相信Google的开放平台生命力会更顽强,直到有个更有革命性的公司领先它。

对于程序员来说,我觉得要做的还是持续学习,Web虽然很难直接赚钱,但是Web已经成为基础设施,不管哪个平台,最后都要在Web这个大舞台上唱戏,在澳洲这个相对孤立的环境,Web应用只会越来越重要。
回复  

使用道具 举报

78#
 楼主| 发表于 1-7-2014 19:06:56 | 只看该作者
shyaka 发表于 1-7-2014 14:38
做web确实很少会有“程序员”的感觉,因为web的层次太高了。如果做底层,天天和内存、驱动玩;或者做DSP相 ...


澳洲也有一小部分做工业控制方面、游戏引擎等相对底层的公司,不过这方面的工作机会确实远比中国和美国少。

底层的东西也可以通过Web来封装,提供更广阔的应用。比如最近开始炒概念的智能灯泡,就是一个缩影,通过Wifi和TCP/IP、HTTP进行控制灯泡。
http://www.36kr.com/p/153717.html

回复  

使用道具 举报

79#
 楼主| 发表于 1-7-2014 19:07:40 | 只看该作者


欢迎也来谈谈你的Web开发经验
回复  

使用道具 举报

80#
发表于 1-7-2014 20:23:21 | 只看该作者
ubuntuhk 发表于 1-7-2014 18:06
澳洲也有一小部分做工业控制方面、游戏引擎等相对底层的公司,不过这方面的工作机会确实远比中国和美国 ...

稍微看了下链接,理解的不知道对不对。我感觉web在这里的角色还是上层应用,控制灯泡的开关和亮度的还是硬件和驱动。上层应用只能看到被封装好的接口,然后调用一下。

不过web development也不需要这么底层,因为http本来就不是设计来做这些事的。TCP/IP也只是3/4层的协议,负责数据的传输,并不是用来也干不了其他事。

做网络开发是一件很有趣也很有技术的活。当然,作为“程序员”,个人观点,遇到做更底层的机会就不要放过。就算是只做网络开发,也不能仅仅满足于搞点框架,把网页写出来就完了。浏览器的实现逻辑是什么,HTTP协议到底是咋运行的,这些其实很重要也很有用。可惜澳洲的公司似乎都仅仅看中你会什么框架,合同工嘛,立马能上手,干完滚蛋
回复  

使用道具 举报

81#
 楼主| 发表于 1-7-2014 20:29:15 | 只看该作者
shyaka 发表于 1-7-2014 19:23
稍微看了下链接,理解的不知道对不对。我感觉web在这里的角色还是上层应用,控制灯泡的开关和亮度的还是硬 ...


嗯,你理解的没错,Web主要是针对封装好的接口做各种各样的上层应用。

我能理解你说的做偏底层的开发那种成就感,我也做过ASM级别的嵌入式开发,不过现在不敢回首了,虽然是很有成就感,但是调试的过程太痛苦了,当然现在大多是C级别的嵌入式开发,比以前会幸福一些。

评分

参与人数 1威望 +50 收起 理由
shyaka + 50 我很赞同!

查看全部评分

回复  

使用道具 举报

82#
发表于 4-7-2014 09:12:43 来自手机 | 只看该作者
我最近也在做nodejs的项目。有空交流一下。大家怎么联系啊?
回复  

使用道具 举报

83#
 楼主| 发表于 4-7-2014 20:06:21 | 只看该作者
fu122 发表于 4-7-2014 08:12
我最近也在做nodejs的项目。有空交流一下。大家怎么联系啊?



大家主要还是在论坛交流,你是在澳洲的公司做nodejs方面的项目吗?客户端用什么技术?
回复  

使用道具 举报

84#
发表于 5-7-2014 05:40:36 | 只看该作者
cais 发表于 29-6-2014 22:06
平台太多。作为老程序员,感觉总是慢半拍。
就算是只想专注做后端,这要求也会因为前端平台的不同而有所 ...

跟得太快也不见得好,太累。可以跟踪观察,看到大家都往那个方向走了,再出手。

评分

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

查看全部评分

回复  

使用道具 举报

85#
发表于 5-7-2014 05:42:58 | 只看该作者
本帖最后由 superopengl 于 5-7-2014 04:10 编辑
shyaka 发表于 1-7-2014 13:38
做web确实很少会有“程序员”的感觉,因为web的层次太高了。如果做底层,天天和内存、驱动玩;或者做DSP相 ...


Web是应用需求大,相对于那些底层算法和硬件操作驱动。其实都差不多,硬件驱动就跟硬件借口打交道,算法就跟内存数据原理等打交道,Web就是跟HTTP协议界面等打交道——在一定的规则基础之上实现一些东西去迎合另一种规则,思想哲学都差不多。
回复  

使用道具 举报

86#
发表于 5-7-2014 05:45:04 | 只看该作者
ubuntuhk 发表于 1-7-2014 17:01
苹果的做法没有别家能模仿得来,再者,乔布斯仙去之后,苹果的红旗还能再抗几年是个未知之数,我相信Go ...

现在赚钱的不是应用本身,而是通过应用程序capture来的数据。就像银行不是主要靠手续费赚钱,而是凭收集存款放贷赚钱。

评分

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

查看全部评分

回复  

使用道具 举报

87#
发表于 5-7-2014 06:08:52 | 只看该作者
本帖最后由 superopengl 于 6-7-2014 15:51 编辑

最近在公司里做了一个小项目的prototype,MongoDB + Node.js/Express as REST APIs + AngularJS。

优点
  • 数据层、逻辑层、表现层都说JavaScript。
  • 开发速度飞快,尤其AngularJS的表现层,根本无需编译,服务器端修改好了,Browser F5就搞定了(这是个prototype的项目,没有做API version,所以修改JavaScript没有改变URL)。
  • MongoDB这个NoSQL的东西真是方便呀,没有schema束手束脚。(schema都在REST Service端实现)
  • 正如AngularJS文档所说,基本上使用了AngularJS就不需要jQuery了。

缺点
  • Node.js的callback方式开发也觉得很有意思,当然在读code的时候会有点困难。
  • 用JetBrains WebStorm,已经非常不错的IDE了。但因为是动态语言,读code时,Go to declaration时,非常不可靠,经常找不到或找到不相关的类库里去。
  • 第一次load各种JavaScript类库(bootstrap.js, angular.js, jQuery.js ...)时需要点时间

有待观望
  • JavaScript需要靠unit tests确保contract,但感觉现在的testing framework还是太繁琐,代码经常比被测试代码还多。而且dependency code变更后,相应的mock code也得更新。因为JavaScript又不是强类型,所以确保code & testing一致性的工作都要靠程序员自己。这在team开发的时候很要命。不知用typescript开发,运行时翻译成JavaScript的方法会更高效。
  • 都说Node.js速度快,但没在实践中测试过,有待观望。
  • Biz Logic大部分推到Browser端做,如何保障安全性和代码不被篡改,数据可信还需要研究
  • 跨domain访问JavaScript(CORS)的安全性和便利性的控制

评分

参与人数 4威望 +140 收起 理由
ubuntuhk + 50 你太有才了!
black_zerg + 20 你太有才了!
cais + 20 谢谢分享!
karl.lee.2004 + 50 谢谢分享!

查看全部评分

回复  

使用道具 举报

88#
发表于 5-7-2014 21:47:08 | 只看该作者
提示: 作者被禁止或删除, 无法发言
我觉得单实施 angular 遇到的阻力会比较小。一起上感觉冒险。楼上能否画个图来看看你是怎么实施的
回复  

使用道具 举报

89#
发表于 6-7-2014 17:46:41 | 只看该作者
这是high level的层次图

评分

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

查看全部评分

回复  

使用道具 举报

90#
发表于 6-7-2014 20:34:34 | 只看该作者
superopengl 发表于 6-7-2014 16:46
这是high level的层次图

你如何处理security?business logic 在 client side很危险,你不怕被hack?
回复  

使用道具 举报

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

本版积分规则

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

GMT+11, 27-10-2024 04:21 , Processed in 0.079243 second(s), 57 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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