5、backbone中的Router实例

Python Selenium 调用网页打印机另存 PDF 网页截图转PDF,但以图片形式保存的pdf在阅读时不太友好。网上搜索文章时,发现可以直接调用网页打印机另存为PDF,下面为核心代码,测试浏览器Chrome。 阅读详情

关于这个router的使用,我现在依然是心存疑惑的。每点击一次这样的链接action会触发一个事件,但是url也会改变,这样刷性的话,岂不是会自动触发事件。或者这个东西只是用在单个页面的网站上,或者移动设备网站上,或者是我还不会用。

大概解释下Router:
Backbone中的router,见名知意,router有路由的意思,显然这里是要控制url的。

Backbone.Router会把你连接中的#标签当做是url路径

即便我心存疑惑,依然是要写几个例子测试一下的。毕竟实践才能解惑。

1、一个简单的例子

var AppRouter = Backbone.Router.extend({

routes: {

"*actions" : "defaultRoute"

},

defaultRoute : function(actions){

alert(actions);

}

});

var app_router = new AppRouter;

Backbone.history.start();

需要通过调用Backbone.history.start()方法来初始化这个Router

这个Router的使用很像是django的urlconf文件提供的功能,如果你懂得django的话。

在页面上需要有这样的a标签:testActions

2、这个routes映射要怎么传参数呢

看下面例子,立马你就知道了

var AppRouter = Backbone.Router.extend({

    routes: {

        "/posts/:id" : "getPost",

        "*actions" : "defaultRoute"

    },

    getPost: function(id) {

        alert(id);

    },

    defaultRoute : function(actions){

        alert(actions);

    }

});

var app_router = new AppRouter;

Backbone.history.start();

对应的页面上应该有一个超链接:Post 120

从上面已经可以看到匹配#标签之后内容的方法,有两种:一种是用“:”来把#后面的对应的位置作为参数;还有一种是“*”,它可以匹配所有的url,下面再来演练一下。

var AppRouter = Backbone.Router.extend({

    routes: {

        "/posts/:id" : "getPost",

        "/download/*path": "downloadFile",  //对应的链接为<a href="#/download/user/images/hey.gif">download gif</a>

        "/:route/:action": "loadView",      //对应的链接为<a href="#/dashboard/graph">Load Route/Action View</a>

        "*actions" : "defaultRoute"

    },

    getPost: function(id) {

        alert(id);

    },

    defaultRoute : function(actions){

        alert(actions);

    },

    downloadFile: function( path ){ 

                    alert(path); // user/images/hey.gif 

                },

                loadView: function( route, action ){ 

                    alert(route + "_" + action); // dashboard_graph 

                }

    });

var app_router = new AppRouter;

Backbone.history.start();

总结,router的使用看起来能够去除通过对dom节点的绑定来触发事件的那种繁琐,但唯一让我觉得不爽的就是点击之后如果再刷新,就会重新执行一遍对应的方法,因为url已经变了。或许这个也是可以解决的问题,只是我还没有发现。

另外,在其他的模块中(指:model,view,collection),也可以通过使用routes:{}来根据链接触发函数。

下面给出完整的代码,注释自己去掉试验:

<!DOCTYPE html>
<html>
<head>
    <title>the5fire-backbone-router</title>
</head>
<body>
    <a href="#/posts/120">Post 120</a>
<a href="#/download/user/images/hey.gif">download gif</a>
<a href="#/dashboard/graph">Load Route/Action View</a>
</body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
    <script src="http://ajax.cdnjs.com/ajax/libs/underscore.js/1.1.4/underscore-min.js"></script>
    <script src="http://documentcloud.github.com/backbone/backbone-min.js"></script>
    <script>
    (function ($) {
        //Backbone中的router,见名知意,router有路由的意思,显然这里是要控制url的。
        //Backbone.Router会把你连接中的#标签当做是url路径
        /**
        //1、来看一个简单的例子
        var AppRouter = Backbone.Router.extend({
            routes: {
                "*actions" : "defaultRoute"
            },
            defaultRoute : function(actions){
                alert(actions);
            }
        });
        
        var app_router = new AppRouter;
        
        Backbone.history.start();
        
        
        //2、既然是对url进行匹配那么它应该不仅仅只是简单的静态匹配,应该具有传递参数的功能,所以下面再来一个动态的router的例子.
        var AppRouter = Backbone.Router.extend({
            routes: {
                "/posts/:id" : "getPost",
                "*actions" : "defaultRoute"
            },
            getPost: function(id) {
                alert(id);
            },
            defaultRoute : function(actions){
                alert(actions);
            }
        });
        
        var app_router = new AppRouter;
        
        Backbone.history.start();
        **/
        //从上面已经可以看到匹配#标签之后内容的方法,有两种:一种是用“:”来把#后面的对应的位置作为参数;还有一种是“*”,它可以匹配所有的url,下面再来演练一下。
        var AppRouter = Backbone.Router.extend({
            routes: {
                "/posts/:id" : "getPost",
                "/download/*path": "downloadFile",  //对应的链接为<a href="#/download/user/images/hey.gif">download gif</a>
                        "/:route/:action": "loadView",      //对应的链接为<a href="#/dashboard/graph">Load Route/Action View</a>
                "*actions" : "defaultRoute"
            },
            getPost: function(id) {
                alert(id);
            },
            defaultRoute : function(actions){
                alert(actions);
            },
            downloadFile: function( path ){ 
                alert(path); // user/images/hey.gif 
            },
            loadView: function( route, action ){ 
                alert(route + "_" + action); // dashboard_graph 
            }
        });
        
        var app_router = new AppRouter;
        
        Backbone.history.start();
        
    })(jQuery);
    </script>
    
