<img :src="require('@/assets/image/logo.png')" />
Vue3の開発効率を上げる5つの豆知識【整理・共有】
この記事では、Vue3 開発について説明し、開発効率を向上させ、Vue3 プロジェクトの開発をスムーズにするための 5 つの豆知識を整理して共有します。
最近 Vue3 Vite2 をいじっていて、多くの問題に遭遇しました。開発効率を向上させ、Vue3 プロジェクト開発をより合理化できる 5 つのヒントをまとめました。 。
1. セットアップ名
Vue3
の setup
構文シュガーの強化は良いことですが、 # を使用してください##setup 構文によって引き起こされる最初の問題は、
name をカスタマイズできないことです。
keep-alive を使用する場合、多くの場合、解決するために
name が必要になります。この問題は通常、2 つの
script タグ (1 つは
setup を使用し、もう 1 つは使用しない) を記述することで解決されますが、これは明らかに十分にエレガントではありません。
<script> import { defineComponent, onMounted } from 'vue' export default defineComponent({ name: 'OrderList' }) </script> <script setup> onMounted(() => { console.log('mounted===') }) </script>
vite-plugin-vue-setup-extend を利用することで、2 つの
スクリプト#を書かなくても、この問題をよりエレガントに解決できます。 ## タグ。name
を script
タグに直接定義します。
npm i vite-plugin-vue-setup-extend -D
// vite.config.ts
import { defineConfig } from 'vite'
import VueSetupExtend from 'vite-plugin-vue-setup-extend'
export default defineConfig({
plugins: [
VueSetupExtend()
]
})
<script setup name="OrderList">
import { onMounted } from 'vue'
onMounted(() => {
console.log('mounted===')
})
</script>
setup 構文を使用すると、変数を 1 つずつ保存できます。メソッドと
return は、リリースされるとすぐにテンプレートで使用できるため、手が大幅に解放されます。ただし、ref
、computed
、watch
など、一般的に使用される一部の Vue
API については、手動で設定する必要があります。毎回ページに表示されます。 import
に進みます。 unplugin-auto-import
を通じて自動インポートを実現でき、
を使用せずにファイル内で Vue
API を使用できます。 #インストール
npm i unplugin-auto-import -D
// vite.config.ts import { defineConfig } from 'vite' import AutoImport from 'unplugin-auto-import/vite' export default defineConfig({ plugins: [ AutoImport({ // dts: 'src/auto-imports.d.ts', // 可以自定义文件生成的位置,默认是根目录下 imports: ['vue'] }) ] })
// auto-imports.d.ts // Generated by 'unplugin-auto-import' // We suggest you to commit this file into source control declare global { const computed: typeof import('vue')['computed'] const createApp: typeof import('vue')['createApp'] const customRef: typeof import('vue')['customRef'] const defineAsyncComponent: typeof import('vue')['defineAsyncComponent'] const defineComponent: typeof import('vue')['defineComponent'] const effectScope: typeof import('vue')['effectScope'] const EffectScope: typeof import('vue')['EffectScope'] const getCurrentInstance: typeof import('vue')['getCurrentInstance'] const getCurrentScope: typeof import('vue')['getCurrentScope'] const h: typeof import('vue')['h'] const inject: typeof import('vue')['inject'] const isReadonly: typeof import('vue')['isReadonly'] const isRef: typeof import('vue')['isRef'] // ... } export {}
Use
<script setup name="OrderList"> // 不用import,直接使用ref const count = ref(0) onMounted(() => { console.log('mounted===') }) </script>
imports: ['vue']、
vue に加えて、ドキュメントに従って
vue-router などの他のものもインポートできます。 、
vue-use など。
個人的には、使い慣れた API のみを自動的にインポートすることをお勧めします。たとえば、開発中に
vue API については誰もがよく知っており、目を閉じていても記述できます。一部の馴染みのない API については、
VueUse
import を使用することをお勧めします。結局のところ、エディタにはプロンプトがあり、間違いを犯すのは簡単ではありません。
解決策
eslint<span style="font-size: 16px;"></span>エラー報告の問題<span style="font-size: 16px;"></span>
ある場合noimport を使用すると、eslint
eslintrc.js**vue-global-api にインストールできます。 **### 解決する。
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>// 安装依赖
npm i vue-global-api -D
// eslintrc.js
module.exports = {
extends: [
&#39;vue-global-api&#39;
]
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
3. Farewell.value
ご存知のとおり、
では、アクセス時に .value を追加する必要があります。
let count = ref(1) const addCount = () => { count.value += 1 }
その後、Youda は新しい ref
構文シュガーの提案も提出しました。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>ref: count = 1
const addCount = () => {
count += 1
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
この提案は、発表されるやいなや、コミュニティで多くの議論を巻き起こしましたが、かなり時間が経ちましたので、ここではこれ以上このトピックについてくだらない話はやめておきます。
ここで紹介するのは別の書き方で、後ほど正式な解決策にもなりますので、ref
の前に
を追加してください。この機能はデフォルトでオフになっています。手動でオンにする必要があります。
// vite.config.ts import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' export default defineConfig({ plugins: [ vue({ refTransform: true // 开启ref转换 }) ] })
これをオンにした後、次のように書くことができます: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>let count = $ref(1)
const addCount = () => {
count++
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
この構文シュガーの構成はバージョンによって若干異なります。関連するプラグインのバージョンは次のとおりです。使用: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>"vue": "^3.2.2",
"@vitejs/plugin-vue": "^1.9.0",
"@vue/compiler-sfc": "^3.2.5",
"vite": "^2.6.13"</pre><div class="contentsignin">ログイン後にコピー</div></div>
Vue2
では、よく次のような画像を引用します: <img :src="require('@/assets/image/logo.png')" />
ログイン後にコピー しかし、
Vite<img :src="require('@/assets/image/logo.png')" />
require
は ではサポートされていないため、参照されるイメージは次のようになります:
<template> <img :src="Logo" /> </template> <script setup> import Logo from '@/assets/image/logo.png' </script>
画像を使用するたびに、import## を行う必要があります。 # これは明らかに全員の釣りの時間を遅らせます。現時点では、
vite-plugin-vue-images を使用して画像を自動的にインポートできます。
#インストール<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>npm i vite-plugin-vue-images -D</pre><div class="contentsignin">ログイン後にコピー</div></div>
// vite.config.ts
import { defineConfig } from 'vite'
import ViteImages from 'vite-plugin-vue-images'
export default defineConfig({
plugins: [
ViteImages({
dirs: ['src/assets/image'] // 指明图片存放目录
})
]
})
<template>
<!-- 直接使用 -->
<img :src="Logo" />
</template>
<script setup>
// import Logo from '@/assets/image/logo.png'
</script>
Vue2 を開発するときにファイルをインポートする人が多いと思います。 .vue 接尾辞は無視されます。ただし、Vite
では、.vue 接尾辞を無視するとエラーが発生します。import Home from '@/views/home' // error
import Home from '@/views/home.vue' // ok
ログイン後にコピーYou Dada の回答によると、サフィックスを記述する要件は実際には意図的にこのように設計されており、誰もがこのように書くことが奨励されています。
しかし、本当に書きたくない場合は、公式サポートが提供されます。 import Home from '@/views/home' // error import Home from '@/views/home.vue' // ok
// vite.config.ts import { defineConfig } from 'vite' export default defineConfig({ resolve: { extensions: ['.js', '.ts', '.jsx', '.tsx', '.json', '.vue'] } })
这里要注意,手动配置extensions
要记得把其他类型的文件后缀也加上,因为其他类型如js等文件默认是可以忽略后缀导入的,不写上的话其他类型文件的导入就变成需要加后缀了。
虽然可以这么做,不过毕竟官方文档说了不建议忽略.vue后缀,所以建议大家在实际开发中还是老老实实写上.vue。
感谢
本次分享到这里就结束了,感谢您的阅读!予人玫瑰,手有余香,别忘了动动手指点个赞。
本文如果有什么错误或不足,也欢迎评论区指正!
【相关推荐:vue.js视频教程】
以上がVue3の開発効率を上げる5つの豆知識【整理・共有】の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











tinymce はフル機能のリッチ テキスト エディター プラグインですが、tinymce を vue に導入するのは他の Vue リッチ テキスト プラグインほどスムーズではありません。tinymce 自体は Vue には適しておらず、@tinymce/tinymce-vue を導入する必要があります。外国のリッチテキストプラグインであり、中国語版を通過していないため、公式 Web サイトから翻訳パッケージをダウンロードする必要があります (ファイアウォールをバイパスする必要がある場合があります)。 1. 関連する依存関係をインストールします npminstalltinymce-Snpminstall@tinymce/tinymce-vue-S2. 中国語パッケージをダウンロードします 3. スキンと中国語パッケージを導入します. プロジェクトのパブリック フォルダーに新しい tinymce フォルダーを作成し、

vue3+vite:src は、イメージとエラー レポートと解決策を動的にインポートするために require を使用します。vue3+vite は複数のイメージを動的にインポートします。vue3。TypeScript 開発を使用している場合、イメージを導入するために require のエラー メッセージが表示されます。requireisnotdefined は使用できません。 vue2 のような imgUrl:require(' .../assets/test.png') は、typescript が require をサポートしていないため、インポートされます。そのため、import が使用されます。解決方法は次のとおりです: awaitimport を使用します

ページの部分的な更新を実現するには、ローカル コンポーネント (dom) の再レンダリングを実装するだけで済みます。 Vue でこの効果を実現する最も簡単な方法は、v-if ディレクティブを使用することです。 Vue2 では、v-if 命令を使用してローカル dom を再レンダリングすることに加えて、新しい空のコンポーネントを作成することもできます。ローカル ページを更新する必要がある場合は、この空のコンポーネント ページにジャンプしてから、再びジャンプします。 beforeRouteEnter ガードを空白のコンポーネントに配置します。元のページ。以下の図に示すように、Vue3.X の更新ボタンをクリックして赤枠内の DOM を再読み込みし、対応する読み込みステータスを表示する方法を示します。 Vue3.X の scriptsetup 構文のコンポーネントのガードには o しかないので、

Vue はブログ フロントエンドを実装しており、マークダウン解析を実装する必要があり、コードがある場合はコードのハイライトを実装する必要があります。 Vue には、markdown-it、vue-markdown-loader、marked、vue-markdown など、マークダウン解析ライブラリが多数あります。これらのライブラリはすべて非常に似ています。ここではMarkedが使用され、コード強調表示ライブラリとしてhighlight.jsが使用されます。 1. 依存ライブラリをインストールする vue プロジェクトの下でコマンド ウィンドウを開き、次のコマンド npminstallmarked-save//marked を入力して、マークダウンを htmlnpmins に変換します。

vue3+ts+axios+pinia で無意味なリフレッシュを実現 1. まず、プロジェクト内の aiXos と pinianpmipinia をダウンロードします--savenpminstallaxios--save2. axios リクエストをカプセル化-----ダウンロード js-cookienpmiJS-cookie-s// aixosimporttype{AxiosRequestConfig , AxiosResponse}from"axios";importaxiosfrom'axios';import{ElMess

はじめに vue であれ、react であれ、複数の繰り返しコードに遭遇した場合、ファイルを冗長なコードの束で埋めるのではなく、これらのコードを再利用する方法を考えます。実際、vue と React はどちらもコンポーネントを抽出することで再利用を実現できますが、小さなコードの断片に遭遇し、別のファイルを抽出したくない場合は、それに比べて、React は同じファイル内で対応するウィジェットを宣言して使用できます。または、次のような renderfunction を通じて実装します。 constDemo:FC=({msg})=>{returndemomsgis{msg}}constApp:FC=()=>{return(

vue3 プロジェクトがパッケージ化され、サーバーに公開されると、アクセス ページに空白の 1 が表示されます。vue.config.js ファイル内の publicPath は次のように処理されます: const{defineConfig}=require('@vue/cli-service') module.exports=defineConfig({publicPath :process.env.NODE_ENV==='production'?'./':'/&

最終的な効果は、VueCropper コンポーネントのyarnaddvue-cropper@next をインストールすることです。上記のインストール値は Vue3 用です。Vue2 の場合、または他の方法を参照したい場合は、公式 npm アドレス: 公式チュートリアルにアクセスしてください。また、コンポーネント内で参照して使用するのも非常に簡単です。必要なのは、対応するコンポーネントとそのスタイル ファイルを導入することだけです。ここではグローバルに参照しませんが、import{userInfoByRequest}from'../js/api を導入するだけです。 ' コンポーネント ファイルにインポートします。import{VueCropper}from'vue-cropper&
