`
bbiao
  • 浏览: 72297 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

YUI的一点优点

阅读更多
使用YUI在页面生成Widget时,我们可以使用markup的模式,在这种模式下,生成的widget是从已有的HTML Element中读取一定的信息,并适当的复用一些已有的HTML Element,例如,你可以用以下的HTML元素来生成一个Panel:

<div id="panel1">  
    <div class="hd">Panel #1 from Markup</div>  
    <div class="bd">This is a Panel that was marked up in the document.</div>  
    <div class="ft">End of Panel #1</div>  
</div>  


使用如下的JS:
var panel = new YAHOO.widget.Panel("panel1", {
    /* other properies */
});


那么,这种特点的好处是什么?有一种WEB开发的理论叫做Progressive Enhancement,意在在保证WEB程序对用户提供基本的体验后,再逐步加强应用的用户体验,这样,即使用户的浏览器不支持JS,你的页面他也可以查看的到基本的信息,并且,对于SEO非常有效。并且,YUI使用的markup是完全符合w3c标准的。(想到DOJO的dojoType了嘛?),YUI中的这种例子很多,例如Menu可以从ul li标签生成,DataTable可以从页面的Table元素读取数据……

嗯,因为之前用EXT,整个页面就几个空空的DIV,所以才想找一种有利于在浏览器不支持JS的情况下也能给用户呈现基本视图的方法,于是重新拾起了YUI。
分享到:
评论
10 楼 clia 2008-01-29  
老朽的HTML已经不能适应这个时代的需要了,应该有新的标准语言出来统一大家的标识了。
如果浏览器不能支持的话,我想应该有AJAX框架出来实现XForms、XUL、XAML这些界面标识语言,然后把数据标识的任务交给XHTML 2.0或XML去。
9 楼 sp42 2007-12-26  
air已经是这样做,号称是可利用当前的HTML/CSS/JS技术。迁移到桌面程序的级别来。
8 楼 bbiao 2007-12-26  
jellyme 写道
LZ在YUI的看法上,我是非常赞同的。但是LZ提及的Progressive Enhancement,个人觉得,还不够完整。不过,这已经和主要矛盾十分接近了。且不论YUI和EXT的方式谁好谁坏,单纯从技术的角度来看。

基于JS的Ajax RIA,严格来讲,根本就不算是RIA,它与Flex、Applet等根本就不是用一个东西。我姑且这样定义,RIA是Web应用未来发展趋势,RIA比传统的基于HTML的ThinClient要“高级”很多。那么,很明显的,一个纯粹的基于HTML的ThinClient应用,可以通过多种方式“升级”成为AjaxRIA,而,一个完全的AjaxRIA(比如Ext)根本无法(或者很难)降级成为一个基于HTML的ThinClient应用。

不仅用户体验需要Progressive Enhancement,技术领域同样也需要Progressive Enhancement。如果说你不能肯定用户一定满意你的DesktopStyle,那么同样的,你也无法肯定用户的硬件环境就一定能够接受AjaxRIA(带宽、客户机浏览器环境、客户机性能等等都有很大的不确定性)。因此,仅仅高姿态的将自己的应用定义为AjaxRIA是一种冒险行为。

综上,我非常赞成LZ的想法——因为我也是这样想的,只是对于Progressive Enhancement,我小小的补充了一下,呵呵。


很赞同你的观点,将Ajax Framework与Flex这类框架区分开是有必要的。今天早上我还在想,所谓的RIA,已经完全脱离了标准的HTML等技术,其运行的宿主也由浏览器迁移到了运行于但不仅限于浏览器之上的VM,现在RIA运行于浏览器之中并不是必须的。所以,利用HTML技术来实现完全的RIA是否是正确的做法,是值得商榷的。
7 楼 jellyme 2007-12-25  
LZ在YUI的看法上,我是非常赞同的。但是LZ提及的Progressive Enhancement,个人觉得,还不够完整。不过,这已经和主要矛盾十分接近了。且不论YUI和EXT的方式谁好谁坏,单纯从技术的角度来看。

基于JS的Ajax RIA,严格来讲,根本就不算是RIA,它与Flex、Applet等根本就不是用一个东西。我姑且这样定义,RIA是Web应用未来发展趋势,RIA比传统的基于HTML的ThinClient要“高级”很多。那么,很明显的,一个纯粹的基于HTML的ThinClient应用,可以通过多种方式“升级”成为AjaxRIA,而,一个完全的AjaxRIA(比如Ext)根本无法(或者很难)降级成为一个基于HTML的ThinClient应用。

不仅用户体验需要Progressive Enhancement,技术领域同样也需要Progressive Enhancement。如果说你不能肯定用户一定满意你的DesktopStyle,那么同样的,你也无法肯定用户的硬件环境就一定能够接受AjaxRIA(带宽、客户机浏览器环境、客户机性能等等都有很大的不确定性)。因此,仅仅高姿态的将自己的应用定义为AjaxRIA是一种冒险行为。

综上,我非常赞成LZ的想法——因为我也是这样想的,只是对于Progressive Enhancement,我小小的补充了一下,呵呵。
6 楼 flash 2007-12-25  
ext最让人郁闷的地方就是页面上只有一堆div,对美工设计页面时的要求有点高.我感觉对我而言,能从html element中获取数据是最好的方法
5 楼 bbiao 2007-12-21  
bigxxs 写道
关于Rich Client框架,我认为其主要适用范围是构建Application,而非制作网页,所以楼主所提出的方面在一定程度上可以被牺牲。

不知道谁能详细讲解下applyTo和renderTo区别,以及render()和applyToMarkup()方法的区别,上次问过,给丢到新手区了。看过源码,似懂非懂。


对于applyTo和renderTo,我们在Ext 2.0的官方文档上可以看到,
引用
applyTo : Mixed
The id of the node, a DOM node or an existing Element corresponding to a DIV that is already present in the document that specifies some structural markup for this component. When applyTo is used, constituent parts of the component can also be specified by id or CSS class name within the main element, and the component being created may attempt to create its subcomponents from that markup if applicable. Using this config, a call to render() is not required. If applyTo is specified, any value passed for renderTo will be ignored and the target element's parent node will automatically be used as the component's container.

引用
即applyTo代表一个在页面上已经存在的元素或该元素的id,该元素通过markup的方式来表示欲生成的组件的某些结构化信息,Ext在创建一个组件时,会首先考虑使用applyTo元素中的存在的元素,你可以认为applyTo是组件在页面上的模板,与YUI中的markup模式很相似。当你在config中配置了applyTo属性后,renderTo属性将会被忽略。并且生成的组件将会被自动置去applyTo元素的父元素中。


引用
renderTo : Mixed
The id of the node, a DOM node or an existing Element that will be the container to render this component into. Using this config, a call to render() is not required.

引用
renderTo主要用来表示新生成的组件在页面上的container


让我们来看看Component.js中的相应代码:
    if(this.applyTo){
        this.applyToMarkup(this.applyTo);
        delete this.applyTo;
    }else if(this.renderTo){
        this.render(this.renderTo);
        delete this.renderTo;
    }

    applyToMarkup : function(el){
        this.allowDomMove = false;
        this.el = Ext.get(el);
        this.render(this.el.dom.parentNode);
    }

可见applyTo在Component级别是取得applyTo的parentNode来调用render(),各种继承自Component的组件会在各自的onRender方法中来构建组件,使用CSS选择器来选择相应的元素而不是新生成相应的元素。
例如Panel.js中
        if(this.el){ // existing markup
            this.el.addClass(this.baseCls);
            this.header = this.el.down('.'+this.headerCls);
            this.bwrap = this.el.down('.'+this.bwrapCls);
            var cp = this.bwrap ? this.bwrap : this.el;
            this.tbar = cp.down('.'+this.tbarCls);
            this.body = cp.down('.'+this.bodyCls);
            this.bbar = cp.down('.'+this.bbarCls);
            this.footer = cp.down('.'+this.footerCls);
            this.fromMarkup = true;
        }else{
            this.el = ct.createChild({
                id: this.id,
                cls: this.baseCls
            }, position);
        }
4 楼 bbiao 2007-12-21  
bigxxs 写道
关于Rich Client框架,我认为其主要适用范围是构建Application,而非制作网页,所以楼主所提出的方面在一定程度上可以被牺牲。

不知道谁能详细讲解下applyTo和renderTo区别,以及render()和applyToMarkup()方法的区别,上次问过,给丢到新手区了。看过源码,似懂非懂。
Ext与YUI都没有说过自己是一个专用于RIA的框架吧,主要是自已用EXT做了两个项目之后,感觉太像是桌面应用了,我不清楚用户是否一定能够接受这种应用。我的本意也不是说用YUI和EXT等框架来制作网页,主要目的是想找到一种“非侵入”的方法来增强WEB应用的可用性和用户体验。不如假如如你所说,使用EXT和YUI作为RIA的框架,我也希望我构建的Application在任意的情况下都可以被用户使用(比如用户禁用了JS),而且,单纯的使用JS作为RIA框架,很不利于搜索引擎的检索。
3 楼 bigxxs 2007-12-21  
关于Rich Client框架,我认为其主要适用范围是构建Application,而非制作网页,所以楼主所提出的方面在一定程度上可以被牺牲。

不知道谁能详细讲解下applyTo和renderTo区别,以及render()和applyToMarkup()方法的区别,上次问过,给丢到新手区了。看过源码,似懂非懂。
2 楼 bbiao 2007-12-20  
bagwg1127 写道
ext也有这功能啊,属性好像是contentEl

Ext.form.ComboBox也可以直接从页面的ul li标签来
Ext可以指定applyTo和renderTo,但总觉得还是YUI做得比较好,比较实用
1 楼 bagwg1127 2007-12-20  
ext也有这功能啊,属性好像是contentEl

Ext.form.ComboBox也可以直接从页面的ul li标签来

相关推荐

    yui3-master.zip

    《深入理解YUI3:基于yui3-master.zip的探讨》 YUI(Yahoo! User Interface Library)是由雅虎公司开发的一套开源JavaScript库,它为Web开发者提供了丰富的功能和工具,以创建交互性强、性能优秀的网页应用。YUI3是...

    yui.rar 例子

    《深入理解YUI:基于“yui.rar 例子”的解析》 YUI,全称Yahoo! User Interface Library,是雅虎公司推出的一款开源JavaScript库,旨在帮助开发者构建高性能、易于维护的网页应用。本篇文章将结合“yui.rar 例子”...

    yui 资源包

    《深入理解YUI 3.9.0 r2:界面设计与资源优化》 YUI,全称为Yahoo! User Interface Library,是由雅虎公司开发的一个开源JavaScript库,它旨在简化Web应用程序的构建,特别是对于界面设计和交互效果的实现。在3.9.0...

    yuicompressor-yui compressor

    yuicompressor-2.4.2.jar yuicompressor-2.4.7.jar jsZip.exe yuicompressor yui compressor js压缩工具 javascript压缩工具 css压缩工具 ------------------------------------ //压缩JS java -jar yui...

    yui js压缩工具

    优点在于,YUI Compressor提供了高效的代码压缩,显著提升了网站性能。然而,由于其对代码的压缩可能会导致源码不易阅读,因此在调试时可能带来不便。另外,由于版本较旧,可能不支持某些新的JavaScript特性或CSS3...

    【YUI组件】基于YUI的表单验证器

    1. **YUI库**:了解YUI的基本结构、模块化设计和如何引入到项目中,是使用YUI表单验证器的前提。 2. **表单验证**:表单验证的常见规则包括非空检查、长度限制、格式验证(如邮箱、电话号码等)和自定义验证函数。 3...

    YUI3.6文档及示例

    YUI(Yahoo! User Interface Library)是雅虎公司推出的一款开源JavaScript库,旨在帮助开发者构建高性能、可扩展的Web应用程序。YUI3.6版本是该库的一个重要里程碑,提供了丰富的组件和工具,以支持现代Web开发的...

    yui_2.9.0前端UI

    YUI 库,全称Yahoo! UI Library。是一组工具和控件,用JavaScript写成, 为的是用DOM 脚本,DHTML和AJAX等技术创建丰富的网页交互式应用程序。 YUI 基于BSD协议,对所有的使用方式都是免费的。YUI 项目包括YUI 库和两...

    从YUI2到YUI3看前端的演变 pdf

    个人以为在现阶段,这种方式有一点激进,否能为广大用户所接受并发扬光大,还需要时间检验。YUI是个“学院派”的框架,以性能和严谨著称,易用性相对而言弱了一些。它能否在已经拉开的 JavaScript 框架大战中胜出,...

    YUI-EXT使用详解

    **YUI-EXT使用详解** YUI-EXT是基于Yahoo! User Interface Library (YUI)的一个扩展库,专为构建富互联网应用程序(RIA)而设计。YUI-EXT提供了许多高级组件,如表格、菜单、窗口、表单、布局管理器等,极大地丰富...

    《YUI使用文档》汉语版的yui学习材料

    《YUI使用文档》汉语版是一份详细的YUI学习材料,它涵盖了这个JavaScript库的核心功能和使用方法。YUI,全称Yahoo! User Interface Library,是Yahoo开发的一个开放源代码的JavaScript库,旨在帮助开发者创建交互式...

    yuicompressor-2.4.8.jar

    《yuicompressor-2.4.8.jar:前端优化与代码压缩的艺术》 在Web开发领域,优化前端性能是一项至关重要的任务,而yuicompressor-2.4.8.jar正是这样一款强大的工具,专为JavaScript代码压缩而设计,助力开发者实现...

    yuitest YUI测试工具

    YUI Test is a complete testing framework for JavaScript and Web applications. You can use the simple JavaScript syntax to write unit tests that can be run in web browsers or on the command line, as ...

    YAHOO yui2.7 文档+ 代码+例子

    **YUI 2.7:一个全面的JavaScript和CSS框架** YUI(Yahoo! User Interface Library)是雅虎公司开发的一个开源的JavaScript和CSS库,它为构建高性能、跨平台的Web应用程序提供了丰富的工具和资源。YUI 2.7是这个库...

    YUI JS CSS 打包工具

    YUI JS CSS 打包工具是一款高效的前端资源优化工具,主要针对JavaScript (JS) 和 Cascading Style Sheets (CSS) 文件进行压缩和合并,以提升网页加载速度和整体性能。这款工具由雅虎(Yahoo!)开发,是其开源项目的...

    YUI类库2.9.0下载download

    YUI 2 is a JavaScript and CSS library with more than 30 unique components including low-level DOM utilities and high-level user-interface widgets. Currently at version 2.9.0, YUI 2 is robust, proven, ...

    yui_3.0.0(雅虎官方)

    YUI 3.0.0是这个库的一个重要版本,它在继承了前一版本的优点基础上,引入了许多新的特性和改进,为前端开发者提供了更强大的工具集。 ### YUI 3.0.0的核心特点 1. **模块化设计**:YUI 3.0.0采用了一种全新的模块...

    yui_2.6.0r2

    《深入解析YUI 2.6.0r2:JavaScript组件库的基石》 YUI,全称为Yahoo! User Interface Library,是雅虎公司推出的一个开源JavaScript库,旨在帮助开发者构建高质量、高性能的Web应用程序。YUI 2.6.0r2是该库的一个...

    YUI3.7.3 最新版本 带API

    YUI(Yahoo! User Interface Library)是雅虎公司推出的一款开源JavaScript库,旨在帮助开发者构建高性能、可扩展的网络应用程序。YUI3.7.3是YUI的一个特定版本,它在发布时被视为最新的版本,提供了许多改进和新...

    从YUI2到YUI3看前端的演变

    从YUI2到YUI3看前端的演变

Global site tag (gtag.js) - Google Analytics