-
Notifications
You must be signed in to change notification settings - Fork 383
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
如何开发一个移动web UI组件库:构架篇 #80
Comments
最近刚好需要弄一个这样的组件库,碰到的问题也是很多,想想都头大,还好你整理清晰,感谢,继续关注中 |
持续关注中 |
你好,问一下,架构图是用什么画图软件画的啊 |
@youngwind 谢谢 |
看了你的几篇博客,很受启发 |
你好,可以使用Microsoft Visio 2013画图软件
…------------------ 原始邮件 ------------------
发件人: "submerge";<notifications@github.com>;
发送时间: 2017年6月25日(星期天) 晚上7:07
收件人: "youngwind/blog"<blog@noreply.github.com>;
抄送: "心的烙印"<1757946693@qq.com>; "Comment"<comment@noreply.github.com>;
主题: Re: [youngwind/blog] 如何开发一个移动web UI组件库:构架篇 (#80)
你好,问一下,架构图是用什么画图软件画的啊
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.
|
我的想法是 既然很多cdn都已经可以稳定16秒到达 那么多加个jquery 又有什么问题 vue做业务组件 |
老哥,一年多不见,写也太快了 |
今年写的已经算很慢了,一年时间才写20多篇。 @sungd |
这个架构图怎么理解的呢,调用层/组件层/基础层里边的内容放置的位置总感觉比较奇怪。比如vue应该属于基础层吧? |
vue guide 的链接该更新了:) |
@youngwind 关于第3点 组件内部肯定会有一些依赖,如果处理这些依赖? 这个怎么做的呢? |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
总览
近日,开(抄)发(袭)了一个移动web UI组件库,仓库在这儿,目前仍属于半成品,组件的数量和质量都有待提高。在这个过程中我学到了很多东西,特开系列篇记录下来。目前规划的篇章包括:
缘起
为什么想到要开发这样一个东西呢?
因为这个东西是标配啊,没折腾过这个都不好意思说自己做过移动web开发呢!
其实这个东西老早就有人开始做了,比如mint-ui、vux。追寻着大牛们的脚步,让我们来一探究竟。
十万个怎么办
当我开始构思这个东西的时候,有数不清的问题冒进我的脑海,包括但不限于以下:
-------------------------我是晕乎的分割线+_+--------------------------
困境:问题太多,思考毫无逻辑与章法,怎么办?
答案:分层设计,画架构图。架构图更多的意义是帮助思考的过程,而非展示成熟的想法。
当时初步的分层设计如下:
另外,要把握好考虑的复杂度。一开始考虑得太复杂,会让开头寸步难行。一开始考虑得太草率,会让后期面临大的改动。
也要平衡好通用性与针对性。想要更加通用,势必增加开发成本。在一个组件库的前期,更多的技术诉求是降低重复性劳动,提高效率。从这个角度看,应该更加重视针对性。自己团队用得爽再说。
下面说一些关键点。
源码目录组织与第三方调用方式
避免影响全局
写一个库跟写一个应用不同,库是需要到处被调用的。无法预知外部环境,也不应该修改外部环境。从这么几个方面进行考虑。
然而,我还是有一个地方影响了全局,那就是组件库依赖于淘宝的flexible来做适配,这东西改变了html的font-size和页面scale,就好像在js里面修改了全局变量一样。flexible已经是2年前淘宝提出的解决方案,时至今日,它也暴露出一些问题。比如常见的,在页面当中嵌入地图的时候,就会因为scale导致地图缩小的问题。听说天猫已经用flexbox代替flexible了,之后有时间得好好研究一下这个。
不仅仅是input框
之前设想的UI库,大概只想到了一些input、radio、checkbox这些最小的表单相关的组件。但是,这里有两个问题。
第一,还有像toast、alert、dialog这类message组件,也是非常关键的。而且这些组件与普通的组件不同,对它们应该采取插件化的形式来实现,参考这里。
第二,仅仅有input、radio这些孤立的元组件,其实是不能承载业务的。一个孤零零的input框、单选框有什么用呢?一般来说,业务场景常见的表单是可以按照group和cell这两个概念来划分的。如下图,第一个group就包含三个cell。所以,真正意义上的input组件肯定是内嵌在group和cell当中的。所以定义group和cell组件。那么input组件如何嵌入到cell组件当中呢?这样就用到了vue的slot功能。
The text was updated successfully, but these errors were encountered: