讨论下 Web Components 吧! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
不要在回答技术问题时复制粘贴 AI 生成的内容
Frannk
V2EX    程序员

讨论下 Web Components 吧!

  •  
  • Frannk 2013-05-19 15:40:01 +08:00 9571 次点击
  • 这是一个创建于 4530 天前的主题,其中的信息可能已经有所发展或是发生改变。
    IO大会中对我最有启发的是GOOGLE最新的UI项目 Web Components. 大家来讨论一下自己看法吧。

    我觉得 Web Components 是对前端生产力的彻底解放,也会推进前端的技术进步。

    相比backbone,ember,meteor, angular 等前端框架,它提供了一种更彻底的解耦方式,而且更加方便了UI的开发和模块化。我常用backbone和Require.js,觉得backbone的一个缺点是不能够彻底的模块化,即使自己可以把一个功能的m,v,c,和template都拆成文件放到一个模块目录,模块还是要依赖一个"全局APP"的event emitter 和 view manger(用于管理view的生命周期),所以只是个人的做法,无法把模块彻底打包成组件。

    模块化制约了Backbone的发展, 因为这造成了UI无法开源和共享。试想一下如果谷歌开源docs的编辑器UI,那么在你的APP里也许你只要插入<g-editor>你就可以引入一个全功能的编辑器是多么方便的功能,你不用担心CSS被覆盖,有全局变量冲突等。除了编辑器还可能是顶部的导航栏,侧边栏,播放器,数子可视化组件,甚至一个论坛组件。

    其他的框架如ember,meteor, angular,也没有很好的解决这个问题,做到组件的彻底解耦(比如css,相互通讯,文件布局),而Web Components是让组件彻底的跑在sandbox里,组件可以彻底自由的折腾;

    相关的链接:


    https://developers.google.com/events/io/sessions/324149970
    http://www.html5rocks.com/en/tutorials/webcomponents
    16 条回复    1970-01-01 08:00:00 +08:00
    chemzqm
        1
    chemzqm  
       2013-05-19 16:03:37 +08:00 via Android
    我觉得是基于web应用的未来,不过大概得再等几年才好用
    hooluupog
        2
    hooluupog  
       2013-05-19 16:31:28 +08:00
    最近在angular.js之后又弄了一个新框架好像叫Polymer,可能和这个有关吧。
    meteor
        3
    meteor  
       2013-05-19 16:38:53 +08:00
    我觉得Google的那个和下面2个有点像.

    TJ的components
    https://github.com/components/components

    Dart的web_components
    https://github.com/dart-lang/dart-web-components
    不过现在集成到Web UI里了.
    Frannk
        4
    Frannk  
    OP
       2013-05-19 17:24:11 +08:00
    @meteor 的确很像,TJ好牛逼。不过感觉好像TJ做的更像是一个包管理器;Google做的更进一步,而且没提到怎么做组件的包管理,初期并不关心吧。
    Frannk
        5
    Frannk  
    OP
       2013-05-19 17:40:41 +08:00
    @hooluupog Polymer 就是我说的 Web Components: http://www.polymer-project.org/
    chuangbo
        6
    chuangbo  
       2013-05-19 18:10:52 +08:00
    这个和 TJ 的 components 完全不是一个东西吧...
    jiyinyiyong
        7
    jiyinyiyong  
       2013-05-19 18:27:15 +08:00
    正好在这个话题上看到让我激动的进展
    以前搜集的 Web Components 的链接先放在这里:
    https://github.com/Bodule/bodule/issues/6#issuecomment-14537068
    还有另外若干个视频:
    https://github.com/coffee-js/languages/issues/59
    前端开发最头疼的问题就是组建不能模块化
    用 Node 可以模块化, 代码写一次, 下次 require 就好了
    当然有些副作用操作的步骤也不方便写成模块, 一次编写一劳永逸..
    问题是, 前端开发大量这样的问题, 想要快速开发, 却只能用 Bower 拉 repo
    然后再想快一点, 用模块化方案, 又这个方案那个方案搞不定, 没有社区一起把坑填好
    加上 CSS 不能直接和 JS 这样 Hack, 这个就几乎无解了, 只能忍

    希望前端的模块化能快点到来
    chemzqm
        8
    chemzqm  
       2013-05-19 18:39:42 +08:00
    google的Polymer是基于html语义化的web component,更类似于AngularJS,跟TJ的component,twitter的bower,以及requirejs所做的模块化完全是两个概念。
    hooluupog
        9
    hooluupog  
       2013-05-19 18:39:54 +08:00
    感觉服务端、系统开发中的一些工程化的成熟的思想正不断被前段开发吸收进去,提高生产效率;
    那么前端开发、设计中一些天生的优点(例如比较灵活更亲近人,好像未来会出现可视化编程和设计),不像做后端开发那么死板工程化,这些东西也能带给后端的开发者就好了,最终大家都高兴了。
    Frannk
        10
    Frannk  
    OP
       2013-05-19 22:01:49 +08:00
    @hooluupog 前端开始了App概念后,之前的工作方式越来越不够用了,必须来个大规模的更新了。
    heroicYang
        11
    heroicYang  
       2013-05-19 23:08:01 +08:00
    @Frannk TJ的components应该是实现前端的组件模块化,并自带一个包管理器,跟node和npm相似;而twitter的bower才是单纯的包管理器,和mac下的brew相似。
    其实使用backbone + requirejs已经可以实现很高程度的模块化(JS/HTML Template),不过CSS是个痛点,用backbone应该还解决不了。
    看这个样子,HTML语意化的才是未来?
    iwege
        12
    iwege  
       2013-05-20 00:43:15 +08:00
    “而Web Components是让组件彻底的跑在sandbox里,组件可以彻底自由的折腾"

    啊喏~ 请问怎么个彻底法?怎么自由折腾?CSS终于不要带namespace了?
    Frannk
        13
    Frannk  
    OP
       2013-05-20 00:43:21 +08:00
    @heroicYang 对呀。就差css了,我一直没有尝试过,css不会组织。

    感觉拖拉控件的时代快要来临了,那时候开发应用应该会很惬意吧。
    Frannk
        14
    Frannk  
    OP
       2013-05-20 10:19:26 +08:00
    @iwege Web Components 给了组件一个自己的世界,好像每个组件都在一个 iframe 里一样,这是其他框架都没有提供的。当然参数和css还是可以被宿主控制的。
    iwege
        15
    iwege  
       2013-05-20 11:10:55 +08:00
    @Frannk 不可能吧?你还是能取到host的window吧?如果能取到host的window,就不能算是sandbox。
    otakustay
        16
    otakustay  
       2013-05-20 11:26:48 +08:00
    前段时间看过shadow DOM,里面不能改外面的,但外面依旧能改里面的DOM,这导致component自身还是会被外部的脚本干扰,隔离性不够啊
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5899 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 06:19 PVG 14:19 LAX 23:19 JFK 02:19
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86