path-to-regexp Find regular expression matching the route












0















I am adding dynamic child components while the page loads. Adding child routes in OnCreated of parent does not make the page work when we refresh the page.



Hence, I am parsing the page templates (as I know them when the page loads).



I am now looking for a way to know the route which matches the href. Vue-js uses path-to-regexp and my question is very simple.



I want to know the matching component



const router = new VueRouter({
routes: [
// dynamic segments start with a colon
{ path: '/user/:id', component: User },
{ path: '/foo/bar', component: FooBar },

]
})

// Reverse of this
var matchingComponent = howDoIDothis(/foo/bar) // this should give me the matching


I need this so that I can remove from the path and then add the child component to the parent dynamically.










share|improve this question



























    0















    I am adding dynamic child components while the page loads. Adding child routes in OnCreated of parent does not make the page work when we refresh the page.



    Hence, I am parsing the page templates (as I know them when the page loads).



    I am now looking for a way to know the route which matches the href. Vue-js uses path-to-regexp and my question is very simple.



    I want to know the matching component



    const router = new VueRouter({
    routes: [
    // dynamic segments start with a colon
    { path: '/user/:id', component: User },
    { path: '/foo/bar', component: FooBar },

    ]
    })

    // Reverse of this
    var matchingComponent = howDoIDothis(/foo/bar) // this should give me the matching


    I need this so that I can remove from the path and then add the child component to the parent dynamically.










    share|improve this question

























      0












      0








      0








      I am adding dynamic child components while the page loads. Adding child routes in OnCreated of parent does not make the page work when we refresh the page.



      Hence, I am parsing the page templates (as I know them when the page loads).



      I am now looking for a way to know the route which matches the href. Vue-js uses path-to-regexp and my question is very simple.



      I want to know the matching component



      const router = new VueRouter({
      routes: [
      // dynamic segments start with a colon
      { path: '/user/:id', component: User },
      { path: '/foo/bar', component: FooBar },

      ]
      })

      // Reverse of this
      var matchingComponent = howDoIDothis(/foo/bar) // this should give me the matching


      I need this so that I can remove from the path and then add the child component to the parent dynamically.










      share|improve this question














      I am adding dynamic child components while the page loads. Adding child routes in OnCreated of parent does not make the page work when we refresh the page.



      Hence, I am parsing the page templates (as I know them when the page loads).



      I am now looking for a way to know the route which matches the href. Vue-js uses path-to-regexp and my question is very simple.



      I want to know the matching component



      const router = new VueRouter({
      routes: [
      // dynamic segments start with a colon
      { path: '/user/:id', component: User },
      { path: '/foo/bar', component: FooBar },

      ]
      })

      // Reverse of this
      var matchingComponent = howDoIDothis(/foo/bar) // this should give me the matching


      I need this so that I can remove from the path and then add the child component to the parent dynamically.







      vue.js vue-router vuejs-directive vuejs-transition






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Jan 1 at 2:34









      cloudprecloudpre

      481723




      481723
























          1 Answer
          1






          active

          oldest

          votes


















          0














          You need to use Vue router's router.getMatchedComponents method. However, this method needs that your router is fully initialized with all the routes. Otherwise, there is no way. Vue-router doesn't expose underlying parsed Regular expressions against which you can compare your href.



          Also, what you are trying to do is not the most idiomatic way of doing things in Single Page Applications. A good practice is to declare all your routes upfront in some JS file using which you should initialize your router. Of course, you will want to protect certain routes for which you should use Route guards.



          Finally, when you have all your routes declared upfront means you have all the components bundled upfront in one big JS file. To avoid this, wrap your component in async wrappers and bundler like Webpack would be smart enough to split the bundle into multiple smaller files.






          share|improve this answer
























          • The issue is that we cannot add the dynamic child route on the fly in vue-js. If we create it dynamically, it will not work on page refresh. Hence, we need to some our parsing and is specific to our functionality.

            – cloudpre
            Jan 2 at 5:28











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53992705%2fpath-to-regexp-find-regular-expression-matching-the-route%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          You need to use Vue router's router.getMatchedComponents method. However, this method needs that your router is fully initialized with all the routes. Otherwise, there is no way. Vue-router doesn't expose underlying parsed Regular expressions against which you can compare your href.



          Also, what you are trying to do is not the most idiomatic way of doing things in Single Page Applications. A good practice is to declare all your routes upfront in some JS file using which you should initialize your router. Of course, you will want to protect certain routes for which you should use Route guards.



          Finally, when you have all your routes declared upfront means you have all the components bundled upfront in one big JS file. To avoid this, wrap your component in async wrappers and bundler like Webpack would be smart enough to split the bundle into multiple smaller files.






          share|improve this answer
























          • The issue is that we cannot add the dynamic child route on the fly in vue-js. If we create it dynamically, it will not work on page refresh. Hence, we need to some our parsing and is specific to our functionality.

            – cloudpre
            Jan 2 at 5:28
















          0














          You need to use Vue router's router.getMatchedComponents method. However, this method needs that your router is fully initialized with all the routes. Otherwise, there is no way. Vue-router doesn't expose underlying parsed Regular expressions against which you can compare your href.



          Also, what you are trying to do is not the most idiomatic way of doing things in Single Page Applications. A good practice is to declare all your routes upfront in some JS file using which you should initialize your router. Of course, you will want to protect certain routes for which you should use Route guards.



          Finally, when you have all your routes declared upfront means you have all the components bundled upfront in one big JS file. To avoid this, wrap your component in async wrappers and bundler like Webpack would be smart enough to split the bundle into multiple smaller files.






          share|improve this answer
























          • The issue is that we cannot add the dynamic child route on the fly in vue-js. If we create it dynamically, it will not work on page refresh. Hence, we need to some our parsing and is specific to our functionality.

            – cloudpre
            Jan 2 at 5:28














          0












          0








          0







          You need to use Vue router's router.getMatchedComponents method. However, this method needs that your router is fully initialized with all the routes. Otherwise, there is no way. Vue-router doesn't expose underlying parsed Regular expressions against which you can compare your href.



          Also, what you are trying to do is not the most idiomatic way of doing things in Single Page Applications. A good practice is to declare all your routes upfront in some JS file using which you should initialize your router. Of course, you will want to protect certain routes for which you should use Route guards.



          Finally, when you have all your routes declared upfront means you have all the components bundled upfront in one big JS file. To avoid this, wrap your component in async wrappers and bundler like Webpack would be smart enough to split the bundle into multiple smaller files.






          share|improve this answer













          You need to use Vue router's router.getMatchedComponents method. However, this method needs that your router is fully initialized with all the routes. Otherwise, there is no way. Vue-router doesn't expose underlying parsed Regular expressions against which you can compare your href.



          Also, what you are trying to do is not the most idiomatic way of doing things in Single Page Applications. A good practice is to declare all your routes upfront in some JS file using which you should initialize your router. Of course, you will want to protect certain routes for which you should use Route guards.



          Finally, when you have all your routes declared upfront means you have all the components bundled upfront in one big JS file. To avoid this, wrap your component in async wrappers and bundler like Webpack would be smart enough to split the bundle into multiple smaller files.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Jan 1 at 8:51









          Harshal PatilHarshal Patil

          3,00611244




          3,00611244













          • The issue is that we cannot add the dynamic child route on the fly in vue-js. If we create it dynamically, it will not work on page refresh. Hence, we need to some our parsing and is specific to our functionality.

            – cloudpre
            Jan 2 at 5:28



















          • The issue is that we cannot add the dynamic child route on the fly in vue-js. If we create it dynamically, it will not work on page refresh. Hence, we need to some our parsing and is specific to our functionality.

            – cloudpre
            Jan 2 at 5:28

















          The issue is that we cannot add the dynamic child route on the fly in vue-js. If we create it dynamically, it will not work on page refresh. Hence, we need to some our parsing and is specific to our functionality.

          – cloudpre
          Jan 2 at 5:28





          The issue is that we cannot add the dynamic child route on the fly in vue-js. If we create it dynamically, it will not work on page refresh. Hence, we need to some our parsing and is specific to our functionality.

          – cloudpre
          Jan 2 at 5:28




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53992705%2fpath-to-regexp-find-regular-expression-matching-the-route%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          MongoDB - Not Authorized To Execute Command

          Npm cannot find a required file even through it is in the searched directory

          in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith