# agile-ui **Repository Path**: nandy007/agile-ui ## Basic Information - **Project Name**: agile-ui - **Description**: agile框架ui定义 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-03-11 - **Last Updated**: 2023-02-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Agile UI框架 Agile UI框架是一个基于HTML5的UI模块化框架,可以让您的UI组件化使用,更容易维护和复用。 下面均以aui简称 # 用法 aui用于模块化使用ui,使用前需要先创建组件原型new AuiComponent(原型),然后在使用来使用 其中AuiComponent为aui的一个类,XXX为组件原型的tag属性,即标签名。 具体用法请看“使用”。 # 使用 aui本身用webpack打包可直接在页面使用script引用;也可以被agile-cli工具或者自己搭建的webpack环境下引用。 需要注意的是,使用script引用时,style标签的内容将直接添加到页面中,故不支持less、sass,且import的路径请注意是相对于页面的地址;**而在webpack中使用由于使用aui-loader,style元素内可以支持less、sass以及相对路径的import写法,默认style为标准css,可以给style元素设置type为less|sass等以支持对应的语法。** ## 使用script引用 第一步:dist目录是使用webpack打包后的文件所在目录,其中的agile.ui.js拷贝到项目目录中使用script的src引入即可。 比如: ```html ``` 引入后,window对象自动创建aui对象,如果是在amd环境的require下也会注册一个名为aui的模块,此模块包含一个叫AuiComponent的类 第二步:使用组件前需要先创建组件,比如在amd的require中创建一个button1的组件: ```javascript // button1.js文件内容 define(['aui'], function(aui) { 'use strict'; // 创建一个组件原型 var Button = function () { } Button.prototype = { // 组件创建完毕的回调 created: function () { console.log('button1组件已创建'); }, // 组件添加到页面后的回调 attached: function(){ console.log('button1组件已添加到dom'); } } // 定义组件的标签名 Button.tag = 'button1'; // 定义组件内的模板,模板会被作为组件的子元素存在 Button.template = ''; // 定义组件的样式 Button.style = 'aui-button1 button{ background:#ff0000; }'; // 通过原型实例化组件 new aui.AuiComponent(Button); return Button; }); ``` 第三步:在页面中使用来引用即可 ```html ``` ## 在agile-cli环境下使用 第一步:执行如下指令,全局安装agile-cli ```bash npm install agile-cli -g ``` 第二步:创建任意项目目录,并进入目录 ```bash mkdir myapp cd myapp ``` 第三步:查看内置模板 ```bash agile-cli ls ``` 此时控制台会以name:descriptiond的形式把所有模板展示出来,如果已知要使用的模板的name则此步跳过 第四步:使用模板创建项目工程 ```bash agile-cli use ``` 其中name为第三步中查到的某个模板的name,这时候将使用此模板创建项目 创建结束项目工程目录会有一个readme文件,请仔细阅读 第五步:初始化工程 ```bash npm install ``` 第六步:启动开发环境 ```bash npm run start ``` 第七步:编码,主要在app目录内完成,public目录可以操作一些静态资源 第八步:打包 ```bash npm run pack ``` ## 自建webpack环境下使用 webpack环境下使用后缀为aui的文件编写组件,依赖于aui-loader 第一步:进入到项目目录,然后执行cmd指令 ```bash npm install agile-ui --save npm install aui-loader --save-dev ``` 并且配置webpack的aui文件使用aui-loader处理,在module.rules增加如下规则: ```json { test: /\.aui$/, use: { loader: "aui-loader" } } ``` 第二步:在webpack.config配置的入口js中引入agile-ui,比如: ```javascript require('agile-ui'); ``` 第三步:编写组件,创建XXX.aui文件,比如button.aui文件: ```html 111 222 444 ``` aui-loader会将文件转成js并自动调用AuiComponent来创建组件 其中ui标签里的内容是模板(不包含ui标签本身),最终会作为组件的子元素。 script为模块定义,如果已经写了ui和style标签则无须设置template和style,属性 如果没有特殊要求,tag属性也可以不设置,默认使用aui的文件名作为组件名 在ui中可以看到有个child元素,此元素的作用是当组件本身同时有模板和子元素的时候,由于模板会作为子元素,而原来的子元素会被放置在child元素的位置,一个模板仅有一个child元素 第四步:引入组件,在需要的地方require进来即可,比如: ```javascript require('./app/components/button.aui'); ``` 第五步:使用组件,在页面中使用即可使用,比如 ```javascript document.querySelector('#app').innerHTML = '111'; ``` # API说明 ## AuiComponent AuiComponent是aui框架的核心类,用于创建aui组件。 ### 用法: ```javascript new AuiComponent(anestor); ``` 其中anestor是一个组件原型,此原型是必须是一个具有构造函数的函数/类 原型包括静态属性tag、template和style,AuiComponent还提供created、attached、detached、adopted、attributeChanged等组件生命周期钩子函数 一个典型的原型定义如下: ```javascript // 定义原型 function anestor(){ } // 设置钩子及其他函数 anestor.prototype = { created: function(){ // this.$el 将得到组件的原生dom对象 // 当组件创建完毕进入 }, attached: function(){ // 当组件被加到dom后进入 }, adopted: function(){ // 当组件从旧文档移到新文档后进入 }, detached: function(oldDocument, newDocument){ // 当组件被dom移除后进入 }, attributeChanged: function(attrName, oldVal, newVal){ // 当组件有属性变化的时候进入,使用setAttribute操作属性有效 // 需要配合静态属性observedAttributes使用 } } anestor.tag = '';// 定义组件名称,使用时为 anestor.template = '';// 定义组件模板 anestor.style = '';// 定义组件样式 anestor.observedAttributes = ['组件属性名'];// 定义监听变化的属性 ``` #### tag(必须) 用于标识组件的名称,一般为英文数字全小写 #### template 组件的模板,最终会作为组件的子元素 其中template可以包含一个特殊的元素 当使用组件时,组件本身有子元素,则子元素最终会至于template的child元素所在位置 #### style 组件的样式,会作为html的style元素添加到页面中 一般样式都以.aui-tag开头可以避免组件之间的样式混乱 #### observedAttributes 要监听的变化的属性名的数组集合,只有设置了监听的属性在变化的时候才会通知attributeChanged #### created 当组件创建完毕进入 #### attached 当组件被加到dom后进入 #### adopted 当组件从旧文档移到新文档后进入 #### detached 当组件被dom移除后进入 #### attributeChanged 当组件有属性变化的时候进入,使用setAttribute操作属性有效 ### 其他 aui组件一旦使用就会创建一个对应的原型实例对象,对象内可使用$el获取实例对象对应的标准的dom对象。