vue2.0環境構築(routerルーティングを含む)

9664 ワード

今、この四海八荒はvueを使っていますね.年前に私の手元は新しく1つの运営のプラットフォームをして、スクリーンショットは以下のようにして、前后に分离して、半日の力を费やしてやっと环境を建てて、年后に工夫があって、わざわざ整理して、みんなが少し回り道を歩かないことを望みます!
一、環境の構築
公式の足場cliで一歩一歩流れて、私が整理した流れは以下の通りです.公式サイトの指導を参照してください.https://cn.vuejs.org/v2/guide/installation.html#NPM
1.npm install vue-cli webpack-g(vue足場とwebpackをグローバルにインストール)2.プロジェクトディレクトリvue init webpack my-project(初期化、入力ありなし)3に入ります.cd my-project 4. npm install(インストール項目依存、必ずnpmを使う、比較的遅い)5.npm install vue-router vue-resource--save-dev(vueルーティングモジュールvue-routerとネットワークリクエストモジュールvue-resourceをインストール)6.npm run dev(ローカル運転)7.npm run build(サーバbuildを生成)
二、ルート構成
前に環境を構築するときにrouterをインストールしたので、構成で直接呼び出せばいいので、公式指導とdemoを参考にしてください.https://router.vuejs.org/zh-cn/essentials/getting-started.html
コードに会社のインタフェースが多すぎるので、ルーティングコードの一部しか表示しません.framework.vueはルーティングのdomレイヤ、main.jsはルーティング構成層
1.framework.vue
 

 
2.main.js
 
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import VueRouter from 'vue-router'
// import createHello from './components/hello/hello.js'
import util from './service/util'
import loadingHourGlass from './components/loading_hourglass'
Vue.component('loadingHourGlass', loadingHourGlass)

// import cookieParser from 'cookie-parser'

// Vue.component('hello', hello);
// Vue.prototype.util = util;

Vue.use(VueRouter);
Vue.config.debug = true;

//const Foo = resolve => require(['./template/template1.vue'], resolve)
// const Bar = resolve => require(['./template/template2.vue'], resolve)
// const User = { template: '
User
' } // const Quux = { template: '
quux
' } // const logIn = { template: '
logIn
' } const page404 = { template: '
page404
' } const routes = [ { // path: '/logIn', component: resolve => require(['./template/login.vue'], resolve) }, { path: '/framework', component: resolve => require(['./template/framework.vue'], resolve), children:[ { path: '/home', component: resolve => require(['./template/home.vue'], resolve) }, { path:'/stat', component: resolve => require(['./template/stat/view.vue'], resolve), redirect: '/stat/bandWidth', children:[ { path: 'bandWidth', component: resolve => require(['./template/stat/band_width.vue'], resolve)} ] }, { path:'/monitor', component: resolve => require(['./template/monitor/view.vue'], resolve), redirect: '/monitor/pingInfo', children:[ { path: 'pingInfo', component: resolve => require(['./template/monitor/ping_info.vue'], resolve)} ] }, { path: '/conf/ats', component: resolve => require(['./template/conf/ats/view.vue'], resolve), redirect: '/conf/ats/info', children:[ { path: 'info', component: resolve => require(['./template/conf/ats/info.vue'], resolve) }, { path: 'grey', component: resolve => require(['./template/conf/ats/grey.vue'], resolve) }, { path: 'status', component: resolve => require(['./template/conf/ats/status.vue'], resolve) } ] }, { path: '/conf/returnOrig', component: resolve => require(['./template/conf/return_orig/view.vue'], resolve), redirect: '/conf/returnOrig/core', children:[ { path: 'fileCore', component: resolve => require(['./template/conf/return_orig/file_core.vue'], resolve) }, { path: 'core', component: resolve => require(['./template/conf/return_orig/core.vue'], resolve) }, { path: 'area', component: resolve => require(['./template/conf/return_orig/area.vue'], resolve) }, { path: 'province', component: resolve => require(['./template/conf/return_orig/province.vue'], resolve) }, { path: 'singlePoint', component: resolve => require(['./template/conf/return_orig/single_point.vue'], resolve) }, { path: 'idc', component: resolve => require(['./template/conf/return_orig/idc.vue'], resolve) }, { path: 'group', component: resolve => require(['./template/conf/return_orig/group.vue'], resolve) } ] }, { path: '/conf/domain', component: resolve => require(['./template/conf/domain/view.vue'], resolve), redirect: '/conf/domain/info', children:[ { path: 'info', component: resolve => require(['./template/conf/domain/info.vue'], resolve) } ] }, { path: '/dispatch/node', component: resolve => require(['./template/dispatch/node/view.vue'], resolve), redirect: '/dispatch/node/info', children:[ { path: 'info', component: resolve => require(['./template/dispatch/node/info.vue'], resolve) } ] }, { path: '/dispatch/lvs', component: resolve => require(['./template/dispatch/lvs/view.vue'], resolve), redirect: '/dispatch/lvs/info', children:[ { path: 'info', component: resolve => require(['./template/dispatch/lvs/info.vue'], resolve) } ] }, { path: '/tool', component: resolve => require(['./template/tool/task_refresh/view.vue'], resolve), redirect: '/tool/taskRefresh', children:[ { path: 'taskRefresh', component: resolve => require(['./template/tool/task_refresh/info.vue'], resolve) } ] }, { path: '/lemonTest', component: resolve => require(['./template/else/view.vue'], resolve), redirect: '/lemonTest/test1', children:[ { path: 'test1', component: resolve => require(['./template/else/test1.vue'], resolve) }, { path: 'test2', component: resolve => require(['./template/else/test2.vue'], resolve) }, { path: 'test3', component: resolve => require(['./template/else/test3.vue'], resolve) } ] } ] }, { // path: '/', redirect: '/home' }, { // path: '*', component: page404 }, ] const router = new VueRouter({ routes: routes, linkActiveClass: "v-link-active", // ( ) routes: routes }) router.beforeEach((to, from, next) => { var token = util.getCookie('token') if (token || to.path == '/logIn'){ console.log(' , ' + to.path) next() } else{ console.log('cookie token, ') router.push({path:'/logIn'}); } }) const app = new Vue({ router: router, render: h => h(App) }).$mount('#app')

三、ログイン検証
 
前後が分離されている以上、ログイン状態の検証は当然フロントエンドに置かれる.ここでは、ユーザがログインした後、サービス側からtokenがブラウザに生成され、フロントエンド側はルーティングジャンプのたびにtokenを取得し、存在する場合はログイン状態が存在する場合はnext()が継続し、そうでない場合は/logInページを指す.
四、この文章はまずルートをここに紹介して、後で私は構築の過程で踏んだ穴を整理します!