ゼロから、elementui横穴vue-テクノロジーで選択
5569 ワード
テクノロジースタック
本プロジェクトは、Vue+ElementUI+Axios+Vue-Router+Vuex
ElementUI編
1.なぜelementuiを選んだのかは大きな工場の裏書があります:核心開発は2、3人しかいませんが、少なくともいつメンテナンスしない心配はありません.おばさんを連れて を走りました. 2016年3月13日にElementがひっそりと誕生し、4年間の風雨洗礼を経て、私たちはお腹が空いた内部業務コンポーネントライブラリからVue生態の中で最も流行しているUIコンポーネントライブラリの一つに成長しました. 反復:Elementは48200 Githubスター、NPMダウンロード数95万回/毎月の喜ばしい成績を獲得した.530人以上のコミュニティ貢献者の参加メンテナンスは、4400回のcommitの更新反復を同時に完了した. 生態圏は優れており、コミュニティは活発である:そのcontributorsはすでに250人以上あり、コミュニティにもelement-uiに基づく拡張コンポーネントが多く、関連するqq討論群やgitterも多い. コミュニティの認可:現在Elementはすでにvue関連の最も多いstarのオープンソースプロジェクトであり、コミュニティの認可 を体現している.
2.npmを取り付ける
3.Elementの導入完全導入 は必要に応じて導入する、すなわち必要なコンポーネント(推奨) のみを導入する.
Axios編
1.なぜAxiosを選んだのか
AxiosはpromiseベースのHTTPライブラリで、ブラウザやnodeで使用できます.js中
次の機能があります.ブラウザからXMLHttpRequests を作成 node.js httpリクエスト作成 Promise API をサポートブロック要求および応答 変換要求データと応答データ キャンセル要求 自動変換JSONデータ クライアントは防御XSRF をサポートする.
2.Ajaxのデメリット自体はMVCプログラミングに対して、フロントエンドMVVMに合わないInspur オリジナルXHR開発に基づいて、XHR自体のアーキテクチャが不明確で、すでにfetchの代替案があり、jquery全体のプロジェクトが大きすぎて、ajaxを単純に使用してjquery全体を導入するのは非常に不合理である(個性的なパッケージ案を採用してもcdnサービスを享受できない) ajaxはブラウザのbackボタン をサポートしていません.セキュリティの問題ajaxは、サーバとのインタラクションの詳細 を暴露した.検索エンジンへのサポートは比較的弱い プログラムを破壊する異常機構 容易なデバッグ 3.Fetchの欠点 Fetchは注目分離に合致し、入力、出力、およびイベントで追跡する状態を1つのオブジェクトに混在させない . fetchtchはネットワークリクエストに対してのみエラーを報告し、400500に対しても成功したリクエストとして、 をカプセル化する必要がある. fetchのデフォルトにはクッキーはありません.構成項目 を追加する必要があります. fetchはabortをサポートせず、タイムアウト制御をサポートせず、settimeoutおよびPromiseを使用する.rejectの実装のタイムアウト制御は、リクエストプロセスがバックグラウンドで実行されることを阻止することができず、無駄な量の をもたらす. fetchは、XHRが可能であるにもかかわらず、要求された進捗を原生的に監視することはできない.
プラグインのインストール
npm i axios --save-dev
requestブロッキングの追加新規ファイルutils/request.js
api/apiを追加します.js
api/indexを追加します.js
ドメイン間需要config/indexを構成する.js
Vue-Router編
Vue RouterはVueです。js公式のルーティングマネージャ。Vueとjsのコア深度統合により、単一ページアプリケーションの構築が容易になります。
ルーティング管理の構成については、個別のブログで更新されますので、ご期待ください.
Vuex編
VuexはVue専用です。jsアプリケーション開発のステータス管理モード。集中型ストレージ管理アプリケーションのすべてのコンポーネントのステータスを採用し、対応するルールでステータスが予測可能な方法で変化することを保証します。
Vuexの配置説明については、編集者が個別のブログで更新するので、お楽しみに.
参考資料 github: element Element公式ドキュメント vue-router vuex
本プロジェクトは、Vue+ElementUI+Axios+Vue-Router+Vuex
ElementUI編
1.なぜelementuiを選んだのか
2.npmを取り付ける
npm i element-ui -D
3.Elementの導入
import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import App from './App.vue';
Vue.use(ElementUI);
new Vue({
el: '#app',
render: h => h(App)
});
import {
// element
Message,
Form,
FormItem
} from 'element-ui'
let elemtuiArray = [
Message,
Form,
FormItem
]
elemtuiArray.forEach(item => {
Vue.use(item)
})
Axios編
1.なぜAxiosを選んだのか
AxiosはpromiseベースのHTTPライブラリで、ブラウザやnodeで使用できます.js中
次の機能があります.
2.Ajaxのデメリット
プラグインのインストール
npm i axios --save-dev
requestブロッキングの追加
import axios from 'axios'
import { Message } from 'element-ui'
import store from '@/store'
import { getToken } from '@/utils/auth'
// create an axios instance
const service = axios.create({
baseURL: '/api', // url = base url + request url
// withCredentials: true, // send cookies when cross-domain requests
timeout: 5000 // request timeout
})
// request interceptor
service.interceptors.request.use(
config => {
// do something before request is sent
if (store.getters.token) {
// let each request carry token
// ['X-Token'] is a custom headers key
// please modify it according to the actual situation
config.headers['X-Token'] = getToken()
}
return config
},
error => {
// do something with request error
console.log('request error' + error) // for debug
return Promise.reject(error)
}
)
// response interceptor
service.interceptors.response.use(
/**
* If you want to get http information such as headers or status
* Please return response => response
*/
/**
* Determine the request status by custom code
* Here is just an example
* You can also judge the status by HTTP Status Code
*/
response => {
//
return response
},
error => {
console.log('error====' + error.message) // for debug
Message({
message: error.message,
type: 'error',
duration: 5 * 1000
})
return Promise.reject(error)
}
)
export default service
api/apiを追加します.js
export default {
//
validateAdminUsers: '/login/validateAdminUsers'
}
api/indexを追加します.js
import api from './api'
import request from '@/utils/request'
let inter = {
//
validateAdminUsers: data => {
return request.post(api.validateAdminUsers, data)
}
}
export default inter
ドメイン間需要config/indexを構成する.js
//
proxyTable: {
'/api': {
target: url ,
changeOrigin: true,
pathRewrite: {
'^/api': ''
}
}
},
Vue-Router編
Vue RouterはVueです。js公式のルーティングマネージャ。Vueとjsのコア深度統合により、単一ページアプリケーションの構築が容易になります。
ルーティング管理の構成については、個別のブログで更新されますので、ご期待ください.
Vuex編
VuexはVue専用です。jsアプリケーション開発のステータス管理モード。集中型ストレージ管理アプリケーションのすべてのコンポーネントのステータスを採用し、対応するルールでステータスが予測可能な方法で変化することを保証します。
Vuexの配置説明については、編集者が個別のブログで更新するので、お楽しみに.
参考資料