├── .babelrc ├── .gitignore ├── LICENSE ├── README.md ├── aotoo.config.js ├── build ├── cmdIndex.js ├── env_attrs.js ├── index.js ├── lib │ ├── babelrc │ ├── gitignore │ ├── package.json │ ├── server │ │ ├── index.js │ │ ├── indexControl.js │ │ └── indexlib.js │ ├── src │ │ ├── defaultscene.js │ │ ├── empty.js │ │ └── vendorIndex.js │ ├── xcx │ │ ├── app.js │ │ ├── app.json │ │ ├── app.wxss │ │ ├── components │ │ │ ├── actionSide │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── aotoo │ │ │ │ ├── core │ │ │ │ │ ├── behaviors │ │ │ │ │ │ ├── base.js │ │ │ │ │ │ ├── common.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── item.js │ │ │ │ │ │ ├── list.js │ │ │ │ │ │ └── tree.js │ │ │ │ │ ├── getapp.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── ui.js │ │ │ │ │ └── utils.js │ │ │ │ ├── item │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.styl │ │ │ │ │ └── index.wxml │ │ │ │ ├── lib │ │ │ │ │ ├── deepmerge.js │ │ │ │ │ ├── foritem.js │ │ │ │ │ ├── forlist.js │ │ │ │ │ ├── hooks.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── md5.js │ │ │ │ │ ├── tree.js │ │ │ │ │ ├── util.js │ │ │ │ │ └── vibrate.js │ │ │ │ ├── list │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.styl │ │ │ │ │ └── index.wxml │ │ │ │ ├── partments │ │ │ │ │ ├── body.wxml │ │ │ │ │ ├── dot.wxml │ │ │ │ │ ├── events │ │ │ │ │ │ ├── longtap.wxml │ │ │ │ │ │ ├── normal.wxml │ │ │ │ │ │ ├── notouch.wxml │ │ │ │ │ │ ├── notouch_scroll.wxml │ │ │ │ │ │ ├── tap.wxml │ │ │ │ │ │ ├── touch.wxml │ │ │ │ │ │ └── touch_scroll.wxml │ │ │ │ │ ├── footer.wxml │ │ │ │ │ ├── img.wxml │ │ │ │ │ ├── kv.wxml │ │ │ │ │ ├── li.wxml │ │ │ │ │ ├── parse_body │ │ │ │ │ │ └── array.wxml │ │ │ │ │ ├── parse_common │ │ │ │ │ │ └── index.wxml │ │ │ │ │ ├── parse_dot │ │ │ │ │ │ └── array.wxml │ │ │ │ │ ├── parse_footer │ │ │ │ │ │ └── array.wxml │ │ │ │ │ ├── parse_img │ │ │ │ │ │ ├── array.wxml │ │ │ │ │ │ ├── object.wxml │ │ │ │ │ │ └── string.wxml │ │ │ │ │ ├── parse_kv │ │ │ │ │ │ └── object.wxml │ │ │ │ │ ├── parse_li │ │ │ │ │ │ └── array.wxml │ │ │ │ │ ├── parse_title │ │ │ │ │ │ ├── array.wxml │ │ │ │ │ │ ├── object.wxml │ │ │ │ │ │ └── string.wxml │ │ │ │ │ ├── slot.wxml │ │ │ │ │ └── title.wxml │ │ │ │ ├── templates │ │ │ │ │ ├── inner_templates.wxml │ │ │ │ │ ├── item.wxml │ │ │ │ │ ├── list.wxml │ │ │ │ │ └── parse_item.wxml │ │ │ │ ├── tree │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.styl │ │ │ │ │ └── index.wxml │ │ │ │ └── util.wxs │ │ │ ├── form │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ └── index.wxml │ │ │ ├── markit │ │ │ │ ├── hl.js │ │ │ │ ├── hl │ │ │ │ │ ├── bash.js │ │ │ │ │ ├── css.js │ │ │ │ │ ├── html.js │ │ │ │ │ ├── js.js │ │ │ │ │ └── json.js │ │ │ │ ├── hp2.js │ │ │ │ ├── htmlparser.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ ├── markdown.styl │ │ │ │ └── marked.js │ │ │ ├── modules │ │ │ │ ├── appstorelist.js │ │ │ │ ├── appstorelist.wxss │ │ │ │ ├── button.js │ │ │ │ ├── button.wxss │ │ │ │ ├── checklist.js │ │ │ │ ├── checklist.wxss │ │ │ │ ├── collapse.js │ │ │ │ ├── collapse.wxss │ │ │ │ ├── dropdown.js │ │ │ │ ├── dropdown.wxss │ │ │ │ ├── fruit.js │ │ │ │ ├── fruit.wxss │ │ │ │ ├── guaguaka.js │ │ │ │ ├── guaguaka.wxss │ │ │ │ ├── indexlist.js │ │ │ │ ├── indexlist.wxss │ │ │ │ ├── locker.js │ │ │ │ ├── locker.wxss │ │ │ │ ├── navball.js │ │ │ │ ├── navball.wxss │ │ │ │ ├── navpad.js │ │ │ │ ├── navpad.wxss │ │ │ │ ├── searchbar.js │ │ │ │ ├── searchbar.wxss │ │ │ │ ├── sslider.js │ │ │ │ ├── sslider.wxss │ │ │ │ ├── stickybar.js │ │ │ │ ├── stickybar.wxss │ │ │ │ ├── tabbar.js │ │ │ │ ├── tabbar.wxss │ │ │ │ ├── tabpro.wxss │ │ │ │ ├── tabside.js │ │ │ │ ├── tabside.wxss │ │ │ │ ├── touchbar.js │ │ │ │ ├── touchbar.wxss │ │ │ │ ├── turntable.js │ │ │ │ └── turntable.wxss │ │ │ └── templates.wxml │ │ ├── css │ │ │ ├── button.wxss │ │ │ ├── calendar.wxss │ │ │ ├── demo.jpg │ │ │ ├── form.wxss │ │ │ ├── iconfont.wxss │ │ │ ├── icono.wxss │ │ │ ├── loading.wxss │ │ │ ├── markdown.wxss │ │ │ ├── popup.wxss │ │ │ ├── shadow.wxss │ │ │ ├── structor.jpeg │ │ │ ├── tag.wxss │ │ │ └── xquery.png │ │ ├── demos │ │ │ ├── b01 │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── b02 │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── b03 │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── b04 │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── b05 │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── b06 │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── b07 │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── common │ │ │ │ ├── common.wxml │ │ │ │ ├── common.wxss │ │ │ │ └── extpager.js │ │ │ ├── i01 │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── i02 │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── i03 │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── i04 │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── i05 │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── i06 │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── list01 │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── list02 │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── list03 │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ ├── index.wxss │ │ │ │ └── widgets │ │ │ │ │ ├── badge.wxss │ │ │ │ │ ├── menus.wxss │ │ │ │ │ └── search.wxss │ │ │ ├── list04 │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ ├── index.wxss │ │ │ │ └── widgets │ │ │ │ │ ├── badge.wxss │ │ │ │ │ ├── menus.wxss │ │ │ │ │ └── search.wxss │ │ │ ├── list05 │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── list06 │ │ │ │ ├── contents │ │ │ │ │ ├── item1.js │ │ │ │ │ └── item2.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── load01 │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ └── tag01 │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ ├── images │ │ │ ├── banner.jpg │ │ │ ├── chat.png │ │ │ ├── huawei.jpg │ │ │ ├── logo.jpg │ │ │ ├── mk1.jpeg │ │ │ ├── mk2.jpeg │ │ │ ├── mk3.jpeg │ │ │ ├── wxzan.jpg │ │ │ └── xquery.png │ │ ├── pages │ │ │ ├── html │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ ├── index.wxss │ │ │ │ └── mi.html │ │ │ ├── index │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ └── markdown │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.md │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ ├── project.config.json │ │ └── sitemap.json │ └── xcx_template │ │ ├── cloudclient.js │ │ ├── cloudfuns │ │ ├── login │ │ │ ├── index.js │ │ │ └── package.json │ │ └── openapi │ │ │ ├── config.json │ │ │ ├── index.js │ │ │ └── package.json │ │ └── project.config.json ├── main.js ├── plugins │ ├── concat.js │ └── memfs.js ├── server │ ├── devProxy.js │ └── devServer.js ├── util │ ├── commonExist.js │ ├── entry.js │ ├── fillupMapfile3ds.js │ ├── generateFedJsDirectory.js │ ├── generateScenes.js │ ├── generateServer.js │ ├── generateServerConfigsFile.js │ ├── generateVendors.js │ ├── generateXcxDirectory.js │ ├── htmltemplate.js │ ├── openBrowser.js │ ├── portOccupied.js │ ├── sleep.js │ └── validPort.js ├── webpack.alias.config.js ├── webpack.base.config.js ├── webpack.common.config.js ├── webpack.main.config.js ├── webpack.xcx.config.js └── webpack.xcx.config_bak.js ├── index.js ├── package.json ├── postcss.config.js ├── src └── mdSample │ ├── components │ ├── bt_table.js │ ├── cell │ │ ├── common │ │ │ ├── attachment.js │ │ │ ├── attributes.js │ │ │ ├── dataparser.js │ │ │ ├── elements │ │ │ │ ├── inputbody.js │ │ │ │ ├── register.js │ │ │ │ └── whatinput.js │ │ │ ├── events.js │ │ │ └── util.js │ │ ├── form.js │ │ └── index.js │ ├── items │ │ ├── button.js │ │ ├── droppop.js │ │ ├── load.js │ │ ├── message.js │ │ └── tooltip.js │ ├── list │ │ ├── table.js │ │ └── tabs.js │ ├── swiper.js │ └── tree.js │ ├── configs │ └── default.js │ ├── css │ ├── _commoncss │ │ ├── markdown.styl │ │ ├── normalize.styl │ │ ├── nprogress.styl │ │ ├── router.styl │ │ └── util.styl │ ├── _commondoc.styl │ ├── _commonx │ │ ├── commonfunc.styl │ │ ├── config │ │ │ ├── codetheme │ │ │ │ ├── black.styl │ │ │ │ └── grey.styl │ │ │ ├── icon.styl │ │ │ ├── iconfont.styl │ │ │ ├── index.styl │ │ │ ├── input.styl │ │ │ ├── markdown.styl │ │ │ ├── pagesConfig.styl │ │ │ └── theme │ │ │ │ ├── default.styl │ │ │ │ ├── green.styl │ │ │ │ ├── orange.styl │ │ │ │ └── purple.styl │ │ ├── css │ │ │ ├── _animate.styl │ │ │ ├── background.styl │ │ │ ├── border.styl │ │ │ ├── button.styl │ │ │ ├── calendar.styl │ │ │ ├── card.styl │ │ │ ├── color.styl │ │ │ ├── custom.styl │ │ │ ├── dropdown.styl │ │ │ ├── flex.styl │ │ │ ├── height.styl │ │ │ ├── icon.styl │ │ │ ├── index.styl │ │ │ ├── input.styl │ │ │ ├── item.styl │ │ │ ├── keyframes.styl │ │ │ ├── list.styl │ │ │ ├── margin.styl │ │ │ ├── nodata.styl │ │ │ ├── padding.styl │ │ │ ├── pages │ │ │ │ ├── _crop.styl │ │ │ │ ├── _editor.styl │ │ │ │ ├── _searchbox.styl │ │ │ │ ├── _table.styl │ │ │ │ ├── _tips.styl │ │ │ │ ├── input.styl │ │ │ │ └── margin.styl │ │ │ ├── pic.styl │ │ │ ├── position.styl │ │ │ ├── radius.styl │ │ │ ├── search.styl │ │ │ ├── size.styl │ │ │ ├── slider.styl │ │ │ ├── switch.styl │ │ │ ├── tabs.styl │ │ │ ├── tag.styl │ │ │ ├── textellipsis.styl │ │ │ ├── tips.styl │ │ │ ├── title.styl │ │ │ ├── tree.styl │ │ │ ├── width.styl │ │ │ └── wxParse.styl │ │ ├── cssFunc │ │ │ ├── animation.styl │ │ │ ├── badge.styl │ │ │ ├── button.styl │ │ │ ├── color.styl │ │ │ ├── custom.styl │ │ │ ├── flex.styl │ │ │ ├── grid.styl │ │ │ ├── icon.styl │ │ │ ├── index.styl │ │ │ ├── input.styl │ │ │ ├── list │ │ │ │ └── normal.styl │ │ │ ├── modules │ │ │ │ ├── customtable.styl │ │ │ │ ├── input.styl │ │ │ │ ├── modal.styl │ │ │ │ ├── tabs.styl │ │ │ │ ├── tree.styl │ │ │ │ └── uploader.styl │ │ │ ├── pages │ │ │ │ ├── adminrouter.styl │ │ │ │ ├── destnation.styl │ │ │ │ ├── login.styl │ │ │ │ ├── routerconfig │ │ │ │ │ ├── routerStyle.styl │ │ │ │ │ ├── routerStyle2.styl │ │ │ │ │ └── routerStyle3.styl │ │ │ │ └── steps.styl │ │ │ ├── position.styl │ │ │ ├── tabbar.styl │ │ │ ├── tag.styl │ │ │ ├── textellipsis.styl │ │ │ ├── tips.styl │ │ │ └── triangle.styl │ │ └── modules │ │ │ ├── alert.styl │ │ │ ├── bt_table │ │ │ ├── _3ds.styl │ │ │ └── index.styl │ │ │ ├── calendarx.styl │ │ │ ├── datetimepicker │ │ │ └── index.styl │ │ │ ├── droppop.styl │ │ │ ├── form │ │ │ ├── _common │ │ │ │ ├── checkboxandradio.styl │ │ │ │ ├── select.styl │ │ │ │ ├── text.styl │ │ │ │ └── textarea.styl │ │ │ └── index.styl │ │ │ ├── load │ │ │ └── index.styl │ │ │ ├── modal.styl │ │ │ ├── popup.styl │ │ │ ├── scalex │ │ │ └── index.styl │ │ │ ├── swiper │ │ │ ├── _3ds.styl │ │ │ └── index.styl │ │ │ ├── table.styl │ │ │ ├── tabs │ │ │ └── index.styl │ │ │ ├── tooltip.styl │ │ │ ├── tree │ │ │ └── index.styl │ │ │ └── uploader │ │ │ └── index.styl │ ├── common.styl │ └── index.styl │ ├── docs │ ├── agreement.md │ ├── aotoo │ │ ├── comp.md │ │ ├── global.md │ │ ├── html.md │ │ ├── inner.md │ │ ├── innercustom.md │ │ ├── item.md │ │ ├── itemapi.md │ │ ├── itemevent.md │ │ ├── lib.md │ │ ├── life.md │ │ ├── list.md │ │ ├── listapi.md │ │ ├── listevent.md │ │ ├── readme.md │ │ ├── run.md │ │ ├── start.md │ │ └── tree.md │ ├── app │ │ ├── demo.md │ │ ├── install.md │ │ └── readme.md │ ├── asset.md │ ├── assetmini.md │ ├── cli.md │ ├── create.md │ ├── demos.md │ ├── demos │ │ ├── item.md │ │ ├── itemapi.md │ │ ├── itemattr.md │ │ ├── itemcomp.md │ │ ├── itemcomplex.md │ │ ├── itemembed.md │ │ ├── itemevent.md │ │ ├── iteminner.md │ │ ├── itempic.md │ │ └── list.md │ ├── form │ │ ├── custom.md │ │ ├── demos │ │ │ ├── checkbox.md │ │ │ ├── dropdown.md │ │ │ ├── event.md │ │ │ ├── group-api.md │ │ │ ├── group.md │ │ │ ├── input-api.md │ │ │ ├── mix-api.md │ │ │ ├── mix.md │ │ │ ├── radiobox.md │ │ │ ├── single.md │ │ │ └── union.md │ │ ├── event.md │ │ ├── form.md │ │ ├── group.md │ │ ├── mix.md │ │ ├── readme.md │ │ ├── single.md │ │ └── union.md │ ├── hooks.md │ ├── install.md │ ├── kit.md │ ├── logs │ │ └── hub.md │ ├── mddemo.md │ ├── minip │ │ ├── component │ │ │ ├── calendar.md │ │ │ ├── collapse.md │ │ │ ├── dropdown.md │ │ │ ├── filter.md │ │ │ ├── locker.md │ │ │ ├── popup.md │ │ │ └── slider.md │ │ ├── inner.md │ │ ├── item.md │ │ ├── itemapi.md │ │ ├── itemevent.md │ │ ├── list.md │ │ ├── listapi.md │ │ ├── listevent.md │ │ ├── listusage.md │ │ ├── readme.md │ │ ├── startm.md │ │ ├── tree.md │ │ └── usage.md │ ├── reactdemo.md │ ├── readme.md │ ├── service.md │ ├── start.md │ ├── startm.md │ ├── startr.md │ ├── structor.md │ ├── stylus.md │ ├── vuedemo.md │ └── web │ │ ├── aotoo.md │ │ ├── css.md │ │ ├── dist.md │ │ ├── js.md │ │ ├── minip.md │ │ ├── minip_npm.md │ │ ├── noderoute.md │ │ ├── pager.md │ │ ├── pagernav.md │ │ ├── pagerpage.md │ │ ├── readme.md │ │ ├── router.md │ │ ├── server.md │ │ ├── start.md │ │ └── usage.md │ ├── html │ └── index.html │ ├── images │ ├── favicon.ico │ ├── logo.png │ ├── minip │ │ ├── collapse.jpg │ │ ├── dd.gif │ │ ├── filter-1.jpg │ │ ├── filter-2.jpg │ │ ├── filter-3.jpg │ │ ├── filter-4.jpg │ │ ├── filter-5.jpg │ │ ├── filter-6.jpg │ │ ├── filter-7.jpg │ │ ├── filter-8.jpg │ │ ├── filter-getvalue.jpg │ │ ├── filter.gif │ │ ├── locker.jpg │ │ ├── popup.png │ │ └── sslider.jpg │ ├── others │ │ └── fruit.png │ ├── structor.jpg │ └── ui │ │ ├── css.png │ │ ├── loading-logo.png │ │ ├── loading.png │ │ ├── qqqun.jpg │ │ ├── saui-logo.png │ │ ├── saui.jpeg │ │ ├── saui2.jpg │ │ ├── ss.png │ │ └── xquery.png │ ├── js │ ├── _common │ │ ├── advertising.js │ │ ├── header.js │ │ └── mkmenus.js │ ├── aotoo │ │ ├── _subpages │ │ │ └── a.js │ │ ├── doc.html │ │ ├── doc.styl │ │ └── index.js │ ├── app │ │ ├── _subpages │ │ │ └── a.js │ │ ├── app.html │ │ ├── app.styl │ │ └── index.js │ ├── demos │ │ ├── _subpages │ │ │ └── a.js │ │ ├── demos.html │ │ ├── demos.styl │ │ └── index.js │ ├── doc │ │ ├── _subpages │ │ │ └── a.js │ │ ├── doc.html │ │ ├── doc.styl │ │ └── index.js │ ├── form │ │ ├── _subpages │ │ │ └── a.js │ │ ├── doc.html │ │ ├── doc.styl │ │ └── index.js │ ├── index │ │ ├── _subpages │ │ │ ├── a.js │ │ │ ├── b.js │ │ │ └── c.js │ │ └── index.js │ ├── logs │ │ ├── _subpages │ │ │ └── a.js │ │ ├── doc.html │ │ ├── doc.styl │ │ └── index.js │ ├── micro │ │ ├── doc.html │ │ ├── doc.styl │ │ └── index.js │ ├── minip │ │ ├── _subpages │ │ │ └── a.js │ │ ├── index.js │ │ ├── minip.html │ │ └── minip.styl │ ├── router │ │ ├── _subpages │ │ │ ├── a.js │ │ │ ├── b.js │ │ │ ├── c.js │ │ │ ├── d.js │ │ │ ├── win.js │ │ │ └── windowroutes │ │ │ │ ├── w1.js │ │ │ │ ├── w2.js │ │ │ │ ├── w3.js │ │ │ │ ├── win1.js │ │ │ │ ├── win2.js │ │ │ │ └── win3.js │ │ ├── doc.html │ │ ├── doc.styl │ │ └── index.js │ ├── saui │ │ ├── _feedback │ │ │ ├── alert.js │ │ │ ├── drawer.js │ │ │ ├── load.js │ │ │ ├── modal.js │ │ │ ├── notice.js │ │ │ ├── tip.js │ │ │ └── tooltip.js │ │ ├── _navigation │ │ │ ├── dropdown.js │ │ │ └── tabs.js │ │ ├── _normal │ │ │ ├── button.js │ │ │ ├── color.js │ │ │ ├── font.js │ │ │ ├── icon.js │ │ │ ├── lineheight.js │ │ │ └── tag.js │ │ ├── _show │ │ │ ├── btTable.js │ │ │ ├── swiper.js │ │ │ ├── table.js │ │ │ └── tree.js │ │ ├── document.js │ │ ├── index.js │ │ └── index.styl │ └── vendors │ │ ├── 3ds │ │ └── jq │ │ │ ├── index.css │ │ │ └── index.js │ │ ├── ajax │ │ └── index.js │ │ ├── ao2.js │ │ ├── index.js │ │ ├── page │ │ └── index.js │ │ └── router │ │ ├── _common │ │ ├── fakepager.js │ │ ├── popstate.js │ │ ├── routercontainer.js │ │ ├── routerhistory.js │ │ ├── routerpage.js │ │ └── routerpart.js │ │ └── index.js │ └── server │ ├── .babelrc │ ├── configs.js │ ├── index.js │ ├── lib.js │ ├── pages │ ├── aotoo │ │ └── index.js │ ├── doc │ │ └── index.js │ ├── index │ │ └── index.js │ └── minip │ │ └── index.js │ └── plugins │ ├── api │ └── index.js │ └── uploader │ └── index.js └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["@babel/preset-env", { 4 | "useBuiltIns": "usage", 5 | "corejs": 3 6 | }], 7 | ["@babel/preset-react", { 8 | "useSpread": false 9 | }] 10 | ], 11 | "env": { 12 | "development": { 13 | "presets": [["@babel/preset-react", { "development": true }]] 14 | } 15 | }, 16 | "plugins": [ 17 | "react-hot-loader/babel", 18 | "@babel/plugin-syntax-dynamic-import", 19 | "@babel/plugin-transform-modules-commonjs", 20 | "@babel/plugin-proposal-export-default-from", 21 | "@babel/plugin-proposal-export-namespace-from", 22 | ["@babel/plugin-proposal-decorators", { "legacy": true }], 23 | ["@babel/plugin-proposal-class-properties", { "loose": true }], 24 | "@babel/plugin-proposal-function-bind", 25 | "@babel/plugin-proposal-function-sent", 26 | "@babel/plugin-transform-computed-properties", 27 | [ 28 | "@babel/plugin-transform-runtime", 29 | { 30 | "absoluteRuntime": false, 31 | "corejs": false, 32 | "helpers": true, 33 | "regenerator": true, 34 | "useESModules": false 35 | } 36 | ] 37 | ] 38 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | bower_components 3 | dist 4 | *.log 5 | .DS_Store 6 | *.db 7 | .vscode 8 | aotooExtends 9 | /src/* 10 | !/src/reactSample/ 11 | !/src/mdSample/ 12 | !/src/aotooSample/ 13 | !/src/vueSample/ 14 | !/src/xcxSample/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2017 webkixi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /build/lib/babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["@babel/preset-env", { 4 | "useBuiltIns": "usage", 5 | "corejs": 3, 6 | "loose": true 7 | }], 8 | ["@babel/preset-react", { 9 | "useSpread": false 10 | }] 11 | ], 12 | "env": { 13 | "development": { 14 | "presets": [["@babel/preset-react", { "development": true }]] 15 | } 16 | }, 17 | "plugins": [ 18 | "react-hot-loader/babel", 19 | "@babel/plugin-syntax-dynamic-import", 20 | "@babel/plugin-transform-modules-commonjs", 21 | "@babel/plugin-proposal-export-default-from", 22 | "@babel/plugin-proposal-export-namespace-from", 23 | ["@babel/plugin-proposal-decorators", { "legacy": true }], 24 | ["@babel/plugin-proposal-class-properties", { "loose": true }], 25 | "@babel/plugin-proposal-function-bind", 26 | "@babel/plugin-proposal-function-sent", 27 | "@babel/plugin-transform-computed-properties", 28 | [ 29 | "@babel/plugin-transform-runtime", 30 | { 31 | "absoluteRuntime": false, 32 | "corejs": false, 33 | "helpers": true, 34 | "regenerator": true, 35 | "useESModules": false 36 | } 37 | ] 38 | ] 39 | } -------------------------------------------------------------------------------- /build/lib/gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | bower_components 3 | dist 4 | *.log 5 | .DS_Store 6 | *.db 7 | *.vscode 8 | aotooExtends 9 | !/src/aotooSample 10 | /src 11 | -------------------------------------------------------------------------------- /build/lib/server/index.js: -------------------------------------------------------------------------------- 1 | require('@babel/register')({ 2 | extends: './.babelrc', 3 | ignore: [/node_modules/], 4 | cache: true, 5 | }) 6 | require('@babel/polyfill') 7 | const chalk = require('chalk') 8 | const appConfigs = require('./configs')() 9 | const { TYPE, PORT, name, isDev, micro } = appConfigs 10 | const isXcx = (TYPE == 'mp' || TYPE == 'ali') 11 | const app = require('./lib')(appConfigs) 12 | 13 | if (isXcx) { 14 | app.state.views = true 15 | } 16 | app.listen(PORT, function (err, stat) { 17 | if (err) console.log(err); 18 | const destPort = chalk.green.bold(`【${PORT}】`) 19 | console.log(` 20 | ============================ 21 | + ${process.env.NODE_ENV === 'production' ? isDev ? '开发模式' : '生产模式' : '开发模式'} 22 | + node-server + 23 | + 服务名: ${name} + 24 | + 端口: ${destPort} + 25 | + 模式: ${micro ? '微服务模式' : '服务模式'} + 26 | +=========================== 27 | `); 28 | 29 | if (isXcx) { 30 | console.log(chalk.bold.yellow('node端已启动,请打开微信开发工具并指定项目目录')) 31 | } 32 | }) 33 | -------------------------------------------------------------------------------- /build/lib/server/indexControl.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Aotoo-hub 3 | * 多项目大前端脚手架 4 | * 作者:天天修改 5 | * home-url: http://www.agzgz.com 6 | * github: https: //github.com/webkixi 7 | */ 8 | module.exports = function (oridata) { 9 | return { 10 | get: function name(ctx) { 11 | oridata.title = 'aotoo-hub 多项目全栈脚手架' 12 | oridata.root = 'aotoo-hub 智能脚手架' 13 | return oridata 14 | }, 15 | post: function name(ctx) { 16 | return oridata 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /build/lib/src/empty.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Aotoo-hub 3 | * 多项目大前端脚手架 4 | * 作者:天天修改 5 | * home-url: http://www.agzgz.com 6 | * github: https: //github.com/webkixi 7 | */ 8 | 9 | // 前端业务逻辑页面请写在此处 10 | // 该静态文件会自动加载到业务页面中 11 | import ij from 'aotoo-inject' 12 | const inject = ij(); 13 | inject.css(` 14 | body{ 15 | font-size: 1.2em; 16 | } 17 | `) 18 | 19 | inject.js([ 20 | 'jquery' 21 | ], function () { 22 | window.$ = jQuery 23 | $('#root').html(` 24 | 这是一个新项目 25 |
26 | 更多aotoo-hub使用说明请移步 agzgz 27 |
28 | demo 29 | `) 30 | }) -------------------------------------------------------------------------------- /build/lib/src/vendorIndex.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Aotoo-hub 3 | * 多项目大前端脚手架 4 | * 作者:天天修改 5 | * home-url: http://www.agzgz.com 6 | * github: https: //github.com/webkixi 7 | */ 8 | 9 | // 引用react, vue等第三方库 10 | // 编译后会生成vendor.js,并自动加载到页面中 11 | module.exports = {} -------------------------------------------------------------------------------- /build/lib/xcx/app.js: -------------------------------------------------------------------------------- 1 | //app.js 2 | App({ 3 | onLaunch: function () { 4 | // 展示本地存储能力 5 | var logs = wx.getStorageSync('logs') || [] 6 | logs.unshift(Date.now()) 7 | wx.setStorageSync('logs', logs) 8 | 9 | // 登录 10 | wx.login({ 11 | success: res => { 12 | // 发送 res.code 到后台换取 openId, sessionKey, unionId 13 | } 14 | }) 15 | // 获取用户信息 16 | wx.getSetting({ 17 | success: res => { 18 | if (res.authSetting['scope.userInfo']) { 19 | // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框 20 | wx.getUserInfo({ 21 | success: res => { 22 | // 可以将 res 发送给后台解码出 unionId 23 | this.globalData.userInfo = res.userInfo 24 | 25 | // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 26 | // 所以此处加入 callback 以防止这种情况 27 | if (this.userInfoReadyCallback) { 28 | this.userInfoReadyCallback(res) 29 | } 30 | } 31 | }) 32 | } 33 | } 34 | }) 35 | }, 36 | globalData: { 37 | userInfo: null 38 | } 39 | }) -------------------------------------------------------------------------------- /build/lib/xcx/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "pages": [ 3 | "pages/index/index", 4 | "pages/html/index", 5 | "pages/markdown/index" 6 | ], 7 | "window": { 8 | "backgroundTextStyle": "light", 9 | "navigationBarBackgroundColor": "#fff", 10 | "navigationBarTitleText": "queryui", 11 | "navigationBarTextStyle": "black" 12 | }, 13 | "permission": { 14 | "scope.userLocation": { 15 | "desc": "你的位置信息将用于小程序位置接口的效果展示" 16 | } 17 | }, 18 | "usingComponents": { 19 | "ui-item": "/components/aotoo/item/index", 20 | "ui-list": "/components/aotoo/list/index", 21 | "ui-tree": "/components/aotoo/tree/index", 22 | "ui-pop": "/components/actionSide/index", 23 | "ui-markit": "/components/markit/index" 24 | }, 25 | "style": "v2", 26 | "sitemapLocation": "sitemap.json" 27 | } -------------------------------------------------------------------------------- /build/lib/xcx/app.wxss: -------------------------------------------------------------------------------- 1 | @import './css/markdown.wxss'; 2 | @import './css/popup.wxss'; 3 | 4 | /**app.wxss**/ 5 | .container { 6 | height: 100%; 7 | display: flex; 8 | flex-direction: column; 9 | align-items: center; 10 | justify-content: space-between; 11 | padding: 200rpx 0; 12 | box-sizing: border-box; 13 | } 14 | 15 | .pop-readme { 16 | display: flex !important; 17 | flex-direction: column; 18 | align-items: center; 19 | padding-top: 30px !important; 20 | box-sizing: border-box; 21 | overflow: auto; 22 | } 23 | 24 | .pop-readme .ul{ 25 | width: 100%; 26 | height: auto; 27 | display: flex; 28 | flex-direction: column; 29 | align-items: center; 30 | } 31 | 32 | .pop-readme .ul image{ 33 | width: 300px; 34 | height: 300px; 35 | } -------------------------------------------------------------------------------- /build/lib/xcx/components/actionSide/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "ui-item": "/components/aotoo/item/index", 5 | "ui-list": "/components/aotoo/list/index", 6 | "ui-tree": "/components/aotoo/tree/index" 7 | } 8 | } -------------------------------------------------------------------------------- /build/lib/xcx/components/actionSide/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |