VueJs + VueRouter + рдореЛрдбрд▓ред рдПрдХ рдФрд░ рдмрд╛рдЗрдХ

рд╢реБрдн рджреЛрдкрд╣рд░ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реВрдБрдЧрд╛ рдЬреЛ рдЖрдкрдХреЛ рдкрддрд╛ рдмрджрд▓рддреЗ рд╕рдордп рд╣рдорд╛рд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдореЙрдбрд▓ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рд▓рд┐рдХрд╛рдирд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣реБрдмреЗ рдкрд░ рдХрдИ рдЕрдиреНрдп рд▓реЗрдЦ рд╣реИрдВ рдЬреЛ рд╡реАрдпреВрдЬреЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ ) рдореЗрдВ рдореЛрдбрд▓ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИрдВред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреА рдЕрдкрдиреА рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

  • рдмрдВрдж рд╕рд╛рдЗрдЯ рдкрд░ рд╡рд░реНрдгрд┐рдд рдШрдЯрдХреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдПрдХ рдЕрд▓рдЧ рдЪрд░ рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдмрд╛рдВрдзрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ;
  • рджреВрд╕рд░рд╛ рд▓реЗрдЦ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рд╕рдорд╛рдзрд╛рди рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рд╕рдордп рдмрд┐рддрд╛рдиреЗ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЗрди рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ + рдЕрддрд┐рд░рд┐рдХреНрдд, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛рдПрдВред рдФрд░ рдореИрдВ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реВрдВ: рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ рдЙрддрдирд╛ рд╣реА рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдлрд┐рд░, рдореБрдЭреЗ рд╕рдм рдХреБрдЫ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд╣рдиреЗ рдпрд╛ рдиреЛрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИ, рддреЛ рдореИрдВ рд░рдЪрдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реВрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣рдо рдЙрди рдЙрдкрдХрд░рдгреЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╛рдирдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (Vue, VueRouter, рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдореЛрдбрд▓)ред рддреЛ, рдмрд┐рдВрджреБ рдХреЗ рдХрд░реАрдм ...

рдРрд╕реЗ рд▓реЛрдЧ рд╣реЛрдВрдЧреЗ рдЬреЛ рдХрд╣рддреЗ рд╣реИрдВ: "рдПрдирдкреАрдПрдо рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдореЛрдбрд▓ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдкреВрд░реЗ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдпрд╛ рдЧреБрдбрд╝ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдПред" рдХрд╛рдорд░реЗрдб, рдХреЛрдИ рднреА рдЖрдкрдХреЛ рдЗрд╕ рдкреВрд░реА рдЪреАрдЬрд╝ рдХреЛ рдЕрдкрдиреА рдЬрд╝рд░реВрд░рддреЛрдВ рдФрд░ рдФрдЬрд╝рд╛рд░реЛрдВ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХ рд░рд╣рд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдЙрдкрдХрд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред

рддреБрд░рдВрдд рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк ред

рдПрдЪрдЯреАрдПрдордПрд▓
<div id="app"> <nav> <router-link :to="{ name: 'modal' }" exact>Open Modal</router-link> </nav> <router-view></router-view> </div> 


рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ
 Vue.use(VueRouter) const Modal = { template: `<div class="modal fade" tabindex="-1" role="dialog" ref="modal"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">Modal title</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">├Ч</span> </button> </div> <div class="modal-body"> <p>Modal body text goes here.</p> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> </div> </div> </div> </div> mounted: function(){ console.log('mounted') var context = this; $(this.$refs.modal).modal('show') $(this.$refs.modal).on('hidden.bs.modal', function(){ context.$router.go(-1); }) } } const routes = [ { path: '/modal', name: 'modal', component: Modal }, ] const router = new VueRouter({ routes, }) // New VueJS instance var app = new Vue({ // CSS selector of the root DOM element el: '#app', // Inject the router into the app router, }) 


рджрд░рдЕрд╕рд▓, рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред

  1. рд╣рдорд╛рд░реЗ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╕рдордп, рд╣рдорд╛рд░рд╛ рдореЛрдбрд▓ рдШрдЯрдХ рдЖрд░реЛрд╣рд┐рдд рд╣реЛрддрд╛ рд╣реИред
  2. рдЗрд╕реЗ рдмрдврд╝рддреЗ рд╕рдордп, рд╣рдо рдЕрдкрдиреА рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ ред $ Refs рд╣рдо рдЗрд╕рдХреЗ рд╕рдорд╛рдкрди рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддреЗ рд╣реИрдВред
  3. рдЬрдм рдпрд╣ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдПрдХ рдХрджрдо рдкреАрдЫреЗ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдорд╛рд░рд╛ рдШрдЯрдХ рдЕрдирдорд╛рдЙрдВрдЯ рд╣реЛред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдВрд░рдЪрдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрд▓рдЧ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХрдИ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ:

  • рдЖрд╕рд╛рди рдЕрдиреБрдХреВрд▓рди;
  • рддреГрддреАрдп-рдкрдХреНрд╖ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рд╕рд░рд▓ рд╣реЛ;

Source: https://habr.com/ru/post/hi462429/


All Articles