锁定老帖子 主题:JS架构探讨-精彩討論进行中...
精华帖 (0) :: 良好帖 (12) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-08-14
liuzhuo84 写道 高手!可不可以用异步请求的方式去请求js文件,回来之后eval一下。如下:不知道可行不? $.ajax({ url: 'a.js', type: 'GET', timeout: 1000, success: function(text){ eval(text); } }); 我没看出哪儿高了。= = |
|
返回顶楼 | |
发表时间:2011-08-14
最后修改:2011-08-14
fch415 写道 To rain:
——更重要的是,是找一家有实力的民族企业 都什么年代了,写开源项目还要投靠一家企业?直言:您的观点无法苟同。 另外,就算是找靠山,我也不看好国内任何一家大公司的框架领导力(我本人也在一家大的互联网公司待着),无论是Java框架还是JS框架。 他们能把自个的框架(主要就是些工具+小组件)写写好,就谢天谢地了。 如果让我去领导他们,他们思路和眼界足以让我头疼。罢了。 这也是为什么国内外很多优秀开源框架往往来自于个人而非企业的原因之一。 To danny: 1)YUI的dom-event最为精炼、简单好学,功能也最弱(相比于jQuery)但足够用了。YUI完全面向OO,最适宜搭建对象体系(这也是Ext作者的早期选择)。 而jQuery的思想注定了它的面向DOM编程的风格,也注定了它不适合搭建复杂对象体系,适合于作为一种工具库(而且是一种引诱低劣代码的工具库)。 要知道写游戏或写组件都是足够复杂之事,必然需要构建一套稳健的对象体系,最最需要框架层提供的完全面向对象的支持。jQuery这种工具库是难以胜任的。另外,YUI3并没有越来越像jQuery了,而是提供了更多的DOM+CSS操作API耳。 在我(以及众多Java工程师的)眼里,YUI的思想非常OO。这种在Java领域司空见惯的OO思想,在JS框架领域是如此的难得和耀眼。远远胜过jQuery(Prototype等)那种面向函数或DOM的框架。这可不是靠jQuery庞大Fans群所能得来的赞誉。 就像围棋一流国手们追求的是棋道,以留下名局(棋谱)为无憾,而不是以追求谁拿的奖金最多、谁的Fans多、谁的转播人数最高。 优秀的程序员追求的是编程之道,代码之美,而不是找个靠山、伙同风投、骗个名利。 2)——一个好的框架应该使用简单,学习成本低。 真正简单好学的是组件对象的使用,而不是如何复杂高超的操作DOM。 这就是面向对象和面向DOM的本质区别。 操作一个对象的API,而不是操作DOM+CSS(熟悉大量结构化的潜规则),哪一个封装性更好?更为易学?更易读易维护? 最后说一句,倒是很多jQuery的Web组件(的API)越来越像YUI/Ext的组件了。 3)JS2D图形绘制API不是基于HTML5的canvas实现的。虽然叫Canvas类。 如果未来要提供高级绘图能力,我可能要考虑集成canvas标签对象。 但目前矢量图形绘制与旋转外等,这些游戏用不到的功能,暂时没必要集成。 我不知道FCH415是什么牛人,我刚刚出道...。 但对您说的JQ评价很赞同,JQ就是面向dom的,所以插件的代码都不行。 所以现在也在写一个完全面向对象的库。 如果一旦让库面向对象了,那插件的代码就规范了。 要想让代码规范,还得从底层规范做起来。 其实有位大大说得挺好的,大概其意是:国内都是大家自己在做自己的东西,但是都不咋地。其实做的很多事情都是重复的 前端这块就要像LZ说的,要交流。不能沉默。 我也想听听大家的架构思想。。。 虽然我现在还没有头绪....... 但是几位大哥说着说着就跑题了。情以何堪啊!!!!!!!!!! 跑题了。。。 |
|
返回顶楼 | |
发表时间:2011-08-14
最后修改:2011-08-14
jQuery 看你怎么用,它本身就不是用来组织代码的,不是框架,而是一个纯DOM操作类库
YUI3 则是一个框架,YUI3 里面的 Node 相当于 jQuery 用 YUI3 / Dojo / ExtJS 等,选择的是一整套服务,就如买联通的 iPhone 一样,硬件/网络等全打包给你服务,优点是一致性,缺点是被绑死了,就像 Windows 操作系统一样,切换到其他框架的成本比较高 jQuery 社区选择的是组合式思维,用各种小类库组合起来解决问题,比如目前比较典型的一个组合: JS 语言增强:Underscore 或 es5-shim 等 DOM 操作:jQuery 或 Zepto 等 前端 MVC:Backbone 或 Spine 等 UI 组件:jQuery UI / Knockout 等 存储:jStorage 等 模板:Mustache 或 jQuery template 等 很多很多,组合起来完成任务。 在去年之前,jQuery 社区这种组合式思维,感觉比较零散,质量,一致性,互相之间的协作性等都不是很好。 但随着 CommonJS 社区对 JS 生态圈的推进,目前已经涌现除了一批模块加载框架:RequireJS,SeaJS 等等,这样,开放式前端类库的建立就有了可能性。 有兴趣的可以跟进 SeaJS 的社区:https://github.com/seajs/seajs/wiki/Community 我相信未来将是开放的世界,开放式类库能带来很多好处,比如: 1. 任何模块都是可替换的。比如 Backbone 可以替换为 Spine 等,包括 seajs loader 本身也可替换,最关键的是想通过社区,将一些基本规范和编程理念推广开、普适化。很难、很漫长,但很值得去做。 2. 模块的组合搭配很灵活。因为都是模块化的,这意味着你可以根据各种项目的实际需求,选择性组合需要的模块。虽然因为模块之间的依赖关系会导致选择的复杂性,但目前 dew 项目的一个策略是:适量重复。比如 querystring 和 cookie 两模块里,肯定有些代码是可以拎取出来的,但拎取出来的价值并不大,反而破坏了独立性。es5-safe 和 underscore 也是如此。个人觉得适量重复比零重复更能适应未来。 3. 参与开发的成本更低。如今,要想给 YUI3 写个 UI 组件并不是件容易的事。你得先搞懂 YUI3 组件的基础构建。对于开放式类库来说,没有这么多前提条件和约定,自由地按照自己觉得最好的方式构建就好。参与的代价更低,整个社区的延展性和覆盖面会很广。当然,这也会带来问题,比如质量控制、文档的一致性等等。但有了 github 和 googlecode 这种社区,一个好的模块,经常 forked 和 watched 数不会太少。简单通过这两个数字,经常就可以帮助我们筛选出一批质量不错的模块来(也有关注度不高但质量很不错的组件,这种情况有,但不多)。 欢迎探讨交流。 |
|
返回顶楼 | |
发表时间:2011-08-17
最后修改:2011-08-17
封闭是不好的。 我也来说说我的架构吧,针对我现在做的网站 1.最基础的是jq.js,在这基础上有common.js和base.js 这2个js里其中common.js有validate和一些基础函数. base.js包括初始化一些页面共有的数据. @tips validate是可以进行add的。包括一些文本框的基础操作。比如点击进入值会变成""出来变成"请输入邮箱"。函数addDefault(文本框ID,默认值) addValidate("email","提示信息",正则表达式) 2.initRelation.js 这个是初始化页面数据. relationTemplate.js这个是关系模板。比如某某怎么怎么了,发布了文章,上传了文件 relationAction.js 这个是relation的一些逻辑 在initRelation初始化数据,window.onload方法里先进行addDefault之类的配置操作。然后initBase(base.js里的)进行初始化共有方法数据。然后initData(initRelation.js里的)进行初始化关系数据。 大概是这个流程。 写得不是很清楚。但是这是我现在想的。也不太懂模块化。 大概思想是想让一些公共的方法进行可以配置化,这个配置呢大概是对validate之类的进行添加或修改。 因为这是我一个人在弄(而且是个新人),也缺乏交流。希望有大大指点下 |
|
返回顶楼 | |
发表时间:2011-08-17
纠结了一上午
发现自己的结构还是很垃圾 渐渐也明白了一些模块化的含义。T_T 但是模块化就意味着更多的请求...更多的JS文件。 |
|
返回顶楼 | |
发表时间:2011-08-17
讨论还有个前提,应用的方向问题,简单分类主要就是互联网和企业应用两类,这两类方向大家关注的瓶颈和痛处差异很大,避开这个前提评价哪个框架好坏是比较扯的
|
|
返回顶楼 | |
发表时间:2011-08-17
ninja9turtle 写道 讨论还有个前提,应用的方向问题,简单分类主要就是互联网和企业应用两类,这两类方向大家关注的瓶颈和痛处差异很大,避开这个前提评价哪个框架好坏是比较扯的
企业方面应该没什么吧。重点还是互联网啊 |
|
返回顶楼 | |
发表时间:2011-08-17
hastune 写道 ninja9turtle 写道 讨论还有个前提,应用的方向问题,简单分类主要就是互联网和企业应用两类,这两类方向大家关注的瓶颈和痛处差异很大,避开这个前提评价哪个框架好坏是比较扯的
企业方面应该没什么吧。重点还是互联网啊 这不就对上号了,说的就是你这类肤浅偏见无知之人 |
|
返回顶楼 | |
发表时间:2011-08-17
hastune 写道 纠结了一上午
发现自己的结构还是很垃圾 渐渐也明白了一些模块化的含义。T_T 但是模块化就意味着更多的请求...更多的JS文件。 模块化意味着开发时可以拆分为更多的文件,但并不意味着上线后需要更多的文件 在上线前,可以增加打包部署过程,合理的将文件进行合并,让性能无忧 |
|
返回顶楼 | |
发表时间:2011-08-17
最后修改:2011-08-17
ninja9turtle 写道 hastune 写道 ninja9turtle 写道 讨论还有个前提,应用的方向问题,简单分类主要就是互联网和企业应用两类,这两类方向大家关注的瓶颈和痛处差异很大,避开这个前提评价哪个框架好坏是比较扯的
企业方面应该没什么吧。重点还是互联网啊 这不就对上号了,说的就是你这类肤浅偏见无知之人 ...对不起。好似说错话了。真是抱歉啊! 愚见愚见...不要在意... 别生气昂 |
|
返回顶楼 | |