资讯专栏INFORMATION COLUMN

使用avalon2 去构建一个 app-route

Wildcard / 3187人阅读

摘要:的相关文章其实框架就是让你使用起来简单些关于路由其实用一个轻便的框架就可以了路由就是根据后面的路径不同变换代码前端路由由于其特殊性最常见表述为这样的形式然后我们直接上使用代码可以使你使用现在我们开始写组件组件写法定义组件使用组件

avalon2 的相关文章
https://segmentfault.com/blog/jslouvre

其实框架就是让你使用起来简单些

关于路由其实用一个轻便的框架就可以了

https://github.com/visionmedia/page.js

路由就是根据url后面的路径不同变换代码

前端路由由于其特殊性 最常见表述为这样的形式

#!/contact/me

然后我们直接上page.js使用代码

page.js 可以使你使用hashbang

现在我们开始写组件

avalon2 组件写法
https://segmentfault.com/a/1190000004949412

定义组件

avalon.component("ms-approute", {
    template: "
", defaults: { }, soleSlot: "page" });

使用组件

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);
});

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/86298.html

相关文章

  • 【CuteJavaScript】Angular6入门项目(1.构建项目和创建路由)

    摘要:启动服务,并打开新窗口可简写创建新组件可简写创建新服务创建路由模块其他另外还有很多的命令提供,详细可以查阅官方文档命令。引入路由模块导出路由模块的指令这里需要添加一个数组,并传入,导出让路由器的相关指令可以在中的组件中使用。 本文目录 一、项目起步 二、编写路由组件 三、编写页面组件 1.编写单一组件 2.模拟数据 3.编写主从组件 四、编写服务 1.为什么需要服务 2....

    bergwhite 评论0 收藏0
  • 发布基于 Avalon2 的 UI 组件库与 SPA 脚手架

    摘要:使用前端框架开发信息管理系统有三年了,最近半年花了些心血将这三年的积累凝聚起来,诞生了两个开源项目和。,中文名安逸,是基于的端组件库。有用于数据展示的组件用于数据提交的组件用于消息提示的与组件组件和用户输入组件等,并且还在不断完善中。 使用 Avalon 前端框架开发信息管理系统有三年了,最近半年花了些心血将这三年的积累凝聚起来,诞生了两个开源项目 ms-bus 和 ane。 ms-b...

    Sike 评论0 收藏0
  • Angular 路由

    摘要:要做到这一点,有三个必不可少的步骤,分别是创建根路由模块定义路由配置添加指令标签。下面的代码以路由配置为参数,通过调用方法来创建根路由模块,并将其导入到应用的根模块中。 概述 路由所要解决的核心问题就是通过建立URL和页面的对应关系,使得不同的页面可以用不同的URL来表示。 Angular路由的核心工作流程图 showImg(https://segmentfault.com/img/b...

    Olivia 评论0 收藏0
  • avalon2初体验

    摘要:最近因项目进展需求对现有项目进行重构,由于目前项目还未实现真正意义上的前后端分离后续会循序重构实现,在时间紧产品循序迭代的情况下,想一次性实现前后端分离精力实在有限主要是前端开发人力不足。 最近因项目进展需求对现有项目进行重构,由于目前项目还未实现真正意义上的前后端分离(后续会循序重构实现),在时间紧产品循序迭代的情况下,想一次性实现前后端分离精力实在有限(主要是前端开发人力不足)。所...

    youkede 评论0 收藏0

发表评论

0条评论

Wildcard

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<