使用avalon2 去构建一个 app-route
avalon2 的相关文章
https://segmentfault.com/blog/jslouvre
其实框架就是让你使用起来简单些
关于路由其实用一个轻便的框架就可以了
https://github.com/visionmedia/page.js
路由就是根据url后面的路径不同变换代码
前端路由由于其特殊性 最常见表述为这样的形式
#!/contact/me
<ul><li><a href="./index">index</a></li><li><a href="#whoop">#whoop</a></li><li><a href="./about">/about</a></li><li><a href="./contact">/contact</a></li><li><a href="./contact/me">/contact/me</a></li><li><a href="./not-found?foo=bar">/not-found</a></li>
</ul>
然后我们直接上page.js使用代码
<script>page.base('');page('/', index);page('/index', index);page('/about', about);page('/contact', contact);page('/contact/:contactName', contact);page({hashbang:true});function index() {}function about() {}function contact(ctx) {}
</script>
page.js 可以使你使用hashbang
现在我们开始写组件
avalon2 组件写法
https://segmentfault.com/a/1190000004949412
定义组件
avalon.component('ms-approute', {template: '<div class="zl-view"><slot name="page"></slot></div>',defaults: {},soleSlot: 'page'
});
使用组件
<template ms-widget="[{is:'ms-approute'},@approuteconfig]"><div slot="page" class="zl-page" data-route="index" >index</div><div slot="page" class="zl-page" data-route="about">about</div><div slot="page" class="zl-page" data-route="contact">contact</div>
</template>
js
function deepFind(obj, path) {var paths = path.split('.'), current = obj, i;for (i = 0; i < paths.length; ++i) {if (current[paths[i]] == undefined) {return undefined;} else {current = current[paths[i]];}}return current;
}var Approute = function (options) {var lastRoute = '';var lastRouteEle = {};var ele = {};function check(route) {var length = ele.target.children.length;for (var i = 0; i < length; i++) {(function (index) {var page = ele.target.children.item(index);if (page.dataset.route == route) {lastRoute = route;lastRouteEle = page;page.setAttribute("selected", "");}})(i);}}function emit(newValue, oldValue) {lastRouteEle.removeAttribute("selected");check(newValue);}return {emit: emit,config: {onInit: function (a) {console.log("onInit!!");},onReady: function (a) {console.log("onReady!!");var self = this;ele = a;var route = deepFind(self, options.path);check(route);},onViewChange: function (a) {console.log("onViewChange!!");},onDispose: function (a) {console.log("onDispose!!")}}}
};var approute = new Approute({path: "route"
});var con = function () {return {$id: "test",route: "index",approuteconfig: approute.config}
};var vm = avalon.define(con());vm.$watch("route", function (newValue, oldValue) {approute.emit(newValue, oldValue);
});
使用avalon2 去构建一个 app-route相关推荐
- 程序员,如何逐步去构建一个大型网站系统,面试必问!!!
往往程序员在面试的时候,公司的面试任职资格上,总有一个大型系统网站的开发经验,我们先来看看几张面试招聘信息截图....... 大型网站定义 首先我们要思考一个问题,什么样的网站才是大型网站,从网站的技 ...
- 怎样去构建一个优质的Docker容器镜像
抛砖引玉 先说结论 以不变应万变 善用 cache, 使用一个相对固定的 build 环境 构建 自己的基础镜像 洁身自好 保持 context 干净: .dockerignore 镜像环境清理 你需 ...
- 【Android必备】构建一个App小部件(24)【代码块异常】
原 概要 应用小部件是微型应用程序视图,可嵌入其他应用程序(例如主屏幕)并接收定期更新.这些视图在用户界面中称为小部件,您可以使用App Widget提供程序发布视图.一个能够容纳其他App Widg ...
- xampp去运行php文件_从0开始构建一个属于你自己的PHP框架
如何构建一个自己的PHP框架 为什么我们要去构建一个自己的PHP框架?可能绝大多数的人都会说"市面上已经那么多的框架了,还造什么轮子?".我的观点"造轮子不是目的,造轮子 ...
- android tv record,Android TV开发总结(一)构建一个TV app前要知道的事儿
前言:近年来,智能电视的发展如火如荼,Googel 也在大力推进TV及穿带设备的发展,在互联网的风口,是猪也会飞,这句话并不是没有道理的.传统电视机厂商,基本都转型致力于智能电视的相关业务.处理电视硬 ...
- 使用 Microsoft Teams Toolkit for Visual Studio 高效构建一个指示板
Teams Toolkit for Visual Studio 现在可用了,这对于.NET开发者来说真是一个好消息. 本篇我们会介绍使用 ASP.NET Core 去构建一个 Teams 选项卡,并展 ...
- Android TV开发总结(三)构建一个TV app的焦点控制及遇到的坑
原文:Android TV开发总结(三)构建一个TV app的焦点控制及遇到的坑 版权声明:我已委托"维权骑士"(rightknights.com)为我的文章进行维权行动.转载务必 ...
- [译] 用 Redis 和 Python 构建一个共享单车的 app
原文地址:Build a bikesharing app with Redis and Python 原文作者:Tague Griffith 译文出自:掘金翻译计划 本文永久链接:github.com ...
- android tv 云播放器,Android TV开发总结(六)构建一个TV app的直播节目实例
近年来,Android TV的迅速发展,传统的有线电视受到较大的冲击,在TV上用户同样也可以看到各个有线电视的直播频道,相对于手机,这种直播节目,体验效果更佳,尤其是一样赛事节目,大屏幕看得才够痛快, ...
- 使用WebGL去实现一个拖拽式UI代码生成App
前言 UI(User Interface),即用户界面,是软件和用户之间进行交互和信息交换的媒介,实现信息的内部形式与人类可接受形式间的转换.UI开发一般需要经过UI设计.UI实现两个过程.UI设 ...
最新文章
- android开发环境建立以及开发工具的使用--怎样使用eclipse来开发android源码
- 架空输电线路运行规程_[精品课程]绝缘子及其设计架空输电线路设计
- 协程、asyncio、异步编程
- git钩子放服务器_如何在GitLab中添加服务器端的预接收钩子?
- 检查用户是否有权限从ABAP里调用C kernel functions
- pythonanywhere使用:进入虚拟机及修改django项目的css样式
- CentOS配置网易163 yum源
- eventfd(三)
- Python中的石头、剪刀、布游戏
- 柔性太阳能电池pdf_CIS太阳能电池.pdf
- 安卓应用改了图标无效,是缓存的问题
- Vivado2018的使用
- linux 手机遥控器,哪一个最适用?五款常用手机万能遥控器对比体验
- 最小二乘支持向量机(LSSVM)推导
- ABB伺服驱动调试(四)
- 执教《送给盲婆婆的蝈蝈》有感
- 20选1,来挑一款最棒的JSON编辑器吧,用好工具,可提前60分钟下班
- easyexcel导出
- 感悟-关于爱情(一年半,最后一次告别)
- Android应用开发性能优化完全分析,移动应用开发课程报告