最佳Vue開發實戰系列(一):設計一個回味無窮的高擴充套件性路由,比義大利麵香【詳解+實踐貼上程式碼】
在接觸Vue的過程中,總能令我驚喜,卻也因不夠老練而帶來了讓人耗時的bug;但都一一過五關,斬六將,勝在好用且好玩。
所以我想跟你一起拆Vue這堵牆,再把它重新搭建的更好!
這也是我準備寫 最佳Vue開發實戰系列 的理由。
還等什麼? 一鍵三連碼起!
一、什麼是高擴充套件性路由?
與其問什麼是高擴充套件性路由,其實更應該問的是為什麼要高擴充套件性路由?
其實很簡單!
當你做一個專案並且不斷迭代想走得更遠,那麼就只有兩個字 講究!
什麼樣的講究呢?
就是能根據頁面展示結構進行抽象,結合業務模組進行的合理層級劃分。
總結起來就是,要有區分、要規劃,要分門別類且規範。
不會別人看你程式碼或者體驗你的網站就只留下一道菜名。
義大利麵。
好了,言歸正傳。
先品效果圖,一個簡約的實踐。
(如果你是想實踐專案,在這個基礎上開始也是可以的)
不過且慢,這裡還是要提醒一下可能比較迷糊的小夥伴,記得安裝vue-router,否則是玩不起來的,因為vue的路由基於vue-router,所以還沒安裝的小夥伴,網上有很多詳細的安裝教程,這裡就不再贅述啦。
二、效果圖
訪問 /user 路由
訪問 /user/login 路由(這裡訪問根/路由會直接訪問 /user/login )
訪問 /user/Register 路由
2.2特別福利
加入了好看有意思的載入進度條(類似youtube、csdn網站也有的進度條外掛),可以改自己喜歡的顏色。
記得安裝nprogress,還有匯入nprogress.css哦(網上有很多詳細的安裝教程,這裡就不再贅述啦)
訪問不存在的路由 會有404提醒
三、關鍵程式碼
router.js
router.js父級user路由這裡用簡潔的方式render函式,就不用render再寫一個單檔案路由出口。
{render: h=>h("router-view")}
import()程式碼裡新增註釋webpackChunkName告訴webpack打包後的chunk的名稱(註釋裡的內容不能省掉),打包以後的name就是user。
非同步載入後會被webpack分包,也就是合併包的作用。
import( /* webpackChunkName: "user" */ '../views/User/Login')
四、貼上完整程式碼
App.vue
<template>
<div>
<!-- 設定路由導航 -->
<router-link to="/user/login">登陸</router-link>
<router-link to="/user/Register">註冊</router-link>
<router-view></router-view>
</div>
</template>
<style>
#nprogress .bar {
background: rgb(77, 140, 244) !important;
}
</style>
main.js
import Vue from 'vue';
import App from './App.vue';
import router from './router/router.js';
Vue.config.productionTip = false;
new Vue({
router,
render: h => h(App),
}).$mount('#app')
Login.vue
<template>
<div>
<h2>登入頁</h2>
</div>
</template>
Register.vue
<template>
<div>
<h2>註冊頁</h2>
</div>
</template>
404.vue
<template>
<div>┗|`O′|┛ 嗷~~ 404</div>
</template>
router.js
import Vue from 'vue';
import Router from 'vue-router'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import NotFound from '../views/404';
Vue.use(Router);
const router = new Router({
mode: 'history',
routes: [
{path:'/',redirect: '/user/login'},
{
path: '/user',
component: {render: h=>h("router-view")},
children: [{
path: 'login',
name: 'index',
component: () =>
import( /* webpackChunkName: "user" */ '../views/User/Login')
},
{
path: 'register',
name: 'news',
component: () =>
import( /* webpackChunkName: "user" */ '../views/User/Register')
},
{
path: '*',
name: '404',
component:NotFound
}
]
}]
})
router.beforeEach((to,form,next)=>{
NProgress.start();
next();
});
router.afterEach(() => {
NProgress.done();
});
export default router
五、最後
最後的最後,為了更好的閱讀體驗,我把想說的話都放在了下面,嘿嘿。
我是一顆剽悍的種子 把我會的,認真的分享 是我寫部落格一直不變的信條。
如果你能看到這篇博文,說明我們們還是很有緣的;希望能帶給你一些許幫助,創作的不易, 把我文章的知識帶走,你的三連留下,點贊,評論,關注,是我最大的動力。
相關文章
- 實踐,製作一個高擴充套件、視覺化低程式碼前端,詳實、完整套件視覺化前端
- 釋出一個自己的composer擴充套件[實戰系列]套件
- JVM自定義類載入器在程式碼擴充套件性的實踐JVM套件
- Chrome 擴充套件的開發實戰Chrome套件
- vue - Vue路由(擴充套件)Vue路由套件
- PHP擴充套件開發就是一個自己的PHP擴充套件PHP套件
- 實現近乎無限可擴充套件性的7種設計模式套件設計模式
- Kotlin實戰:用實戰程式碼更深入地理解預定義擴充套件函式Kotlin套件函式
- MOSN 多協議擴充套件開發實踐協議套件
- VSCode WebView外掛(擴充套件)開發實戰VSCodeWebView套件
- 比原鏈設計思考: 擴充套件性UTXO模型套件模型
- JWT 擴充套件具體實現詳解JWT套件
- PHP擴充套件開發教程2 – 編寫第一個擴充套件 hello worldPHP套件
- SOFABoot 擴充套件點初體驗 | SOFALab 實踐系列boot套件
- MySQL 高擴充套件架構構建百萬線上系統實踐MySql套件架構
- 設計、開發一個 Flutter Plugin 的實踐心得FlutterPlugin
- RabbitMQ實戰:擴充套件介紹與系列總結MQ套件
- Chrome DevTools Inspector 擴充套件實踐Chromedev套件
- [VS Code擴充套件]寫一個程式碼片段管理外掛(二):功能實現套件
- 實戰 | 執行緒池的幾種自定義擴充套件執行緒套件
- 一個開發中的 Laravel 關聯模型擴充套件Laravel模型套件
- 基於“大中臺,小前臺”架構的高可用電商交易中臺最佳實踐之四—高擴充套件性技術要點設計架構套件
- spring4.1.8擴充套件實戰之一:自定義環境變數驗證Spring套件變數
- php利用pcntl擴充套件實現高併發PHP套件
- lastTab—Chrome 擴充開發實踐ASTChrome
- PHP原始碼系列之擴充套件的原理與開發PHP原始碼套件
- Dubbo系列之 (一)SPI擴充套件套件
- chrome擴充套件程式開發Chrome套件
- Java程式設計師的八個最佳實踐Java程式設計師
- 淺談 vue-cli 擴充套件性和外掛設計Vue套件
- 開發三年,《山海旅人》向玩家遞出了一杯回味無窮的清茶
- Flutter完整開發實戰詳解(十六、詳解自定義佈局實戰)Flutter
- PHP FFI詳解 - 一種全新的PHP擴充套件方式PHP套件
- LARAVEL的SAAS實現擴充套件(tenancyforlaravel)文件開始翻譯,以及一年程式設計生涯總結Laravel套件NaN程式設計
- django實現自定義manage命令的擴充套件Django套件
- Android 面試之實戰擴充套件Android面試套件
- Redis 實戰 —— 13. 擴充套件 RedisRedis套件
- Flink SQL 在快手的擴充套件和實踐SQL套件