Vue.js でモバイル コンポーネント ライブラリを使用する方法 (詳細なチュートリアル)

亚连
リリース: 2018-06-19 15:49:49
オリジナル
1943 人が閲覧しました

この記事では、Vue.js をベースにしたモバイル コンポーネント ライブラリである cube-ui を主に紹介します。

cube-ui は、Vue.js に基づいて Didi の技術チームによって実装された精巧なモバイル コンポーネント ライブラリです。コンポーネントはそれほど多くありませんが、基本的なシナリオには十分です。オープンソースに感謝します。

最初に vue プロジェクトを作成します

vue init webpack my-project
cd my-project
npm install
ログイン後にコピー

cube-ui をインストールします

npm install cube-ui -S
ログイン後にコピー

公式の推奨事項は、コンポーネント モジュールと対応するスタイルをよりエレガントに導入できる babel-plugin-transform-modules プラグインを使用することです。

npm install babel-plugin-transform-modules -D
ログイン後にコピー

次に、このプラグインを設定し、.babelrcを変更します: (プラグインに追加)

{
 "plugins": [
 ["transform-modules", {
  "cube-ui": {
  "transform": "cube-ui/lib/${member}",
  "kebabCase": true,
  "style": {
   "ignore": ["create-api", "better-scroll"]
  }
  }
 }]
 ]
}
ログイン後にコピー

導入方法1: すべてインポートします

通常、エントリファイルmain.js:

import Vue from 'vue'
import Cube from 'cube-ui' // 一般直接放在这个位置
Vue.use(Cube)
ログイン後にコピー

をすべて導入した後、それは同等ですグローバル登録を行うと、直接使用できるようになります。各 .vue ファイルに {…} (ローカル参照) をインポートする必要はなく、コンポーネント{…} はローカルに登録されます。

導入方法2: オンデマンドインポート

import {
 /* eslint-disable no-unused-vars */
 Style, // 必需
 Button
} from 'cube-ui'
ログイン後にコピー

注意: オンデマンドインポートの場合、基本スタイル部分はパッケージ化されないため、使用する際にはスタイルモジュールを導入する必要があります。

登録方法グローバル登録またはローカル登録を選択できます:

// 全局注册
Vue.use(Button) // 在入口文件中
// 或者局部注册
// 某个组件中
{
 components: {
 CubeButton: Button
 }
}
ログイン後にコピー

オンデマンドで導入できるすべてのコンポーネント:

import {
 Button,
 Checkbox,
 Loading,
 Tip,
 Toast,
 Picker,
 TimePicker,
 Dialog,
 ActionSheet,
 Scroll,
 Slide,
 IndexList
} from 'cube-ui'
ログイン後にコピー

create-api および better-scroll モジュールを導入することもできます:

import { createAPI, BetterScroll } from 'cube-ui'
ログイン後にコピー

<template>
 <cube-button @click="showDiaog">show dialog<cube-button>
</template>

<script>
 export default {
 methods: {
  showDialog() {
  this.$createDialog({
   type: &#39;alert&#39;,
   title: &#39;Alert&#39;,
   content: &#39;dialog content&#39;
  }).show()
  }
 }
 }
</script>
ログイン後にコピー

ポストコンパイルは使用しないでください

注: webpack 2 以降の cube-ui はデフォルトでポストコンパイルを使用しますが、ポストコンパイルを使用したくない場合は、いくつかの依存関係と設定が必要です (このページの最後を参照)。コンパイル後、Webpack 構成を直接変更できます。 以上です:

// webpack.config.js
module.exports = {
 // ...
 resolve: {
 // ...
 alias: {
  // ...
  &#39;cube-ui&#39;: &#39;cube-ui/lib&#39;
  // ...
 }
 // ...
 }
 // ...
}
ログイン後にコピー

使用後にコンパイル

cube-ui は webpack 2+ を使用した後にデフォルトでコンパイルされるため、アプリケーションは cube-ui の依存関係と構成と互換性がある必要があります。

1. package.json を変更します

{
 // webpack-post-compile-plugin 依赖 compileDependencies
 "compileDependencies": ["cube-ui"],
 "devDependencies": {
 "babel-plugin-transform-modules": "^0.0.2",
 // 新增 stylus 相关依赖 (都需要额外安装:npm install … -D)
 // stylus 类似于 sass,less
 "stylus": "^0.54.5",
 "stylus-loader": "^2.1.1",
 "webpack-post-compile-plugin": "^0.1.2"
 }
}
ログイン後にコピー

2. 引き続き babel-plugin-transform-modules に依存します:

"plugins": [
 ["transform-runtime"],
 ["transform-modules", {
 "cube-ui": {
  // 注意: 这里的路径需要修改到 src/modules 下
  "transform": "./node_modules/cube-ui/src/modules/${member}",
  "kebabCase": true
 }
 }]
]
ログイン後にコピー

3. build/utils を変更します。 js

var PostCompilePlugin = require(&#39;webpack-post-compile-plugin&#39;)
module.exports = {
 // ...
 plugins: [
 // ...
 new PostCompilePlugin()
 ]
 // ...
}
ログイン後にコピー

でexports.cssLoaders関数を実行し、結果を確認してください:

exports.cssLoaders = function (options) {
 // ...
 const stylusOptions = {
 &#39;resolve url&#39;: true
 }
 // https://vue-loader.vuejs.org/en/configurations/extract-css.html
 return {
 css: generateLoaders(),
 postcss: generateLoaders(),
 less: generateLoaders(&#39;less&#39;),
 sass: generateLoaders(&#39;sass&#39;, { indentedSyntax: true }),
 scss: generateLoaders(&#39;sass&#39;),
 stylus: generateLoaders(&#39;stylus&#39;, stylusOptions),
 styl: generateLoaders(&#39;stylus&#39;, stylusOptions)
 }
}
ログイン後にコピー

上記は私がまとめたものであり、将来的には誰にとっても役立つことを願っています。

関連記事:

JavaScriptで高パフォーマンスなロードシーケンスを実装する方法

axiosでグローバル登録を実装する方法

Vue+Flaskを使用してログイン検証ジャンプを実装する方法(詳細なチュートリアル)

react-reduxにおけるconnectデコレータの使い方について

以上がVue.js でモバイル コンポーネント ライブラリを使用する方法 (詳細なチュートリアル)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート