使いやすいプロジェクトを作成するvue-cli 作成$npm インストール -g @vue/cli $vue --バージョン @vue/cli 4.5.15 $vue プロジェクトを作成 次に、手順を実行します。
ファイル構造: 私のプロジェクト babel.config の構文 +--- パッケージロック.json +--- パッケージ.json +--- 公開 | +--- ファビコン.ico | +--- インデックス.html +--- README.md +--- 出典 | +--- アプリ.vue | +--- 資産 | | +--- ロゴ.png | +--- コンポーネント | | +--- HelloWorld.vue | +--- メイン.ts | +--- shims-vue.d.ts tsconfig.json は、 +--- ノードモジュール | +--- ...
ヴィートクリエイション次のコマンドを実行してプロジェクトを作成します $npm init vite-app <プロジェクト名> $cd <プロジェクト名> $ npmインストール $ npm 実行 dev ファイル構造: プロジェクト名 +--- インデックス.html +--- パッケージロック.json +--- パッケージ.json +--- 公開 | +--- ファビコン.ico +--- 出典 | +--- アプリ.vue | +--- 資産 | | +--- ロゴ.png | +--- コンポーネント | | +--- HelloWorld.vue | +--- インデックス.css | +--- メイン.js +--- ノードモジュール | +--- ...
注意: vite メソッドを使用して作成されたプロジェクトには vue 宣言ファイルがないため、カスタマイズする必要があります。そうしないと、エラーが報告されます。 /* eslint を無効にする */ モジュール '*.vue' を宣言します。 'vue' から DefineComponent 型をインポートします。 定数コンポーネント: DefineComponent<{}, {}, any> デフォルトコンポーネントをエクスポートする } vue-routerをインストールする$ npm インストール vue-router@4 この時点で、 { "名前": "私のプロジェクト", "バージョン": "0.1.0", 「プライベート」:true、 「スクリプト」: { "サーブ": "vue-cli-service サーブ", "ビルド": "vue-cli-service ビルド", "lint": "vue-cli-service lint" }, 「依存関係」: { "core-js": "^3.6.5", "vue": "^3.0.0", "vue-router": "^4.0.12" }, 「devDependencies」: { "@typescript-eslint/eslint-plugin": "^4.18.0", "@typescript-eslint/パーサー": "^4.18.0", "@vue/cli-plugin-babel": "~4.5.0", "@vue/cli-plugin-eslint": "~4.5.0", "@vue/cli-plugin-typescript": "~4.5.0", "@vue/cli-service": "~4.5.0", "@vue/コンパイラ-sfc": "^3.0.0", "@vue/eslint-config-typescript": "^7.0.0", "eslint": "^6.7.2", "eslint-プラグイン-vue": "^7.0.0", "typescript": "~4.1.5" } } コンポーネントの作成/変更
「vue-router」から {createRouter、createWebHashHistory} をインポートします。 '../components/Home.vue' から Home をインポートします。 '../components/About.vue' から About をインポートします。 '../components/User.vue' から User をインポートします。 定数ルート = [ // ルーターパラメータの詳細については以下を参照してください { パス: "/home", 名前: "ホーム", コンポーネント: ホーム }, { パス: "/about", 名前: "について", コンポーネント: について }, { パス: "/user/:uid", // 動的パラメータ名: "user", コンポーネント: ユーザー } ] エクスポートconst router = createRouter({ 履歴: createWebHashHistory(), ルート: ルート }) コンポーネントを作成する: <テンプレート> <div>ホーム コンポーネント</div> </テンプレート> <script lang="ts"> 「vue」からdefineComponentをインポートします。 エクスポートデフォルトdefineComponent({ 名前: "ホーム", 設定() { 戻る { //返されたデータ }; }, }); </スクリプト> <テンプレート> <div>コンポーネントについて</div> </テンプレート> <script lang="ts"> 「vue」からdefineComponentをインポートします。 エクスポートデフォルトdefineComponent({ 名前: "概要", 設定() { 戻る { //返されたデータ }; }, }); </スクリプト> <テンプレート> <div>ユーザー コンポーネント</div> </テンプレート> <script lang="ts"> 「vue」からdefineComponentをインポートします。 エクスポートデフォルトdefineComponent({ 名前: "ユーザー", 設定() { 戻る { //返されたデータ }; }, }); </スクリプト> <テンプレート> <div>{{ アプリメッセージ }}</div> <!-- router-link はタグとしてレンダリングされます --> <router-link to="/home">ホーム</router-link> <router-link to="/about">について</router-link> <router-link to="/user/lczmx">ユーザー</router-link> <!-- ルーティング終了 --> <!-- ルートに一致するコンポーネントがここでレンダリングされます --> <ルータービュー></ルータービュー> </テンプレート> <script lang="ts"> 「vue」からdefineComponentをインポートします。 エクスポートデフォルトdefineComponent({ 名前:「アプリ」、 設定() { const appMessage = "アプリコンポーネント"; 戻る { //返されたデータ appMessage、 }; }, }); </スクリプト> <スタイル> /* スタイルを追加 */ #アプリ { テキスト配置: 中央; 上マージン: 50px; } { マージン: 30px; 表示: インラインブロック; } </スタイル> エントリtsを変更する
'vue' から {createApp} をインポートします。 './App.vue' からアプリをインポートします。 './index.css' をインポートします './router' から { router } をインポートします。 // アプリケーションを作成し、対応するインスタンスオブジェクトを返します const app = createApp(App) // vue-router プラグインをインストールする app.use(router) // マウントメソッドを呼び出す app.mount('#app') Vueを起動$ npm 実行 サーブ > [email protected] サーブ > vue-cli-service サーブ INFO 開発サーバーを起動しています... CopyPluginを放出した後98% 完了 6387 ミリ秒でコンパイルに成功しました 午後 4:14:30 アプリの実行場所: - ローカル: http://localhost:8080/ - ネットワーク: http://192.168.43.12:8080/ 開発ビルドは最適化されていないことに注意してください。 プロダクションビルドを作成するには、npm run build を実行します。 問題は見つかりませんでした。 ブラウザでアクセスプロンプトに従って、以下に示すように ファイル構造図包括的な使用動的パラメータ
定数ルート = [ // 動的セグメントはコロンで始まります { path: '/users/:id', component: User }, // 正規表現 `()` を使用します。内容は前のパスマッチに渡されます。 // route.params.pathMatch の下の値 { path: '/:pathMatch(.*)*', name: 'NotFound', component: NotFound }, ] 一致すると、パラメータは
試合リスト
パラメータ付きのルートを使用する場合は、次の点に注意してください。同じコンポーネント インスタンスが再利用されるため、コンポーネント ライフサイクル フックは呼び出されません。 しかし、ルートを監視することはできる ウォッチを使用して動的パラメータを監視する
<テンプレート> <div>ユーザー コンポーネント</div> <p>現在のユーザー: {{ uid }}</p> <router-link to="/user/lczmx">lczmx</router-link> <router-link to="/user/jack">ジャック</router-link> </テンプレート> <script lang="ts"> 「vue」から{defineComponent、watch、ref}をインポートします。 「vue-router」から useRouter をインポートします。 エクスポートデフォルトdefineComponent({ 名前: "ユーザー", 設定() { 定数ルーター = useRouter(); 定数 uid = ref(router.currentRoute.value.params.uid); 時計( // 応答のないデータをリッスンする() => router.currentRoute.value, (値) => { // uid を変更する uid.value = val.params.uid; } ); 戻る { // 返されたデータ uid、 }; }, }); </スクリプト> Combination APIを使用して動的パラメータを監視するhttps://next.router.vuejs.org/en/guide/advanced/composition-api.html リダイレクト以下は 定数ルート = [ { パス: "/"、 // 方法 1: URL をハードコードする // リダイレクト: "/home"、// "/" にアクセスすると "/home" にリダイレクトします // 方法 2: 対応する名前付きルートにジャンプするリダイレクト: { name: "home" }, //メソッド3を書くとメソッドが定義されます //このメソッドは相対パスを返すこともできます/* リダイレクト: => { // メソッドはターゲットルートをパラメータ「to」として受け取ります // リダイレクトされた文字列パス/パスオブジェクトを返す // クエリはパラメータを指定します return { path: '/home', query: { q: to.params.searchText } } }, */ }, { パス: "/home", 名前: "ホーム", コンポーネント: ホーム } ]
命名と別名名前付きルート
定数ルート = [ { パス: '/user/:username', 名前: 'ユーザー', コンポーネント: ユーザー } ] <テンプレート> <div>ユーザー コンポーネント</div> <p>現在のユーザー: {{ uid }}</p> <router-link :to="{ name: 'user', params: { uid: 'lczmx' } }" >lczmx</ルーターリンク > <router-link :to="{ name: 'user', params: { uid: 'jack' } }" >ジャック</ルーターリンク > </テンプレート> router.push({ name: 'user', params: { uid: 'lczmx' } }) 名前付きビュー
例えば ルートを定義します。 「vue-router」から {createRouter、createWebHashHistory} をインポートします。 '../components/Home.vue' から Home をインポートします。 '../components/About.vue' から About をインポートします。 '../components/User.vue' から User をインポートします。 定数ルート = [ { パス: "/"、 コンポーネント: default: Home, // default は Home コンポーネントを使用します a: About, // a は About コンポーネントを使用します b: User, // b は User コンポーネントを使用します }, }, { パス: "/home", コンポーネント: default: About, // デフォルトで About コンポーネントを使用します a: Home, // a は Home コンポーネントを使用します b: User, // b は User コンポーネントを使用します }, }, ] エクスポートconst router = createRouter({ 履歴: createWebHashHistory(), ルート: ルート }) <テンプレート> <div>{{ アプリメッセージ }}</div> <!-- router-link はタグとしてレンダリングされます --> <router-link to="/">/</router-link> <router-link to="/home">/home</router-link> <!-- ルーティング終了 --> <!-- ルートに一致するコンポーネントがここでレンダリングされます --> <!-- デフォルト --> <ルータービュー></ルータービュー> <ルータービュー名="about"></ルータービュー> <ルータービュー名="ユーザー"></ルータービュー> </テンプレート> <script lang="ts"> 「vue」からdefineComponentをインポートします。 エクスポートデフォルトdefineComponent({ 名前:「アプリ」、 設定() { const appMessage = "アプリコンポーネント"; 戻る { //返されたデータ appMessage、 }; }, }); </スクリプト> <スタイル> /* スタイルを追加 */ #アプリ { テキスト配置: 中央; 上マージン: 50px; } { マージン: 30px; 表示: インラインブロック; } </スタイル> その他のコンポーネント <テンプレート> <div>コンポーネントについて</div> </テンプレート> <テンプレート> <div>ホーム コンポーネント</div> </テンプレート> <テンプレート> <div>ユーザー コンポーネント</div> </テンプレート> サービスを開始してvueにアクセスする 図示のとおり:
エイリアス
定数ルート = [ // 「/home」または「/」にアクセスできます // アクセスパスは変更されません{ パス: "/home", 名前: "ホーム", コンポーネント: ホーム、 エイリアス: "/" } ネストされたルート以前は、 しかし、他のコンポーネントでレンダリングする必要がある場合は、ネストされたルーティングが必要です
例: 「vue-router」から {createRouter、createWebHashHistory} をインポートします。 '../components/Home.vue' から Home をインポートします。 '../components/About.vue' から About をインポートします。 '../components/User.vue' から User をインポートします。 '../components/UserHome.vue' から UserHome をインポートします。 '../components/UserSettings.vue' から UserSettings をインポートします。 '../components/UserProfile.vue' から UserProfile をインポートします。 定数ルート = [ // 「/home」または「/」にアクセスできます // アクセスパスは変更されません { パス: "/home", 名前: "ホーム", コンポーネント: ホーム、 エイリアス: "/" }, { パス: "/about", 名前: "について", コンポーネント: について }, { パス: "/user/:uid", // 動的パラメータ名: "user", コンポーネント: User, // ルータビューレンダリングにネストされたルータ children: [ // /user/lczmxのようなURLにマッチする { パス: "", コンポーネント: UserHome }, // /user/lczmx/settingsのようなURLに一致します { パス: "settings"、コンポーネント: UserSettings、名前: "user-settings" }, // /user/lczmx/profile のような URL に一致します { パス: "profile"、コンポーネント: UserProfile、名前: "user-profile" } ] } ] エクスポートconst router = createRouter({ 履歴: createWebHashHistory(), ルート: ルート })
<テンプレート> <div> <router-link :to="{ name: 'user-settings' }">設定</router-link> <router-link :to="{ name: 'user-profile' }">プロファイル</router-link> </div> <ルータービュー></ルータービュー> </テンプレート> <テンプレート> <div>ユーザーホームページ</div> </テンプレート> <テンプレート> <div>ユーザー詳細ページ</div> </テンプレート> <テンプレート> <div>ユーザー設定ページ</div> </テンプレート> 開始とアクセス ブラウザでテスト: プログラムによるルーティングつまり、 a タグを使用する代わりに、 <テンプレート> <div>コンポーネントについて</div> <button @click="changeRouter">ルートを変更</button> </テンプレート> <script lang="ts"> 「vue」からdefineComponentをインポートします。 「vue-router」から useRouter をインポートします。 エクスポートデフォルトdefineComponent({ 名前: "概要", 設定() { // ルーターオブジェクトを取得します。const router = useRouter(); 定数changeRouter = () => { /* ルートを変更する例 */ // 1 つの文字列パス router.push("/users/lczmx"); // パスを持つ 2 つのオブジェクト router.push({ path: "/users/lczmx" }); // 3 つの名前付きルートと、ルートが URL を構築できるようにするためのパラメータを追加しました router.push({ name: "user", params: { username: "lczmx" } }); // 4 クエリパラメータ付きの場合、結果は /register?plan=private になります router.push({ パス: "/register", クエリ: { プラン: "private" } }); // 5 ハッシュの場合、結果は /about#team になります router.push({ パス: "/about", ハッシュ: "#team" }); // 6 URL は手動で構築できますが、エンコードは自分で処理する必要があります。const username = "lczmx"; router.push(`/user/${username}`); // -> /user/lczmx // 同様に router.push({ path: `/user/${username}` }); // -> /user/lczmx // 可能であれば、自動 URL エンコードのメリットを享受するために `name` と `params` を使用します router.push({ name: "user", params: { username } }); // -> /user/lczmx // 7 `params` は `path` と一緒に使用できません。そうしないと `params` は無視されます router.push({ path: "/user", params: { username } }); // -> /user // 8 replace は true であり、履歴に追加されません router.push({ path: "/home", replace: true }); // router.replace({ path: "/home" }); と同等 // 9 履歴全体 // 1レコード前進します。router.forward() と同じです。router.go(1); // router.back() と同じレコードを返します router.go(-1); // 3レコード進む router.go(3); // レコード数がそれほど多くない場合は、何も表示せずに失敗します router.go(-100); ルータ.go(100); }; 戻る { //返されたデータ changeRouter、 }; }, }); </スクリプト> <スタイル> ボタン { マージン: 30px; } </スタイル>
以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: JavaScript におけるブラウザ互換性の問題について簡単に説明します
>>: HTML における相対と絶対の使用法と違いの詳細な説明
目次DragEvent インターフェースデータ転送インターフェースの概要DataTransfer の...
1. MySQL独自のストレステストツールMysqlslap mysqlslap は、mysql に...
環境: CentOS 7.1.1503 最小インストール依存パッケージをダウンロードします: yum...
この記事は、WindowsでのMySQL 8.0.11のインストールチュートリアルを記録しています。...
この記事では、弾幕効果を実現するためのネイティブjsの具体的なコードを参考までに共有します。具体的な...
まず、公式サイト https://dev.mysql.com/downloads/mysql/5.7...
この記事の例では、WeChatアプレットの水平スクロールと垂直スクロールを実現するための具体的なコー...
問題: MySQLテーブル内の自動増分IDのオーバーフローによりビジネスブロックが発生した背景: t...
コマンドを実行してプラグインpostcss-pxtoremをインストールします npm インストール...
CSS 属性セレクターは素晴らしいです。大量のクラス名を追加することを回避し、コード内の問題を指摘す...
この記事では主に、Vue で TodoList をカプセル化するケースと、ブラウザのローカル キャッ...
MySQL の導入現在、会社ではプラットフォーム運用を通じてMySQLを導入しています。金曜日、プラ...
Centos yumフォルダを開くコマンドcd /etc/yum.repos.d/を入力します。 w...
目次トリガーについてトリガーの使用トリガーを作成するトリガーを表示トリガーの削除使用上の注意新旧の違...
誰もが色にとても敏感だと思います。私たちの目が見るところにはどこにでも色があります。では、CSS で...