安装

虽然 LuLu UI Edge 主题是基于 Web Components 开发的,但是在实际的策略上和常规的 Web Components 组件还是有区别的。

区别包括:

  1. 样式直接暴露在外,和主文档公用一个上下文,因此,在安装的时候,CSS 文件需要独立引入,而不是只引入 JavaScript 文件就结束。

    因为 LuLu UI 的设计理念是轻 JavaScript,重 HTML。

  2. 会在全局暴露一个公开可访问的对象,使支持用户可以使用 new 语法进行构造,丰富组件的适用场景。

鉴于上面的这种设计,LuLu UI Edge 主题支持多种不同的安装方式,大家可以根据自己的项目形态选择合适的安装方式。

src 直连

所谓直连,就是直接使用 <script> 元素,配合 src 属性加载 JavaScript 资源。

单个组件直连

LuLu UI中,所有的 UI 组件都可以单独使用,在每个组件的文档页面的顶部均有示意,拿 <select> 组件示意。

引入对应的 CSS 文件和 JS 文件就完成了对应组件的安装。

<link rel="stylesheet" href="https://unpkg.com/lu2/theme/edge/css/common/ui/Select.css">
<script type="module" href="https://unpkg.com/lu2/theme/edge/js/common/ui/Select.js"></script>

对于部分组件,type="module" 可以省略,但是由于使用者是记不住哪个组件直连的时候需要使用 type="module",哪个组件不需要使用 type="module",因此,建议所有的组件在直连调用的时候都设置 type="module"

所有组件直连

如果想要使用 LuLu UI 一整套 UI 组件,可以所有组价一次性连接,示意代码:

<link rel="stylesheet" href="https://unpkg.com/lu2/theme/edge/css/common/ui.css">
<script href="https://unpkg.com/lu2/theme/edge/js/common/all.js"></script>

注意,all.js 中不包含任何 import/export 代码,因此无需设置 type="module"

曾经有人问过我这样一个问题,为何 CSS 文件的命名是 'ui',但是 JS 文件的命名是 'all'?

因为CSS代码一定是与 UI 相关的,但是 JS 并不一定。

直连场景下组件的使用

参见个组件对应的文档页面,也可以前往“起步”快速了解多种使用方式。

import 导入

LuLu UI Edge主题抛弃了 commonJS 规范,拥抱标准的 import/export 模块导入规范。

所有的组件都支持 import 导入,支持静态导入和动态导入。

还是拿 <select> 组件示意。

<link rel="stylesheet" href="https://unpkg.com/lu2/theme/edge/css/common/ui/Select.css">
<script type="module">
    import 'https://unpkg.com/lu2/theme/edge/js/common/ui/Select.js';
</script>

此时,给页面中设置了 is="ui-select"<select> 元素就会自动变成美化的样式组件。

对于部分组件,还可以 import 对象在业务代码中使用,例如:

<script type="module">
    import lightTip 'https://unpkg.com/lu2/theme/edge/js/common/ui/LightTip.js';
</script>
<script type="module">
    import Dialog 'https://unpkg.com/lu2/theme/edge/js/common/ui/Dialog.js';
</script>

当然,我们也可以直接 import all.js,如下所示:

<script type="module">
    import 'https://unpkg.com/lu2/theme/edge/js/common/all.js';
</script>

不过没什么必要,因为 all.js 中没有任何 export。

框架中使用

目前业界流行在框架中进行项目开发,LuLu UI 也是支持在框架中安装的。

NPM包名称是 lu2,因为 lulu 已经被占用了,所以使用的是 lu2,表示2个lu。

npm install lu2

此时即可以使用 LuLu UI 中的各个 UI 组件了,还是拿 <select> 组件示意。

<link rel="stylesheet" href="lu2/theme/edge/css/common/ui/Select.css">
<script>
    import 'lu2/theme/edge/js/common/ui/Select';
</script>
本页贡献者:

zhangxinxu