FreeOZ论坛

标题: 讨论一下AngularJS和Node.js等Web技术 [打印本页]

作者: ubuntuhk    时间: 27-6-2014 00:32
标题: 讨论一下AngularJS和Node.js等Web技术
最近两年这两个Javascript框架开始火热起来了,我刚刚开始接触这些框架,但是一下子被震撼了,和我原来比较熟悉的php比较,有耳目一新的感觉,让人非常激动。

论坛上应该有不少Web开发程序员,希望能和大家一起分享交流一下这方面的技术。
作者: ubuntuhk    时间: 27-6-2014 00:34
有兴趣的同学欢迎跟帖一起讨论,我是这方面的菜鸟,正在从HTML、CSS、Javascript开始学起,感觉重新回炉ing。
作者: ubuntuhk    时间: 27-6-2014 00:37
我现在正在开始看Javascript方面的书,根据网上做的功课,大家对有编程经验的同学,推荐的是:

Professional JavaScript for Web Developers
http://www.amazon.com/Profession ... Zakas/dp/1118026691

因为我对CSS也不太熟悉,所以也在看另外一本:
Learning Web Design:
http://www.learningwebdesign.com/

大家有推荐的书籍也不妨分享一下。
作者: ubuntuhk    时间: 27-6-2014 00:43
学习新技术的一个好办法是和同行交流,在大城市工作的同学有福气了,可以参加本地的meetup events,我参加了墨尔本的几个meetup groups,其中包括:
AngularJS
http://www.meetup.com/AngularJS-Melbourne/

Node.JS
http://www.meetup.com/MelbNodeJS/

我自己的感受来说,meetup活动还挺有帮助的。
作者: ubuntuhk    时间: 27-6-2014 00:48
node.js的文档非常丰富,有JavaScript编程经验的同学可以从这个网站入手,里面有实战教程:

http://nodeschool.io/

AngularJS是Google家的,文档做得也非常棒,从官网的教程开始就很不错:
https://angularjs.org/
作者: ubuntuhk    时间: 27-6-2014 00:51

上面占楼工作差不多了,得找点高手帮忙一起吆喝一下

@caoglish @cais
作者: cais    时间: 27-6-2014 01:26
我前端不行啊。最多就是照着别人写好的程序抄一抄。
作者: ubuntuhk    时间: 27-6-2014 01:46
cais 发表于 27-6-2014 00:26
我前端不行啊。最多就是照着别人写好的程序抄一抄。


天下文章一大抄,web开发也差不多

那就专注搞后端了?不想搅和一下前端?
作者: viewpl    时间: 27-6-2014 18:09
错过了web app热潮,这辈子错过的东西太多了
作者: mason00    时间: 27-6-2014 18:17
前端分两种,那种UI/UX的我没天份,比较注重css和页面设计,saas什么的,其实主要是浏览器兼容,快速模块化产生css的一种工具。另一种是前台mvc,knockout和anjular为主,一般后台往前台走的主要看这两个框架。node似乎属于后台技术,用了前台javascript语言,我一直没太搞明白node是干嘛的?现在在看mvvm框架。jQuery依然是前后台通信的主要手段。

ub在看node吗?介绍介绍咯
作者: trisun    时间: 27-6-2014 18:25
telerik 的东东也不错。
作者: ubuntuhk    时间: 27-6-2014 21:07
viewpl 发表于 27-6-2014 17:09
错过了web app热潮,这辈子错过的东西太多了


没错过,现在正热着呢,HTML5开始步入实用阶段,拥抱它吧
作者: ubuntuhk    时间: 27-6-2014 21:26
mason00 发表于 27-6-2014 17:17
前端分两种,那种UI/UX的我没天份,比较注重css和页面设计,saas什么的,其实主要是浏览器兼容,快速模块化 ...



nodejs完全是后端的框架技术,它只不过是采用了javascript作为这个框架的编程语言罢了。它的特点就是对异步、多并发有原生的支持,再加上开放的第三方库的管理工具NPM,极大地提高了开发效率,nodejs的竞争对手是各种后端框架。知乎上有些node.js的应用场景的讨论:
http://www.zhihu.com/question/19587881
http://www.zhihu.com/question/19653241
http://nodeguide.com/convincing_the_boss.html
http://www.toptal.com/nodejs/why-the-hell-would-i-use-node-js

我也才开始关注nodejs,不过因为之前对Javascript了解不够,所以尝试了一下nodeschool的入门级教程,发现需要恶补Javascript知识,看了Javascript之后,发现HTML5和CSS也不能忽略,所以目前主要还是在学习HTML5、CSS、Javascript。

nodejs,我自己的感觉是有点像PC时代的Delphi,入门可以很快,做出来的东西效率也很高,不过有点门槛,对于php之类的后端工程师,要转到node上,主要要适应一下异步开发的思路,然后就可以很快转到node上了。

据说一些大公司已经开始用nodejs改写一些后端,开发效率提高很多,而nodejs擅长异步,很好地解决了并发问题,对于大型网站是一个非常不错的架构。

小的网站也可以使用node.js进行快速开发,设置在非常低的嵌入式平台上,我见过nodejs运行的最低环境是一对墨尔本Geeks搞的DukeOS,运行在Raspberry PI的Linux上,可以控制PI的硬件,:
https://github.com/yellowducklabs/duckos

有关Raspberry Pi的介绍;
http://zh.wikipedia.org/wiki/%E6%A0%91%E8%8E%93%E6%B4%BE


作者: ubuntuhk    时间: 27-6-2014 21:28
trisun 发表于 27-6-2014 17:25
telerik 的东东也不错。


谢谢分享,各种有趣的框架真多。

trisun实际项目用了哪些框架,也来介绍一下吧
作者: mason00    时间: 27-6-2014 21:48
ubuntuhk 发表于 27-6-2014 20:26
nodejs完全是后端的框架技术,它只不过是采用了javascript作为这个框架的编程语言罢了。它的特点就是 ...

node既可以在windows也可以在linux上吗?怎么实现跨平台的呢?是依赖google的javascript引擎做到的吗?
作者: mason00    时间: 27-6-2014 21:50
这里的书不错,简单易懂短小,很多都是新技术
http://www.syncfusion.com/resources/techportal/ebooks
作者: ubuntuhk    时间: 27-6-2014 21:50
mason00 发表于 27-6-2014 20:48
node既可以在windows也可以在linux上吗?怎么实现跨平台的呢?是依赖google的javascript引擎做到的吗?


可以的,node在windows、linux、mac上都可以运行,解释器就是google的chrome javascript引擎。
作者: mason00    时间: 27-6-2014 21:53
看着意思好像node可以取代一些server端的框架,asp.net这种是node的竞争对手吗?按这种趋势,前后端都没有asp.net的位置啊,asp.net mvc 5/ web api什么的,说到底都只是为前台提供json数据,唉。。。
作者: ubuntuhk    时间: 27-6-2014 21:54
mason00 发表于 27-6-2014 20:50
这里的书不错,简单易懂短小,很多都是新技术
http://www.syncfusion.com/resources/techportal/ebooks


不错,现在就需要一些短小精悍的教程。
作者: ubuntuhk    时间: 27-6-2014 21:59
mason00 发表于 27-6-2014 20:53
看着意思好像node可以取代一些server端的框架,asp.net这种是node的竞争对手吗?按这种趋势,前后端都没有a ...


node.js本身还是有一些局限的,比如它不适合用来做计算密集型的后端,所以一些应用会需要混合架构,而node.js本身也提供一些c/c++的扩展来弥补不足:
http://nodejs.org/api/addons.html

还有一种做法就是通过nginx之类前端反向代理的来耦合不通的后端服务器,以实现复杂的应用。

asp.net历史比较久,还是会有一些遗留的项目或者一些旧style的开发者继续使用,但是作为一个web开发者,要保竞争力的话,就不能忽视各种新技术了。
作者: mason00    时间: 27-6-2014 22:06
ubuntuhk 发表于 27-6-2014 20:59
node.js本身还是有一些局限的,比如它不适合用来做计算密集型的后端,所以一些应用会需要混合架构,而n ...

微软日子不好过啊,微软的开发人员也找不到北。asp.net一直就赶不上潮流,ajax流行了,web form吃不开,刚弄好ajax.net,mvc来了。刚弄好asp.net mvc,前端angular js mvvm来了,现在又出node。本来用微软是花钱省力气,现在微软的技术又不好用,和很多免费的解决方案都拼不过哦
作者: caoglish    时间: 27-6-2014 22:14
我用nodejs作为开发辅助使用的。它的grunt,npm,bower,jshint等工具实在是太强大了,谁用谁知道。虽然nodejs宣传是后端开发,但是现在把它作为前端辅助开发工具,也是非常有市场的。

前端会使用到的nodejs的一些工具
frontend developer需要懂的技术

另外作为程序员,css我更加关注css的preprocessor和css框架和一些css库,而不是去关注某种效果是怎么实现的。css的preprocessor我用lessjs,也属于javascript的solution。

另外一个javascript的命令行环境是phantomjs,作为浏览器操作自动化,可以用来ui测试和网页操作自动化。

还有mongodb,一个javascript操作的noSQL数据库




作者: mason00    时间: 27-6-2014 22:16
能想到用google的v8做后台vm也是蛮厉害的,不知道这种人是怎么训练出来的,人生来确实是不一样啊,环境也不一样,这帮人怎么开始职业生涯的呢?在学校搞科研?
作者: mason00    时间: 27-6-2014 22:24
caoglish 发表于 27-6-2014 21:14
我用nodejs作为开发辅助使用的。它的grunt,npm,bower,jshint等工具实在是太强大了,谁用谁知道。虽然nod ...

你这个很front end,我最吃不消的就是less和sass,现在css流行就是因为mobile页面要支持各种分辨率,这个课题本来后台开发是很不喜欢的。一般解决方案是在后台通过客户端请求参数来定位不同设备的专有页面。唉。。。现在前端也开始牛人辈出了,不理会后端那一套了。不过也要分应用场合,支持设备多的统一页面是比较难设计,维护的,特别是一些特有功能。而很多企业内部的商业程序,其对前端设备控制较好,依然是需要针对可预期前台的最佳性能和功能的发挥,跨设备到不是很重要。即便要开始向mobile转移了,也会更多的开一个专门的mobile项目,使用相同的后端服务。不过潮流都是玩新的,显得很牛逼
作者: finger|regnif    时间: 27-6-2014 22:28
要不lz你发起个项目, 大家没事贡献点代码. 比如搞一个Node.js版本的freeoz, 用造轮子的办法来学习.
作者: caoglish    时间: 27-6-2014 22:34
mason00 发表于 27-6-2014 21:24
你这个很front end,我最吃不消的就是less和sass,现在css流行就是因为mobile页面要支持各种分辨率,这个 ...

less和sass和跨设备支持没有直接的联系。less和sass是用来简化css才创造出来的。css本身就有跨设备的语法,但是写法太复杂。由于css缺少了很多程序员喜欢的功能,这才有了less和sass的出现,把less和sass的语法导出css语法。

现在已经很少直接写css了,都必须至少使用某一个preprocessor写css,不然css会把程序员搞死的。

另外preprocessor都是和liveReload合用的,这样大大简化了编写css的难度了。


作者: caoglish    时间: 27-6-2014 22:38
mason00 发表于 27-6-2014 21:24
你这个很front end,我最吃不消的就是less和sass,现在css流行就是因为mobile页面要支持各种分辨率,这个 ...

现在关于垮设备网站的理论很多,RWD和设备检测各占自己的市场,twitter支持RWD,google支持设备检测。这些都是更具不同需求,而有的不同解决方案,更具不同情况进行使用。所以两个方案不是十分的对立
作者: viewpl    时间: 27-6-2014 23:19
RWD。。。我做的一个背单词软件正好也叫RWD,得改名了,杯具
作者: black_zerg    时间: 27-6-2014 23:36
提示: 作者被禁止或删除, 无法发言 agree> nodejs作为开发辅助使用

AngularJS, looks interesting. Probably good for simple & conventional websites.  Risky (or doesn't add much value) for complex one page app.
作者: cais    时间: 28-6-2014 00:03
black_zerg 发表于 27-6-2014 22:36
agree> nodejs作为开发辅助使用

AngularJS, looks interesting. Probably good for simple & convention ...

呵呵。你也改变看法啦?
作者: ubuntuhk    时间: 28-6-2014 00:53
mason00 发表于 27-6-2014 21:06
微软日子不好过啊,微软的开发人员也找不到北。asp.net一直就赶不上潮流,ajax流行了,web form吃不开,刚 ...


嗯,不知不觉,我离开微软的平台(MSVC,VS20xx)差不多五年了,现在除了工作上要建VPN需要用到Windows Server之外(Windows上建的L2TP VPN就是比Linux稳定,不知道为什么),别的地方好像真没有需要碰微软的东西。
作者: ubuntuhk    时间: 28-6-2014 00:55
caoglish 发表于 27-6-2014 21:14
我用nodejs作为开发辅助使用的。它的grunt,npm,bower,jshint等工具实在是太强大了,谁用谁知道。虽然nod ...


好多名词我也是第一次听说(bower、jshint、phantomis、lessjs),不觉明历啊
作者: ubuntuhk    时间: 28-6-2014 00:56
mason00 发表于 27-6-2014 21:16
能想到用google的v8做后台vm也是蛮厉害的,不知道这种人是怎么训练出来的,人生来确实是不一样啊,环境也不 ...


这或许就是Creative Thinking的威力吧,希望我们华人的下一辈有多点这种人才出现。
作者: ubuntuhk    时间: 28-6-2014 01:01
finger|regnif 发表于 27-6-2014 21:28
要不lz你发起个项目, 大家没事贡献点代码. 比如搞一个Node.js版本的freeoz, 用造轮子的办法来学习.


不瞒你说,我是有类似的念头,现在用着discuz这一套软件,感觉不是很好,总希望改进,但心有余而力不足,现在看了nodejs和angularjs这些技术,让我有点跃跃欲试,如果 @caoglish @trisun @cais 等同学也有此想法,我们可以试试造个轮子
作者: ubuntuhk    时间: 28-6-2014 01:02
viewpl 发表于 27-6-2014 22:19
RWD。。。我做的一个背单词软件正好也叫RWD,得改名了,杯具


在什么平台上开发的?iOS、Android?
作者: ubuntuhk    时间: 28-6-2014 01:05
black_zerg 发表于 27-6-2014 22:36
agree> nodejs作为开发辅助使用

AngularJS, looks interesting. Probably good for simple & convention ...

balck zerg现在做哪方面开发,你给我的感觉是全能程序员
作者: ubuntuhk    时间: 28-6-2014 01:07
分享一片Paypal采用Node.js开发的文章:

PayPal为什么从Java迁移到Node.js,性能提高一倍,文件代码减少44%

中文版:http://ourjs.com/detail/52a914f0127c763203000008
原文:https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/


作者: caoglish    时间: 28-6-2014 01:28
ubuntuhk 发表于 28-6-2014 00:01
不瞒你说,我是有类似的念头,现在用着discuz这一套软件,感觉不是很好,总希望改进,但心有余而力不足 ...

我觉得应该根据自己的兴趣,在github上找自己喜欢的项目贡献代码吧。

我现在就在看code problem这个项目,一些经典算法,就当练脑子了,里面有些代码不正确,我也在帮忙加内容。
作者: caoglish    时间: 28-6-2014 01:30
大家可以了解现代开发流程的方式,我建议可以多看看youtube上paul irish的视频,Paul  Irish是前端开发大神,多看看他的视频对自己会很有启发。
Paul Irish, "JavaScript Development Workflow of 2013"
Paul Irish on Web Application Development Workflow
作者: viewpl    时间: 28-6-2014 01:54
ubuntuhk 发表于 28-6-2014 00:02
在什么平台上开发的?iOS、Android?

本来是个桌面程序。最近打算做在浏览器里,一边也学Frontend开发。将来再做在手机里咯。
作者: DDD888    时间: 28-6-2014 06:28
本帖最后由 DDD888 于 28-6-2014 05:29 编辑
ubuntuhk 发表于 28-6-2014 00:07
分享一片Paypal采用Node.js开发的文章:

PayPal为什么从Java迁移到Node.js,性能提高一倍,文件代码减少 ...


https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/

很奇怪,对单用户pages/sec node.js 只有3.3,java只有1.8,我写的asp.net mvc网站肯定超过该数字

paypal用的服务器的规格肯定比我用的要好,他们有钱啦
作者: karl.lee.2004    时间: 28-6-2014 07:02
ubuntuhk 发表于 28-6-2014 00:07
分享一片Paypal采用Node.js开发的文章:

PayPal为什么从Java迁移到Node.js,性能提高一倍,文件代码减少 ...

“Node.js帮助我们将前、后端合二为一,现在我们一个全端团队即可解决用户的所有问题。”

这比较颠覆我一直以来对前后端开发的理解。

越是颠覆以往看法的,越是意味着突破。看来我也要开始关注一下Node.js了。

谢谢分享~
作者: 京昆家具家政    时间: 28-6-2014 12:13
想问一下怎样可以把广告什么的刷到第一页
作者: shyaka    时间: 28-6-2014 12:29
Angular.js是前端MVC框架,极其简单明了,学起来很快,个人感觉比backbone.js这种好用得多。

node.js是后端框架,直接编译.js文件,看起来很牛的样子,不过没深入用过。

less/sass是“编程式”CSS语言,实现那种很复杂的,样式重用率很高的页面很方便,因为支持变量,表达式这些。
作者: black_zerg    时间: 28-6-2014 12:59
提示: 作者被禁止或删除, 无法发言 本帖最后由 black_zerg 于 28-6-2014 12:59 编辑
ubuntuhk 发表于 28-6-2014 00:05
balck zerg现在做哪方面开发,你给我的感觉是全能程序员


我确实什么都做,从最早Delphi, sap 到 java,到现在c# 和python. javascript 方面是来了澳洲才认真去学。但我目前的工作和JS关系不大,纯兴趣。我的工作和一般的CRUD不搭界,所以视角和主流可能会不同  

我对框架的观念就是能不用就不用,如果真的用就必须了解你为什么用。类似于下面这个观点
https://www.youtube.com/watch?v=cTcdtfUjflI

我NodeJS做后端不是特别看好,觉得麻烦风险大,没看出什么特别的好来。跑些打包工具倒是不错

‘PayPal为什么从Java迁移到Node.js,性能提高一倍,文件代码减少44%’ 这个如果谈代码量, java代码本来就长,这个减少根本不算什么,写java的都是有IDE的。关键是否好读,好维护。性能提高倒是有意义的。要论代码表达能力,python最强,几行就能做很多事。NodeJS 都是异步,写点东西烦得很。

但是NodeJS有很多优点, javascript 其实表达能力很强,所以代码短,用文本编辑器就行。社区也不错,搞了这些年有很多好插件。 grunt用来打包之类很好使。所以如果你能控制环境,用来做自己的产品说不定不错。但我的那些客户估计不买账,我自己都不会有兴趣推。各种语言其实都成熟,如果想做没什么不能做的。
作者: black_zerg    时间: 28-6-2014 13:04
提示: 作者被禁止或删除, 无法发言
cais 发表于 27-6-2014 23:03
呵呵。你也改变看法啦?

看法没改变。AngularJS适合简单的,比较普遍的东西。他做了很多假设。这个思路本身是没什么问题的,功能越强就必须有观点。但是在我的工作领域里这个没有很大用处。

但怎么说呢,新技术总是好东西,创造各种机会,多摸摸没什么坏处。说到底我们都是跟着混的。有钱发,老板高兴最重要。
作者: ubuntuhk    时间: 28-6-2014 19:39
DDD888 发表于 28-6-2014 05:28
https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/

很奇怪,对单用户pages/sec no ...



呵呵,这个比较得基于同样的硬件平台,同一个业务功能、甚至同一个算法才有意义。
作者: ubuntuhk    时间: 28-6-2014 20:26
karl.lee.2004 发表于 28-6-2014 06:02
“Node.js帮助我们将前、后端合二为一,现在我们一个全端团队即可解决用户的所有问题。”

这比较颠覆我 ...


“Node.js帮助我们将前、后端合二为一,现在我们一个全端团队即可解决用户的所有问题。”

这句话还是有点笼统,不能适用于所有业务,正如cais提到的,还得具体业务具体分析,采用最适用的技术方案。不过保持开放思维(Open mind)确实是很有必要的。
作者: ubuntuhk    时间: 28-6-2014 20:28
shyaka 发表于 28-6-2014 11:29
Angular.js是前端MVC框架,极其简单明了,学起来很快,个人感觉比backbone.js这种好用得多。

node.js是后 ...


shyaka也是IT的啊,是Web前端工程师吗?

另外,纠正一下上面的说法一个小错误,node.js不“编译”js文件,它只是利用Google Chrome V8 JS引擎来解释JS脚本。 Google的另外一种web编程语言,Go,它是编译型语言。
作者: DDD888    时间: 28-6-2014 20:29
black_zerg 发表于 28-6-2014 12:04
看法没改变。AngularJS适合简单的,比较普遍的东西。他做了很多假设。这个思路本身是没什么问题的,功能越 ...

可以具体说一下哪些假设吗?
作者: ubuntuhk    时间: 28-6-2014 20:33
black_zerg 发表于 28-6-2014 11:59
我确实什么都做,从最早Delphi, sap 到 java,到现在c# 和python. javascript 方面是来了澳洲才认真去学 ...


看了你推荐的视频,主要是讨论框架打架及如何决定用或不用框架的事情,确实感觉各种框架漫天飞,AgularJS和Node.JS是我正儿八经才看的Web编程方面的框架,还没到深刻理解各种框架的阶段,暂时还不需要考虑框架打架的事情。另外,这个2014 JSConf的视频不错,找时间好好挑选来看看。


作者: ubuntuhk    时间: 28-6-2014 20:35
black_zerg 发表于 28-6-2014 12:04
看法没改变。AngularJS适合简单的,比较普遍的东西。他做了很多假设。这个思路本身是没什么问题的,功能越 ...


对于工作来说,选用何种框架或技术,最后一句确实是真理:有钱发,老板高兴最重要。

对于个人职业发展来说,多接触新东西是好事,不过还是要选择自己感兴趣的放心进行专研,不能面面俱到什么都想学,结果什么都学不好。
作者: ubuntuhk    时间: 28-6-2014 20:39
caoglish 发表于 28-6-2014 00:30
大家可以了解现代开发流程的方式,我建议可以多看看youtube上paul irish的视频,Paul  Irish是前端开发大神 ...



先收藏了,很想了解现代开发流程,caoglish有兴趣单独开个主题讨论这方面的话题吗,我相信对大家一定会有不小的帮助。


作者: black_zerg    时间: 28-6-2014 21:50
提示: 作者被禁止或删除, 无法发言 本帖最后由 black_zerg 于 28-6-2014 20:54 编辑
DDD888 发表于 28-6-2014 19:29
可以具体说一下哪些假设吗?


AngularJS 适合交互不是很重的网站,很容易能抽象出Model出来, 用户操作的目的就是改变model,从而再刷一下View。对于交互很重而且界面复杂的单页面程序(我比较感兴趣的领域上),我目前没有看出来这个如何能够帮助我。不管说是工作量还是说代码组织上。

举一个例子,如果你有很多页面,一个页面一个view一个model,angularJS可能比较好用。 但是如果你有一个单页面程序,这个程序有很多的界面控件,各个控件互相交互,用户也要控制各个控件。这时候EventBus,生命周期这些概念更有用一些。 angularJS就帮不上什么忙。你根本没办法抽象出你的model来,而且即使你抽象出来了,因为你界面的复杂,angularJS可能就根本没办法把你的这个model给‘画’出来。
作者: shyaka    时间: 28-6-2014 22:22
ubuntuhk 发表于 28-6-2014 19:28
shyaka也是IT的啊,是Web前端工程师吗?

另外,纠正一下上面的说法一个小错误,node.js不“编译”js ...

主要搞C,C++,C#,我只是路过。。。。

恩,用词有误,确实没有“编译”的过程,多谢纠正~~~
作者: ubuntuhk    时间: 29-6-2014 00:23
black_zerg 发表于 28-6-2014 20:50
AngularJS 适合交互不是很重的网站,很容易能抽象出Model出来, 用户操作的目的就是改变model,从而再刷一 ...



不知道你说的交互性很重的网站有什么例子吗?AngularJS肯定不是依赖Model来“画”交互,Model在AuglarJS里面的作用主要就是定义、存储数据的,它的Directive特性不知道你是否了解过(我不太了解,只是知道这个是AngularJS很重要的一个特性,可以用于建立复杂的网站)?

这里有一些用AngularJS建的网站例子,有没有交互性重的?
https://builtwith.angularjs.org/
作者: mason00    时间: 29-6-2014 00:37
框架就是用来解决普遍的问题。定制的页面,如果更注重交互,就是UI/UX设计的主要部分,很多交互,其数据操作层面倒反而简单,互动效果并不是建立在model变化上为主的。Single Page也可以拥有多个model来控制各个部分,如果页面效果不是由数据驱动的,mvvm提供的双向绑定作用就减少了。
作者: ubuntuhk    时间: 29-6-2014 00:58
mason00 发表于 28-6-2014 23:37
框架就是用来解决普遍的问题。定制的页面,如果更注重交互,就是UI/UX设计的主要部分,很多交互,其数据操作 ...


mason这段话我看懂了一半,学到一个新词MVVM(Model-View—ViewModel),搜到这个网页,有个评论挺有趣:
从Script到Code Blocks、Code Behind到MVC、MVP、MVVM
http://www.cnblogs.com/indream/p/3602348.html

当年用tcp返回二进制,就是web,但二进制解析麻烦。
后来搞了tcp返回字符串,就是web,但字符串不通用。
后来搞了一个cgi,在字符串中拼html,但太烦了。
后来搞了一个脚本开发,php,asp,jsp在html模板中写脚本,但代码不好管。
后来搞了一个mvc,把多数脚本写到专门代码中,但不省事。
后来搞了一个模板,把代码写在模板中分离开,但发现和脚本差不多。
后来搞了一个webform,由服务器生成html代码,但性能低。
后来搞了一个ajax,又把界面程序写在javascript中,但代码量大。
后来搞了一个ajax的mvc,把javascript和显示分离,但不实时。
后来又搞了一个websocket,由服务器推信息到前台,但支持不好。
后来又搞了一个restful,原理和当年tcp返回字符串没什么区别,但json字符串开销大。
后来又搞了 SPDY,QUIC, Protocol Buffers, WebP ,MessagePack,直接用二进制通信,恭喜最终回归原始社会。

一个web开发,搞了几十年又回到了原来tcp通信。

什么设计模式都是浮云,只要基于tcp/ip通信模式不改,

黄鼠狼变猫,变不掉黑嘴壳。

但总是有些人想发明银弹。

作者: ubuntuhk    时间: 29-6-2014 01:08
感叹,不管是Node.js还是AngularJS,都需要深厚的Javascript基础,继续看书去。。。
作者: viewpl    时间: 29-6-2014 02:35
让人抓狂的是:库、框架、工具、模版实在多如牛毛,让人吐血!
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.
作者: DDD888    时间: 29-6-2014 08:04
black_zerg 发表于 28-6-2014 20:50
AngularJS 适合交互不是很重的网站,很容易能抽象出Model出来, 用户操作的目的就是改变model,从而再刷一 ...

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

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

微软这几年一直很被动,只有在.net 2.0的时候风光了一回。本来很希望学会.net,走遍天下都不怕的。现在是不行了,程序员将越来越陷入厂商混战,平台混战,框架混战,而实际能学的,能用的又有多少呢?关键还是看工作内容啊。。。还有兴趣。。。
作者: mason00    时间: 29-6-2014 11:46
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是比较动态,大家都想做领头羊,又都是推自己的一套理解和做法,而这个纯文本的平台还真能提供这样的舞台给他们表演,蛮不错的。
作者: black_zerg    时间: 29-6-2014 14:57
提示: 作者被禁止或删除, 无法发言 本帖最后由 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来的,学一下是完全值得的。但是如果我去开发系统,就得看团队,大家一起商量,还要看老板和客户。大家觉得好才是真的好。
作者: viewpl    时间: 29-6-2014 18:33
我已经患上了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/
作者: ubuntuhk    时间: 29-6-2014 22:29
viewpl 发表于 29-6-2014 01:35
让人抓狂的是:库、框架、工具、模版实在多如牛毛,让人吐血!
Backbone.js: Provides models with key-va ...


感觉现在是Web的战国时代,各方神仙各显神通,就看最后谁能突围而出,建立一个一统江山的标准。
作者: ubuntuhk    时间: 29-6-2014 22:31
mason00 发表于 29-6-2014 10:38
职场也是一个先有鸡,先有蛋的迷局。很多公司要现成的鸡,但是都不肯孵蛋。而实际上,除非新项目,很多公司 ...



未来的世界,归根结底会是web的世界,这个趋势难以阻挡,程序员只有投身web大潮,顺势而为。
作者: mason00    时间: 29-6-2014 22:57
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和微软的代价太大,同时其他解决方案也不差太多了。
作者: ubuntuhk    时间: 29-6-2014 22:57
mason00 发表于 29-6-2014 10:46
从二进制到纯文本我感觉是tcp到http,两种协议服务的需求不同。最早的html/http是讲究纯文本的通用性的。 ...


仔细看了一下SPDY,它实际上是在TCP和HTTP之间的一层协议,用于复用单一TCP连接,提过多路的HTTP资源,并且用压缩和SSL传输,提高速度和安全性。但是在应用层是不需要关心这个,只是浏览器和Web server之间的协议(服务器端可以利用SPDY来主动推送资源到客户端,这个会影响一些后端的开发模式)。
作者: ubuntuhk    时间: 29-6-2014 23:06
black_zerg 发表于 29-6-2014 13:57
angularJS会检查model实例是否有变化,如果变化了,就刷新这部分页面。所以它的实现理念是依赖于Model ...


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

最后两句我很赞同,一个再先进的框架是否应该采用,还是要看公司和团队的能力以及客观条件再决定,不能盲目采用。
作者: ubuntuhk    时间: 29-6-2014 23:07
viewpl 发表于 29-6-2014 17:33
我已经患上了Javascript学习资料收集强迫症:

Javascript基础

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

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

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

唉,想想自己,70%的代码是循环迭代,20%大概是封装,继承,有10%算是在找一些好的解决办法去处理一些tricky的问题,完全没有程序员的感觉啊。。。
作者: cais    时间: 30-6-2014 00:06
mason00 发表于 29-6-2014 21:57
难说,我觉得今后还是平台之争。google I/O 这次推出的adriod L,大力开发smart TV,wearable,Home等各种 ...

平台太多。作为老程序员,感觉总是慢半拍。
就算是只想专注做后端,这要求也会因为前端平台的不同而有所变化。
作者: jojopig2002    时间: 1-7-2014 13:45
强帖留名
作者: shyaka    时间: 1-7-2014 15:38
mason00 发表于 29-6-2014 22:16
还有一个新闻,Adriod的手机总体卖的比苹果多了,但是app market的利润还是苹果最好。为什么?就是Adriod是 ...

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

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

可惜澳洲这边真正的“程序员”工作太少了。
作者: ubuntuhk    时间: 1-7-2014 19:01
mason00 发表于 29-6-2014 22:16
还有一个新闻,Adriod的手机总体卖的比苹果多了,但是app market的利润还是苹果最好。为什么?就是Adriod是 ...


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

对于程序员来说,我觉得要做的还是持续学习,Web虽然很难直接赚钱,但是Web已经成为基础设施,不管哪个平台,最后都要在Web这个大舞台上唱戏,在澳洲这个相对孤立的环境,Web应用只会越来越重要。
作者: ubuntuhk    时间: 1-7-2014 19:06
shyaka 发表于 1-7-2014 14:38
做web确实很少会有“程序员”的感觉,因为web的层次太高了。如果做底层,天天和内存、驱动玩;或者做DSP相 ...


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

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


作者: ubuntuhk    时间: 1-7-2014 19:07
jojopig2002 发表于 1-7-2014 12:45
强帖留名


欢迎也来谈谈你的Web开发经验
作者: shyaka    时间: 1-7-2014 20:23
ubuntuhk 发表于 1-7-2014 18:06
澳洲也有一小部分做工业控制方面、游戏引擎等相对底层的公司,不过这方面的工作机会确实远比中国和美国 ...

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

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

做网络开发是一件很有趣也很有技术的活。当然,作为“程序员”,个人观点,遇到做更底层的机会就不要放过。就算是只做网络开发,也不能仅仅满足于搞点框架,把网页写出来就完了。浏览器的实现逻辑是什么,HTTP协议到底是咋运行的,这些其实很重要也很有用。可惜澳洲的公司似乎都仅仅看中你会什么框架,合同工嘛,立马能上手,干完滚蛋
作者: ubuntuhk    时间: 1-7-2014 20:29
shyaka 发表于 1-7-2014 19:23
稍微看了下链接,理解的不知道对不对。我感觉web在这里的角色还是上层应用,控制灯泡的开关和亮度的还是硬 ...


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

我能理解你说的做偏底层的开发那种成就感,我也做过ASM级别的嵌入式开发,不过现在不敢回首了,虽然是很有成就感,但是调试的过程太痛苦了,当然现在大多是C级别的嵌入式开发,比以前会幸福一些。
作者: fu122    时间: 4-7-2014 09:12
我最近也在做nodejs的项目。有空交流一下。大家怎么联系啊?
作者: ubuntuhk    时间: 4-7-2014 20:06
fu122 发表于 4-7-2014 08:12
我最近也在做nodejs的项目。有空交流一下。大家怎么联系啊?



大家主要还是在论坛交流,你是在澳洲的公司做nodejs方面的项目吗?客户端用什么技术?
作者: superopengl    时间: 5-7-2014 05:40
cais 发表于 29-6-2014 22:06
平台太多。作为老程序员,感觉总是慢半拍。
就算是只想专注做后端,这要求也会因为前端平台的不同而有所 ...

跟得太快也不见得好,太累。可以跟踪观察,看到大家都往那个方向走了,再出手。
作者: superopengl    时间: 5-7-2014 05:42
本帖最后由 superopengl 于 5-7-2014 04:10 编辑
shyaka 发表于 1-7-2014 13:38
做web确实很少会有“程序员”的感觉,因为web的层次太高了。如果做底层,天天和内存、驱动玩;或者做DSP相 ...


Web是应用需求大,相对于那些底层算法和硬件操作驱动。其实都差不多,硬件驱动就跟硬件借口打交道,算法就跟内存数据原理等打交道,Web就是跟HTTP协议界面等打交道——在一定的规则基础之上实现一些东西去迎合另一种规则,思想哲学都差不多。
作者: superopengl    时间: 5-7-2014 05:45
ubuntuhk 发表于 1-7-2014 17:01
苹果的做法没有别家能模仿得来,再者,乔布斯仙去之后,苹果的红旗还能再抗几年是个未知之数,我相信Go ...

现在赚钱的不是应用本身,而是通过应用程序capture来的数据。就像银行不是主要靠手续费赚钱,而是凭收集存款放贷赚钱。
作者: superopengl    时间: 5-7-2014 06:08
本帖最后由 superopengl 于 6-7-2014 15:51 编辑

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

优点

缺点

有待观望

作者: black_zerg    时间: 5-7-2014 21:47
提示: 作者被禁止或删除, 无法发言 我觉得单实施 angular 遇到的阻力会比较小。一起上感觉冒险。楼上能否画个图来看看你是怎么实施的
作者: superopengl    时间: 6-7-2014 17:46
这是high level的层次图
作者: DDD888    时间: 6-7-2014 20:34
superopengl 发表于 6-7-2014 16:46
这是high level的层次图

你如何处理security?business logic 在 client side很危险,你不怕被hack?
作者: DDD888    时间: 6-7-2014 20:37
我感觉light client/heavy server可以处理web browser, android, ios, mac os非常方便

heavy client/light server许多代码必须在web browser, android, ios, mac os上重新写一遍
作者: simpledream    时间: 6-7-2014 22:53
superopengl 发表于 5-7-2014 05:08
最近在公司里做了一个小项目的prototype,MongoDB + Node.js/Express as REST APIs + AngularJS。

优点 ...

如果觉得第一次load各种库费时间的话,可以试试AMD,比如RequireJS
作者: superopengl    时间: 7-7-2014 03:27
DDD888 发表于 6-7-2014 18:37
我感觉light client/heavy server可以处理web browser, android, ios, mac os非常方便

heavy client/lig ...

这也正是JavaScript的无人能替代的作用——Logic code既可以在Client端运行也可以在Server端运行。现在只有JavaScript能够做到这一点。

出于安全考虑,logic code可以在Client端跑一遍,发到Server端的时候还可以再跑一遍。
作者: superopengl    时间: 7-7-2014 03:31
DDD888 发表于 6-7-2014 18:34
你如何处理security?business logic 在 client side很危险,你不怕被hack?

1. 任何新概念都是先处理理想case,然后再考虑安全性的。所以有安全漏洞不应该是拒绝一种新东西的理由。

2. Server端要保证数据逻辑的安全性即可。因为新architecture中,server端只负责数据逻辑的validation。其实所有的biz logic最终都要转化成data logic然后存储。只要保证data logic security就可以了。biz logic实际上是根据user input计算出data,然后发送data到server端做存储。只要data logic security保证好了,即使biz logic被hack可,hacked data也会被server端拒绝。当然这都是理性状况下。
作者: superopengl    时间: 7-7-2014 03:36
simpledream 发表于 6-7-2014 20:53
如果觉得第一次load各种库费时间的话,可以试试AMD,比如RequireJS

无论如何,Browser end首次load大量JavaScript代码是避免不了的。可以通过一些技术手段回避第二次以后的load。第一次访问相当于下载整个程序的code到browser end。

也许这并不是一个大问题,可以通过UX设计(进度条等)解决掉。
作者: DDD888    时间: 7-7-2014 07:37
superopengl 发表于 7-7-2014 02:31
1. 任何新概念都是先处理理想case,然后再考虑安全性的。所以有安全漏洞不应该是拒绝一种新东西的理由。
...

假设使用100mb数据生成1 byte数据,根据你的设计,100mb数据需要被带到browser端, 如果在fat server中处理,只需要1 byte数据被带到browser端
作者: superopengl    时间: 7-7-2014 09:13
DDD888 发表于 7-7-2014 05:37
假设使用100mb数据生成1 byte数据,根据你的设计,100mb数据需要被带到browser端, 如果在fat server中处 ...

是的。但好处就是server端CPU和Memory不再负担那100mb代码所需的计算量。server端做更少的事情,从而实现更多并发并降低成本。毕竟server宝贵的资源不是免费的,而network传输是免费的。

Web Application UX的瓶颈已经不是带宽,而是response等待和JavaScript执行速度。

而且100mb的code,理想状态下只下载一次,之后就不再下载了。我觉得brwoser作为cloud上的一个计算节点,有个发展趋势就是永久存储server端下载的JavaScript,而不是现在作为temp file存储。比如在public CDN上的jQuery.js、AngularJS.js其实就是一种供Browser使用的dll的概念。
作者: DDD888    时间: 7-7-2014 10:32
superopengl 发表于 7-7-2014 08:13
是的。但好处就是server端CPU和Memory不再负担那100mb代码所需的计算量。server端做更少的事情,从而实现 ...

传送100mb的数据到client browser 要花多少时间?

server端资源向来被认为是免费的

实现并发,并不是通过你所说的将计算移到client browser来实现的

JavaScript执行速度所花时间相比传送100mb的数据到client browser应该ignore啦
作者: woodheadz    时间: 7-7-2014 11:11
本帖最后由 woodheadz 于 7-7-2014 10:32 编辑

Javascript loading处理好了不会是太大的问题。
我现在的项目javascript压缩后接近2mb,采取的做法就是先按逻辑模块和大小分为几个包压缩,然后将每个包的文件名改为这个包的md5。http header缓存策略设置为缓存1年。这样连上服务器检查时间都不用,也不会出现不同的javascript文件版本错误搭配之类的问题,效果很不错。

现在浏览器端能力已经非常强大了,完全离线都能做到。所以这方面的应用也越做越复杂,前端框架作用也越来越大。
我自己做得框架Knot.js已经基本经过我们项目的检验,最近有空就做点包装啥的,做好了开源。一个人做开源很累啊,会犯严重的拖延症。 有没有同学有兴趣一起来?
作者: black_zerg    时间: 7-7-2014 12:19
提示: 作者被禁止或删除, 无法发言 本帖最后由 black_zerg 于 7-7-2014 11:25 编辑

Features I like in angular: route, validation,repeat (filter), utility tools (battery included, so you don't need other libs), elegant mvvm, good docs. And it has DI, and it is easy to write new directives .

overall it's nearly flawless. It's hard to compete with Google.
作者: woodheadz    时间: 7-7-2014 12:41
black_zerg 发表于 7-7-2014 11:19
Features I like in angular: route, validation,repeat (filter), utility tools (battery included, so y ...

所谓的软件设计,本质上就是一门取舍的艺术。
既然有取有舍,就不可能面面俱到,就不可能在所有情况下做到最适。
所以尽管有angularjs的存在,还是有不少人在用knockoutjs。不一定要竞争,补充也是可以得嘛。




欢迎光临 FreeOZ论坛 (https://www.freeoz.org/ibbs/) Powered by Discuz! X3.2