</html>

本文链接:   http://www.the5fire.net/5-backbone-router.html

化工过程设计软件:Aspen Plus二次开发_(2).二次开发概述 假设我们需要创建一个自定义的换热器模型,该模型能够计算两个物流之间的热交换量,并根据传热系数和换热面积进行调整。ACM 模型代码示例!自定义换热器模型!参数:传热系数 U (W/m^2·K)!换热面积 A (m^2)!热物流 T_hot_in (K), T_hot_out (K), F_hot (kmol/h)!冷物流 T_cold_in (K), T_cold_out (K), F_cold (kmol/h)!模型输入!U - 传热系数!A - 换热面积! 阅读详情

相关推荐

backbone-demo:非常简单的基于 BackboneJS 应用演示

骨干演示 Backbone-demo 是一个简单的 JS 应用程序,用于向您展示 Backbone 模型、集合和视图的基础知识。 资源 Backbone.js: [ ] Underscore.js: [ ] jQuery:[ ] 小胡子:[ ] JSON 解析器:[ ] 用于文档的 JSDoc 工具包:[ ] JSLint 你可以在resources/jslintrc下找到一个 JSLint 配置文件,TextMate 插件在 [ ]

全面解析JavaScript的Backbone.js框架中的Router路由

Backbone 中的 Router 充当路由的作用,控制 URL 的走向,当在 URL 中使用 # 标签时生效。 定义 Router 至少需要一个 Router 和一个函数来映射特定的 URL,而且我们需要记住,在 Backbone 中,# 标签后的任意字符都会被 Router 接收并解释。 下面我们来定义一个 Router: [removed] var AppRouter = Backbone.Router.extend({ routes: { "*actions": "defaultRoute" // 匹配 http://example.com/#anything-here

Unreal Engine开发:高级渲染技术-1.高级渲染基础.docxUnreal Engine开发:高级渲染技术-10.高级粒子系统.docxUnreal Engine开发:高级渲染技术-11

Unreal Engine开发:高级渲染技术_1.高级渲染基础.docxUnreal Engine开发:高级渲染技术_10.高级粒子系统.docxUnreal Engine开发:高级渲染技术_11.地形与景观渲染.docxUnreal Engine开发:高级渲染技术_12.水体模拟与渲染.docxUnreal Engine开发:高级渲染技术_13.植被渲染技术.docxUnreal Engine开发:高级渲染技术_14.高级动画与骨骼系统.docxUnreal Engine开发:高级渲染技术_15.实时渲染优化技术.docxUnreal Engine开发:高级渲染技术_16.虚拟现实与增强现实渲染.docxUnreal Engine开发:高级渲染技术_17.多线程与并行渲染.docxUnreal Engine开发:高级渲染技术_18.云渲染与分布式渲染.docxUnreal Engine开发:高级渲染技术_19.渲染管线与架构设计.docxUnreal Engine开发:高级渲染技术_2.光照与阴影技术.docxUnreal Engine开发:高级渲染技术_20

BackboneJs入门学习[08]—Router路由初探

前端修罗场提供全网最专业的前端优质文章与社区服务,为应届生,初中级前端工程师提供全面、优质的面试服务、技能提升、职场解惑服务!内容包含:前端面试辅导,前端面试题,前端交流,前端答疑,前端基础知识,Javascript,CSS,React,Vue,小程序,前端简历,职业交流...

前端进阶之路 | 中大厂、外企、国企内推 | 面试培训 | 简历修改 1258

实例学习Backbone.js(一)

前面有两篇文章介绍了Backbone的model、collection和view,那么接下来我想用一个完整的Demo来记录我学习的过程, 单页操作,实现数据的增删改,后台使用json做数据库,通过restful模式接口实现增删改操作 backbone的ajax发送的常用请求包括create、put、read、delete对应http的post、update、get、delete 接...

deluo7944的博客 260

BackboneJs入门学习[09]—Router路由实践

