ホームページ >ウェブフロントエンド >jsチュートリアル >vueのコンポーネントとフレームワーク構造の選び方
今回は、Vue コンポーネントとフレームワーク構造の選び方と、Vue コンポーネントとフレームワーク構造を選択する際の 注意事項 について説明します。実際のケースを見てみましょう。
vue プロジェクトのインフラストラクチャ
vue プロジェクトの場合、実際には最小のサブセットは {vue、vue-router、component} であると思います。vue は基本ライブラリとして、双方向バインディングおよびその他の関数を提供します。 vue-router はさまざまな「ページ」を接続し、コンポーネントはスタイルまたは動作として出力されます。これら 3 つを使用して、最も基本的な静的 SPA Web サイトを実装できます。もちろん、ここでは vue ファミリー バケットの広範な概念については説明しません。主な技術的なポイントを 1 つずつ列挙します。
1.vue-cli: 基本的な vue プロジェクトのスケルトンと足場ツールを構築します
2.sass-loader&node-sass: スタイルのプリコンパイルツールとして sass を使用します。less または stylus を自分で選択することもできます。 3. postcss:
レスポンシブ レイアウトを実現するための鍵、px=>rem。 Dadoさんはvwとvhをベースにしたレイアウト案を提案してきましたが、私は当面様子見の姿勢です。 4.vuex: 複雑なデータ フロー、ステート マシン ツール、特殊な Flux を管理します
5.vuex-persistedstate: vuex で状態を永続化するためのツール
6.vue-router: SPA間の「ページ」間のジャンプを実現
7.vue-lazyload: 画像の遅延読み込みを実装し、http 送信パフォーマンスを最適化します
8.vue-awesome-swiper: カルーセル機能の実装といくつかの特別な切り替え効果の完成
9.better-scroll: リストのスクロールと、親コンポーネントと子コンポーネント間のスクロールの問題を実装します
10.axios: API からデータをリクエストし、インターセプターを実装する http ツール
11.fastclick: 300msの遅延を解決するライブラリ
上記はすべて、中規模から大規模の Vue プロジェクトで使用する必要があると考えられるものです。画像のアップロードを実装するために使用した jsx 構文など、汎用的でない場合は、babel-jsx のようなものを必要とするものもあります。例では機能しません。
上記の内容について簡単に説明します。いくつかの点については、別途詳しく説明します。
1.vue-cli:https://github.com/vuejs/vue-cli
スキャフォールディング ツール、開発テクノロジ スタックとして vue を選択した場合、プロジェクト用のディレクトリと開発環境の構築を開始する必要があります。ノードをインストールした後、後続のコマンドを使用してノードをインストールします npm install -g vue-cli vue-cli をグローバル環境にインストールします
vue init webpack my-vue-demo は、webpack テンプレートに基づいて my-vue-demo ファイル名という名前の vue プロジェクトを作成します
ここには 6 つのテンプレートがありますが、私たちがよく使用するのは webpack です。
この期間中、コードの品質をチェックするための e2e や ESLint ツールなどの
単体テストツールが表示されますが、インストールする必要はないと思います。
上の図は、vue-cli の基本構造を除いて、プロジェクトの観点から比較的成熟した Vue スケルトンです。
2&3 :sass、postcss
CSS を直接記述する時代は終わりました。プリコンパイルされたスタイル プロセッサは、生産性を解放し、効率を向上させるのに役立ちます。 Sass、less、stylus にはそれぞれ長所と短所があり、それぞれに追随者がいます。 sassを使用するには、sass-loaderとnode-sassをインストールする必要がありますが、node-sassはインストールが簡単ではないため、淘宝網のイメージを使用することをお勧めします。インストールが完了した後もエラーを解析できない場合は、webpack.base.conf.js に移動して、対応するローダーが設定されているかどうかを確認する必要がある場合があります。
postcssの共通機能
px2rem => は、対応する変換標準を定義するだけで、px を rem 単位に変換できます。
autoprefixer => postcss も互換性の処理に役立ちます。
りー4,5:vuex,vuex-persistedstate
https://github.com/robinvdvleuten/vuex-persistedstate 中規模から大規模の Vue プロジェクトには、管理が必要な複雑な状態が必ず存在します。単純なイベントバスはもはや適切ではありません。
特化的Flux架构,vuex就迎头顶上。简而言之:他就是我们处理无论是用户操作,API返回,URL变更等多重操作的状态管理工具。以后我会具体的说下vuex。
用过vuex的人,会发现一个很痛苦的地方,就是vuex里面的state,只要我们去刷新,它就被释放掉了。有的状态还好,没有了大不了我们可以让用户去重新操作一遍。但是像登录这样的操作,你不可能让用户刷一下就去登一下吧。当然,你会说,我们可以存到local啊,cookie里面啊。是可以!但是这样的话,state就和local里的数据形成了一种松散的关联,state显得十分的脆弱,因为你无法预知你什么时候会少写一个setStore这样的方法。vuex-persistedstate帮我们解决了这样的问题,它帮我们直接把state映射到了本地的缓存环境,我们可以在computed里面用vuex提供的mapState辅助函数,来动态的更新local里面的数据。而不需要持久化的state,我们依旧可以刷新来释放掉。
6.vue-router
当我们使用vue来构建SPA的应用时,就等于说我们完全的分离了前后端。或者通俗点的说:这就是一个纯前端的项目。后端仅仅提供数据,任何的逻辑都在前端实现。既然"脱离"了后端,那么肯定就没有request Mapping这样的同步映射url了。那么,前端就需要router来实现我们前端"页面"的跳转。vue-router就帮我们做了这样的事情,他提供给了路由守卫给我们,我们可以设置全局的,组件内的路由守卫,来实现特定的业务逻辑。 提供过渡动画,来更加生动的展示SPA应用应有的风采等等,这个以后也要具体的来说。
7.vue-lazyload
https://github.com/hilongjw/vue-lazyload
实现图片的懒加载。这是前端性能优化的一个必须面对的问题:图片。懒加载可以减少请求的数量,而且在很直观的视觉上,也有一个良好的过渡。当然,图片我们也是需要去做一些处理的,使用webp格式来减小图片的质量,或者通过oss来对图片作处理。
8.vue-awesome-swiper
https://github.com/surmon-china/vue-awesome-swiper
通过它可以实现基本轮播,横轴的切换,横轴的列表滚动等。
例如我要去实现四个tab切换这样的功能,但是简单的display这样的效果我又觉得不是很满意。那么我们就可以通过swiper来实现,每次tab里面的content都会对应swiper的一个swiper-item。切换的tab,其实就是swiper里面的next page或者before page.
data(){ return{ swiperOption: { slidesPerView :'auto', direction: 'horizontal', freeMode : true, loop: false, spaceBetween: 20, }, } }
<swiper :options="swiperOption" ref="swiper" v-if="list&& list.length !== 0"> <swiper-slide v-for="(item,index) in list" :key="index" class="hot-item"> <router-link :to="{name:'quickCar',params:{carID:item.CarID}}" class="description_car"> <img v-lazy="item.Attachments.length !==0 && item.Attachments[0].FilePath"/> <span>¥{{item.price}}/日</span> </router-link> </swiper-slide> </swiper> <p class="noData" v-else></p>
9.better-scroll
https://github.com/ustbhuangyi/better-scroll
实现纵轴列表的滚动,以及当有嵌套的路由的时候,通过better-scroll来实现的禁止父路由随着子路由的滚动的问题。
better-scroll其实也可以去实现横轴的滚动,但是为什么不使用better-scroll来处理呢?这是因为在better-scroll实现横轴滚动的时候,我们无法在better-scorll的content的内容区域里去下向拉动我们的页面。所以导致的一个Bug就是,在better-scroll横轴滚动的区域里,页面动不了了。
10.axios
基本功能就是通过axios来请求后台接口的数据。并且axios可以配合router更好的实现类似后台的拦截器的功能,例如处理token过期这样问题。因为当token过期的时候,仅仅通过vue-router的router.beforeEach来处理就有点无能为力了。这时候就需要配合后台响应返回的code来进行url的处理。
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
以上がvueのコンポーネントとフレームワーク構造の選び方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。