


Analyse complète du routage du routeur dans le framework Backbone.js de JavaScript
Le routeur de Backbone agit comme une route et contrôle la direction de l'URL. Il prend effet lorsque la balise # est utilisée dans l'URL.
Définir un routeur nécessite au moins un routeur et une fonction pour mapper une URL spécifique, et nous devons nous rappeler que dans Backbone, tous les caractères après la balise # seront reçus et interprétés par le routeur.
Définissons un routeur :
<script> var AppRouter = Backbone.Router.extend({ routes: { "*actions": "defaultRoute" // 匹配 http://example.com/#anything-here } }); // 实例化 Router var app_router = new AppRouter; app_router.on('route:defaultRoute', function(actions) { alert(actions); }) // 打开 Backbone 的历史记录 Backbone.history.start(); </script>
Maintenant, nous avons défini un routeur, mais pour le moment, le routeur ne correspond pas à une URL spécifique. Ensuite, nous commencerons à expliquer en détail comment fonctionne le routeur. fonctionne.
Routage dynamique
Backbone vous permet de définir des routeurs avec des paramètres spécifiques. Par exemple, vous souhaiterez peut-être recevoir une publication avec un identifiant spécifique, comme cette URL : "http://example.com/#/posts/12". Une fois le routeur activé, vous pouvez obtenir une publication avec un identifiant. du 12. poste. Ensuite, définissons ce routeur :
<script> var AppRouter = Backbone.Router.extend({ routes: { "posts/:id": "getPost", "*actions": "defaultRoute" //Backbone 会根据顺序匹配路由 } }); // 实例化 Router var app_router = new AppRouter; app_router.on('route:getPost', function (id) { // 注意,参数通过这里进行传递 alert( "Get post number " + id ); }); app_router.on('route:defaultRoute', function (actions) { alert( actions ); }); // 打开 Backbone 的历史记录 Backbone.history.start(); </script>
Règles de correspondance
Backbone utilise deux formes de variables pour définir les règles de correspondance du routeur. Le premier est :, qui correspond à n'importe quel paramètre entre les barres obliques dans l'URL, et l'autre est *, qui correspond à tout ce qui se trouve après les barres obliques. Notez que puisque la deuxième forme est plus floue que la première, elle a la priorité de correspondance la plus faible.
Les résultats de toute forme de correspondance seront transmis à la fonction concernée sous forme de paramètres. La première règle peut renvoyer un ou plusieurs paramètres, et la seconde règle renverra l'intégralité du résultat de correspondance sous la forme d'un seul paramètre.
Ensuite, nous utilisons des exemples pour illustrer :
routes:{ "posts/:id": "getPost", // <a href="http://example.com/#/posts/121">Example</a> "download/*path": "downloadFile", // <a href="http://example.com/#/download/user/images/hey.gif">Download</a> ":route/:action": "loadView", // <a href="http://example.com/#/dashboard/graph">Load Route/Action View</a> }, app_router.on('route:getPost', function( id ){ alert(id); // 匹配后,传递过来的参数为 12 }); app_router.on('route:downloadFile', function( path ){ alert(path); // 匹配后,整个匹配结果作为一个参数返回,路径为 user/images/hey.gif }); app_router.on('route:loadView', function( route, action ){ alert(route + "_" + action); // 匹配后,传递过来两个参数,此时会弹出 dashboard_graph });
Vous entendez souvent le mot « routeur », mais il fait souvent référence à un périphérique réseau, qui est une connexion réseau, une navigation de données et un hub pour transmission. La fonction « routeur » dans Backbone est similaire à celle-ci. Comme vous pouvez le voir dans l'exemple ci-dessus, elle peut naviguer dans différentes ancres d'URL vers les méthodes d'action correspondantes.
(De nombreux frameworks Web côté serveur fournissent également un tel mécanisme, mais Backbone.Router se concentre davantage sur la navigation des applications frontales d'une seule page.)
La navigation de routage de Backbone est composée de Backbone.Router et Backbone.History Deux classes fonctionnent ensemble :
La classe Router est utilisée pour définir et analyser les règles de routage et mapper les URL aux actions.
La classe History est utilisée pour surveiller les modifications d'URL et déclencher les méthodes d'action.
Nous n'instancions généralement pas directement un historique, car lorsque nous créons pour la première fois une instance de routeur, nous créerons automatiquement un objet singleton History. Vous pouvez accéder à cet objet via Backbone.history.
Pour utiliser la fonction de routage, nous devons d'abord définir une classe Router pour déclarer les règles d'URL et les actions qui doivent être surveillées. Dans l'exemple qui vient de se présenter, nous utilisons l'attribut routes pour définir la liste des URL. qui doivent être surveillés, où Key représente la règle d'URL et Value représente la méthode d'action exécutée lorsque l'URL est dans la règle.
Règles de hachage
Les règles d'URL représentent le fragment de hachage (ancre) dans l'URL actuelle. En plus de spécifier des chaînes générales dans les règles, nous devons également prêter attention à deux règles dynamiques spéciales : <🎜 >. Une chaîne séparée par / (barre oblique) dans la règle sera convertie en une expression ([^/] ) à l'intérieur de la classe Router, indiquant plusieurs caractères commençant par / (barre oblique) Si dans ce paragraphe Si : (deux-points) est défini dans). la règle, cela signifie que cette chaîne dans l'URL sera passée à l'action en paramètre.
Par exemple, nous définissons la règle topic/:id. Lorsque le point d'ancrage est #topic/1023, 1023 sera transmis à l'action comme paramètre id. Le nom du paramètre (:id) dans la règle sera généralement. identique au paramètre formel de la méthode Action. Les noms sont les mêmes. Bien que Router n'ait pas une telle restriction, il est plus facile à comprendre en utilisant les mêmes noms de paramètres.
Le * (astérisque) dans la règle sera converti en une expression (.*?) à l'intérieur du routeur, qui représente zéro ou plusieurs caractères arbitraires. Par rapport à la règle : (deux-points), * (astérisque) ne fait pas /. (barre oblique) limites séparées, tout comme la règle *error que nous avons définie dans l'exemple ci-dessus.
La règle * (astérisque) dans Router utilise le mode non gourmand après avoir été convertie en expression régulière, vous pouvez donc utiliser une règle combinée telle que : *type/:id, qui correspond à #hot/1023, et Hot et 1023 sera transmis à la méthode Action en tant que paramètres.
Après avoir défini la classe Router, nous devons instancier un objet Router et appeler la méthode start() de l'objet Backbone.history, qui commencera à surveiller l'URL. À l'intérieur de l'objet History, les modifications du hachage (ancre) dans l'URL seront surveillées par défaut via l'événement onhashchange. Pour les navigateurs qui ne prennent pas en charge l'événement onhashchange (tels que IE6), History écoutera via le battement de cœur setInterval.
Backbone.History prend également en charge les URL pushState. pushState est une nouvelle fonctionnalité fournie par HTML5. Elle peut gérer l'URL du navigateur actuel (au lieu de simplement changer le point d'ancrage) sans changer l'ancre. point. Cela entraînera l'actualisation de la page, ce qui donnera l'impression que l'application d'une seule page est un processus complet.
Pour utiliser la fonctionnalité pushState, vous devez d'abord comprendre certaines des méthodes et événements fournis par HTML5 pour cette fonctionnalité (ces méthodes sont définies dans l'objet window.history) :
1.pushState():该方法可以将指定的URL添加一个新的history实体到浏览器历史里
2.replaceState():该方法可以将当前的history实体替换为指定的URL
调用pushState()和replaceState()方法,仅仅是替换当前页面的URL,而并不会真正转到这个URL地址(当使用后退或前进按钮时,也不会跳转到该URL),我们可以通过onpopstate事件来监听这两个方法引起的URL变化。
路由相关方法
1.route()方法
在设定好路由规则之后,如果需要动态调整,可以调用Router.route()方法来动态添加路由规则及Action方法,例如:
router.route('topic/:pageno/:pagesize', 'page', function(pageno, pagesize){ // todo }); 我们调用route()方法时,给定的规则不仅仅可以是字符串,也可以是一个正则表达式: router.route(/^topic/(.*?)/(.*?)$/, 'page', function(pageno, pagesize){ // todo });
2.navigate()方法
在前面的例子中,URL规则都是由我们手动输入触发的,在实际应用中,有时可能需要手动进行跳转、导航,这时可以调用
Router.navigate()方法进行控制,例如: router.navigate('topic/1000', { trigger: true });
这段代码将URL更改为http://localhost/index.html#topic/1000,并触发了renderDetail方法。需要注意的是,我们在第二个参数传入了trigger配置,该配置用于表示更改URL的同时是否触发相应的Action方法。
3.stop()方法
还记得我们是通过Backbone.history.start()方法来启动路由监听的,你也可以随时调用Backbone.history.stop()方法来停止监听,例如:
router.route('topic/:pageno/:pagesize', 'page', function(pageno, pagesize) { Backbone.history.stop(); });
运行这段代码,并访问URL:http://localhost/index.html#topic/5/20,你会发现这个Action被执行之后,监听已经不再生效了。
更多全面解析JavaScript的Backbone.js框架中的Router路由相关文章请关注PHP中文网!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Explication détaillée de la méthode de remplacement de la chaîne JavaScript et de la FAQ Cet article explorera deux façons de remplacer les caractères de chaîne dans JavaScript: le code JavaScript interne et le HTML interne pour les pages Web. Remplacer la chaîne dans le code JavaScript Le moyen le plus direct consiste à utiliser la méthode Remplace (): str = str.replace ("trouver", "remplacer"); Cette méthode remplace uniquement la première correspondance. Pour remplacer toutes les correspondances, utilisez une expression régulière et ajoutez le drapeau global G: str = str.replace (/ fi

Vous voici donc, prêt à tout savoir sur cette chose appelée Ajax. Mais qu'est-ce que c'est exactement? Le terme Ajax fait référence à un regroupement lâche de technologies utilisées pour créer un contenu Web interactif dynamique. Le terme Ajax, inventé à l'origine par Jesse J

L'article discute de la création, de la publication et du maintien des bibliothèques JavaScript, en se concentrant sur la planification, le développement, les tests, la documentation et les stratégies de promotion.

L'article traite des stratégies pour optimiser les performances JavaScript dans les navigateurs, en nous concentrant sur la réduction du temps d'exécution et la minimisation de l'impact sur la vitesse de chargement de la page.

L'article traite du débogage efficace de JavaScript à l'aide d'outils de développeur de navigateur, de se concentrer sur la définition des points d'arrêt, de l'utilisation de la console et d'analyser les performances.

Apportez des effets de film de matrice à votre page! Ceci est un plugin jQuery cool basé sur le célèbre film "The Matrix". Le plugin simule les effets de caractère vert classique dans le film, et sélectionnez simplement une image et le plugin le convertira en une image de style matrice remplie de caractères numériques. Venez et essayez, c'est très intéressant! Comment ça marche Le plugin charge l'image sur la toile et lit le pixel et les valeurs de couleur: data = ctx.getImagedata (x, y, settings.grainsize, settings.grainsize) .data Le plugin lit intelligemment la zone rectangulaire de l'image et utilise jQuery pour calculer la couleur moyenne de chaque zone. Ensuite, utilisez

Cet article vous guidera pour créer un carrousel d'image simple à l'aide de la bibliothèque JQuery. Nous utiliserons la bibliothèque BXSLider, qui est construite sur jQuery et offre de nombreuses options de configuration pour configurer le carrousel. De nos jours, Picture Carrousel est devenue une fonctionnalité incontournable sur le site Web - une image vaut mieux que mille mots! Après avoir décidé d'utiliser le carrousel d'image, la question suivante est de savoir comment la créer. Tout d'abord, vous devez collecter des images de haute qualité et haute résolution. Ensuite, vous devez créer un carrousel d'image en utilisant HTML et un code JavaScript. Il existe de nombreuses bibliothèques sur le Web qui peuvent vous aider à créer des carrousels de différentes manières. Nous utiliserons la bibliothèque BXSLider open source. La bibliothèque Bxslider prend en charge la conception réactive, de sorte que le carrousel construit avec cette bibliothèque peut être adapté à n'importe quel

Les ensembles de données sont extrêmement essentiels pour créer des modèles d'API et divers processus métier. C'est pourquoi l'importation et l'exportation de CSV sont une fonctionnalité souvent nécessaire. Dans ce tutoriel, vous apprendrez à télécharger et à importer un fichier CSV dans un