在上一篇中,我们介绍了Router,但是并没有讲解Router是如何传递参数的。是的, Router是如何匹配所给出的URL中的内容,并将对应位置的内容作为参数传递的呢,这篇中我们继续。 1. Router如何映射先来看一个示例:var AppRouter=Backbone.Router.extend({ //routers是散列映射属性,将状态与活动关联起来,添加路由路径,要求重写父类的ro......

前端进阶之路 | 中大厂、外企、国企内推 | 面试培训 | 简历修改 1447

BackBone.jsRouter

首先我们先看下面几个路径: http://localhost:2746/Home/Home#help http://localhost:2746/Home/Home#single/test1 http://localhost:2746/Home/Home#multip/test1/test2 某些人可能会认为是用来定位锚点的,但是在BackBone.js的路由中这些都是一个事件,并且还带有...

zccst的专栏 245

backbone测试代码

一、入门测试 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head&g...

weixin_30856965的博客 124

backbone中的Router实例

关于这个router的使用,我现在依然是心存疑惑的。每点击一次这样的链接 &lt;a href="#action"&gt;action&lt;/a&gt; 会触发一个事件,但是url也会改变,这样刷性的话,岂不是会自动触发事件。或者这个东西只是用在单个页面的网站上,或者移动设备网站上,或者是我还不会用。 大概解释下RouterBackbone中的router,见名知意,router有路由的...

liangdvi的博客 174

Backbone中的router

关于这个router的使用,我现在依然是心存疑惑的。每点击一次这样的链接 action 会触发一个事件,但是url也会改变,这样刷性的话,岂不是会自动触发事件。或者这个东西只是用在单个页面的网站上,或者移动设备网站上,或者是我还不会用。 大概解释下RouterBackbone中的router,见名知意,router有路由的意思,显然这里是要控制url的。 Backbone.Router会把你

dftwilson的专栏 496

backbone.Router History源码笔记

Backbone.History和Backbone.Router history和router都是控制路由的,做一个单页应用,要控制前进后退,就可以用到他们了。 History类用于监听URL的变化,和触发Action方法,他可以添加对url的监听, Router类用于定义和解析路由规则,并将URL映射到Actionrouter和history一些个人的注解 ...

apr40151的博客 208

js replace url替换ip_Backbone.js教程四:Backbonejs中的Router实践

阅读本文约需要5分钟大家好,我是你们的导师,我每天都会大家分享一些干货内容(当然了,周末也要允许老师休息一下哈)。上次给大家分享了Backbone.js教程,今天继续分享Router实战。上一章介绍了Model和Collection,基本上属于程序中静态的数据部分。这一节介绍Backbone中的router,属于动态的部分,见名知意,router——路由的意思,显然是能够控制url指向哪...

weixin_32578799的博客 359

Backbone.Router.extend 路由

例子一: 1 <!DOCTYPE HTML> 2 <html lang="en-US"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>backbone</title> 6 <script src="app/jquery...

anzheng6118的博客 268

Backbone写的todolist

使用到Backbone.View、Backbone.Model、Backbone.Collection、Backbone.history和Backbone.Router相关的知识点。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta

草木红的博客 213

backbone.js 初探

  什么是backbone backbone不是脊椎骨,而是帮助开发重量级的javascript应用的框架。 主要提供了3个东西:1、models(模型) 2、collections(集合) 3、views(视图) backbone.js文件本身很小,压缩后只有5.3KB,作为一个框架级别的核心JS文件,这个数字很可怕。 除此之外,这个JS还必须依赖于另一个JS文件:underscore...

iteye_9685的博客 406

从零开始学backbone.js(1)

我学javascript时间不长,jquery都只是看过,基本没用过,现在开始学backbone.js,基本可以说是从零开始。 找到backbone.js的例子,却看不懂,不知如何下手。 从backbone.js的文档入手可能不错,有兴趣的同学和我一起来学习吧。 第一个例子: hello,html document.write("Hello javascript!"

mahongquan的专栏 1082

Backbone.js 简易入门教程

因为最近的工作中使用到了backbone.js框架,所以在网上找了些资料,但是关于这个框架的中文资料实在是太少了,没有办法,只好自己翻译了壹篇简单的入门教材。如果翻译得不好,请大家口下留情。另外,大家也可以签出 Agility.js 的代码,它也是壹个用于替代Backbone.js的壹个简单框架。 这是壹个简单的 Backbone.js 教程,由不言自明的"Hello World"到日益

LYBWWP 1876

[转]Backbone.js简单入门范例

本文转自:http://dmyz.org/archives/598 11年刚开始用前端MVC框架时写过一篇文章,当时Knockout和Backbone都在用,但之后的项目全是在用Backbone,主要因为它简单、灵活,无论是富JS应用还是企业网站都用得上。写这篇文章的动机,是最近跟做在线教育的朋友聊,谈到比较好的中文入门教程不多,于是想针对自己用得最多的框架写一篇,说明如下: 1. 结构上...

weixin_34032827的博客 436

backbone.js 路由 模版 使用示例

view/120     list 第一页     login     不存在的页     容器1         容器2             (function ($) {             _.templateSettings = {                 // JavaScript可执行代码的界定符                 eva

felixfeng的专栏 2364
上一篇: 4、backbone的collection实例
下一篇: 6、backbone中的view实例
the_fire
博客等级 码龄18年 662粉丝 257原创
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值