-
Notifications
You must be signed in to change notification settings - Fork 9
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
lego组件接入记录 #3
Comments
@longyiyiyu 非常的赞,大概扫了一下,很完整的建议,我慢慢消化。 |
非常赞的总结。 @herbertliu 尽快排期处理掉遇到的一些问题。 |
几点想法:
那么,组件的引用方可以直接引用组件。无论哪种引用方式,最终目的就是:组件适用方无需关心组件内部依赖了哪些资源。正在思考实现方式,敬请期待。
|
lego 在开发机使用的门槛太高。 |
@jiangyuan 开发机目前不能访问imweb.io,公司网络环境决定。暂时先用代理解决吧。也可以考虑同步内部源,我们再统一同步。 |
@longyiyiyu 办公网的问题,后面再看看是否通过代理来弄。组件规范后续会加强,严格遵循commonjs,其他的已优化。版本号查找正在排期中。 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
lego组件接入记录 - on mobilev2
1. 准备工作
浏览lego网站,了解以下内容:
2. 安装lego
顺利安装,没什么问题
安装好lego之后,下面打算接入一个fis组件tip
3. 初始化组件
mkdir tip cd tip lego init
但是出现了常见的办公机代理问题:
通过命令lego help config发现配置方式和npm的很像,所以尝试了npm的代理设置方式:
lego config set proxy http://proxy.tencent.com:8080
结果还是不行,没办法,最后只能通过proxifier解决,在初始化的过程中还遇到一个小问题,记录如下:
初始化之后的一些文件还是没有清除干净,还留了spmjs的痕迹,examples/index.md:
4. 组件开发
在开发组件的过程中,最大的困扰点是路径依赖问题,包括图片,css,js,不知道有html的组件怎么办?
然后就想看看现有的组件是怎么写的,然后悲催的发现现在lego系统上已有的组件都是基础的逻辑组件,根本没有什么依赖,好不容易找到一个可能有依赖的组件,看源代码之后就会发现它是这么处理的:
不是说好的commonJS么,我能说坑么。。
不管一直存在的通用组件的路径依赖问题,也不管fis的路径特性问题,我们在开发组件的时候考虑通用性就好,于是,在各种依赖路径的问题上,我们都是参考node方式,所以有如下代码:
基本就是通过相对路径,去看arale组件的写法也是这样的,不过他们有seajs配合,但是fis就不行了。。
开发完之后怎么测试?反正我不知道。。。
好了,先发布再说:
然后我们可以看到lego系统上就出现了我们的组件:
5.使用组件
怎么使用组件?系统上并没有较详细的说明,反正就一句:类似node
那既然如此,我们来试一下。
随便拉一个公众号的分支或者主干也成,然后到src/modules/文件下执行命令:
然后可以看到有以下目录结构:
然后在首页那里尝试使用:
样式也需要修改一下:
运行,然后就可以看到tip出来了:
然后我们看一下dist文件里面:
可以看到我们通过相对路径实现的css依赖和img依赖都没有问题。
但是我们关于其他组件的依赖是有问题的:
在这里没有报错的原因是系统本身就有zepto库。
综上,如果实现了关于lego组件调用的fis插件的话,业务使用lego组件将会非常简单
只需要2步就可以使用lego组件:
#在适当的位置安装组件 lego install my-com
6. 组件更新
组件的更新维护也是很方便的
在测试的过程中,发现组件代码有一些问题,于是我们进行了修改:
修改完毕之后,我们需要修改组件的版本号,这个要在组件根目录下面的package.json里面修改:
最后,我们只需要和之前发布操作一样发布组件就可以更新了:
刷新一下lego网站:
升级维护一个组件是不是很方便?
组件更新了,那我们业务也可能需要使用最新的组件代码,于是我们回到之前的src/modules/目录下:
这里应该有更新语句的,可能是update吧,不过没必要纠结,只要记住一条命令可以用就成!
可以看到新的组件已经下载下来了,不过并没有覆盖旧的版本:
为了使用新组件的代码:
如果lego组件的fis插件完成的话,我们业务使用的代码将会是:
而fis插件将会帮助我们直接使用本地最新版本的tip组件代码,因此业务只需要更新组件的最新代码,完全不用修改业务源代码就可以使用到最新版本的lego组件。
另一种情况,如果首页使用最新的tip组件代码,但是详情页使用旧版的tip代码,这样也没有问题:
实际上fis插件只是帮助我们简写路径而已
7. 小结
可以看到lego系统基本可用,下面总结一下这次lego组件接入的情况
7.1 槽点
7.2 组件开发
组件开发时遵循下面两条即可
7.3 展望
其实lego组件非常适合用在移动端fis构建环境,从上面的接入过程就可以看到,基本没有遇到什么困难,但那是因为在移动端fis构建环境下
通用组件最大的问题在于依赖,其中有两个:
这就是为什么在公众号下使用lego组件好像没遇到什么困难的原因。。。
实际上,要在其他环境下使用lego组件是需要很好的构建工具支持的,具体的交给小卡君了。。。
最后提一下公众号这边的展望
目前内链html是通过这样的语法:
在使用组件时,也希望可以使用这种语法来内链组件的html代码,比如:
这里我们需要扩展__inline语法,支持自动在lego_modules文件夹下搜索本地最新版本的组件,并且自动内链组件目录下的index.html代码
另一点关于图片合并问题,不过公众号这边的css sprite工具都还没有,所以暂时就不展望了,不过如果组件包含图片,那这里肯定会有需要解决的问题的,不过一般组件不包含图片,所以优先级不高
The text was updated successfully, but these errors were encountered: