Vue3の開発効率を上げる5つの豆知識【整理・共有】

青灯夜游
リリース: 2022-01-21 10:36:58
転載
2357 人が閲覧しました

この記事では、Vue3 開発について説明し、開発効率を向上させ、Vue3 プロジェクトの開発をスムーズにするための 5 つの豆知識を整理して共有します。

Vue3の開発効率を上げる5つの豆知識【整理・共有】

最近 Vue3 Vite2 をいじっていて、多くの問題に遭遇しました。開発効率を向上させ、Vue3 プロジェクト開発をより合理化できる 5 つのヒントをまとめました。 。

1. セットアップ名

Vue3setup 構文シュガーの強化は良いことですが、 # を使用してください##setup 構文によって引き起こされる最初の問題は、name をカスタマイズできないことです。keep-alive を使用する場合、多くの場合、解決するために name が必要になります。この問題は通常、2 つの script タグ (1 つは setup を使用し、もう 1 つは使用しない) を記述することで解決されますが、これは明らかに十分にエレガントではありません。

<script>
import { defineComponent, onMounted } from &#39;vue&#39;

export default defineComponent({
  name: &#39;OrderList&#39;
})
</script>

<script setup>
onMounted(() => {
  console.log(&#39;mounted===&#39;)
})
</script>
ログイン後にコピー

現時点では、プラグイン

vite-plugin-vue-setup-extend を利用することで、2 つの スクリプト#を書かなくても、この問題をよりエレガントに解決できます。 ## タグ。namescript タグに直接定義します。

#インストール

npm i vite-plugin-vue-setup-extend -D
ログイン後にコピー
#構成

// vite.config.ts
import { defineConfig } from &#39;vite&#39;
import VueSetupExtend from &#39;vite-plugin-vue-setup-extend&#39;

export default defineConfig({
  plugins: [
    VueSetupExtend()
  ]
})
ログイン後にコピー
<span style="font-size: 16px;"></span>

<script setup name="OrderList">
import { onMounted } from &#39;vue&#39;

onMounted(() => {
  console.log(&#39;mounted===&#39;)
})
</script>
ログイン後にコピー
<span style="font-size: 16px;"></span> 2. API 自動インポート

setup 構文を使用すると、変数を 1 つずつ保存できます。メソッドと

return

は、リリースされるとすぐにテンプレートで使用できるため、手が大幅に解放されます。ただし、refcomputedwatch など、一般的に使用される一部の VueAPI については、手動で設定する必要があります。毎回ページに表示されます。 import に進みます。 unplugin-auto-import を通じて自動インポートを実現でき、

import

を使用せずにファイル内で Vue API を使用できます。 #インストール

npm i unplugin-auto-import -D
ログイン後にコピー
<span style="font-size: 16px;"></span>構成

// vite.config.ts
import { defineConfig } from &#39;vite&#39;
import AutoImport from &#39;unplugin-auto-import/vite&#39;

export default defineConfig({
  plugins: [
    AutoImport({
      // dts: &#39;src/auto-imports.d.ts&#39;, // 可以自定义文件生成的位置,默认是根目录下
      imports: [&#39;vue&#39;]
    })
  ]
})
ログイン後にコピー
インストールと構成が完了しましたauto-imports.d.ts ファイルを自動的に生成します。
// auto-imports.d.ts
// Generated by &#39;unplugin-auto-import&#39;
// We suggest you to commit this file into source control
declare global {
  const computed: typeof import(&#39;vue&#39;)[&#39;computed&#39;]
  const createApp: typeof import(&#39;vue&#39;)[&#39;createApp&#39;]
  const customRef: typeof import(&#39;vue&#39;)[&#39;customRef&#39;]
  const defineAsyncComponent: typeof import(&#39;vue&#39;)[&#39;defineAsyncComponent&#39;]
  const defineComponent: typeof import(&#39;vue&#39;)[&#39;defineComponent&#39;]
  const effectScope: typeof import(&#39;vue&#39;)[&#39;effectScope&#39;]
  const EffectScope: typeof import(&#39;vue&#39;)[&#39;EffectScope&#39;]
  const getCurrentInstance: typeof import(&#39;vue&#39;)[&#39;getCurrentInstance&#39;]
  const getCurrentScope: typeof import(&#39;vue&#39;)[&#39;getCurrentScope&#39;]
  const h: typeof import(&#39;vue&#39;)[&#39;h&#39;]
  const inject: typeof import(&#39;vue&#39;)[&#39;inject&#39;]
  const isReadonly: typeof import(&#39;vue&#39;)[&#39;isReadonly&#39;]
  const isRef: typeof import(&#39;vue&#39;)[&#39;isRef&#39;]
  // ...
}
export {}
ログイン後にコピー

Use

<script setup name="OrderList">
// 不用import,直接使用ref
const count = ref(0)

onMounted(() => {
  console.log(&#39;mounted===&#39;)
})
</script>
ログイン後にコピー
上記では、vite.config.ts vue の設定で のみをインポートしました。

,

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:js;toolbar:false;">// 安装依赖 npm i vue-global-api -D // eslintrc.js module.exports = { extends: [ &amp;#39;vue-global-api&amp;#39; ] }</pre><div class="contentsignin">ログイン後にコピー</div></div>3. Farewell.valueご存知のとおり、

ref

では、アクセス時に .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:js;toolbar:false;">ref: count = 1 const addCount = () =&gt; { count += 1 }</pre><div class="contentsignin">ログイン後にコピー</div></div> この提案は、発表されるやいなや、コミュニティで多くの議論を巻き起こしましたが、かなり時間が経ちましたので、ここではこれ以上このトピックについてくだらない話はやめておきます。

ここで紹介するのは別の書き方で、後ほど正式な解決策にもなりますので、ref の前に

$

を追加してください。この機能はデフォルトでオフになっています。手動でオンにする必要があります。

// vite.config.ts
import { defineConfig } from &#39;vite&#39;
import vue from &#39;@vitejs/plugin-vue&#39;

export default defineConfig({
  plugins: [
    vue({
      refTransform: true // 开启ref转换
    })
  ]
})
ログイン後にコピー

これをオンにした後、次のように書くことができます: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;toolbar:false;">let count = $ref(1) const addCount = () =&gt; { count++ }</pre><div class="contentsignin">ログイン後にコピー</div></div>この構文シュガーの構成はバージョンによって若干異なります。関連するプラグインのバージョンは次のとおりです。使用: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;toolbar:false;">&quot;vue&quot;: &quot;^3.2.2&quot;, &quot;@vitejs/plugin-vue&quot;: &quot;^1.9.0&quot;, &quot;@vue/compiler-sfc&quot;: &quot;^3.2.5&quot;, &quot;vite&quot;: &quot;^2.6.13&quot;</pre><div class="contentsignin">ログイン後にコピー</div></div>

4. 画像を自動的にインポートする

Vue2

では、よく次のような画像を引用します:
<img :src="require(&#39;@/assets/image/logo.png&#39;)" />
ログイン後にコピー
しかし、

Vite

require は ではサポートされていないため、参照されるイメージは次のようになります:

<template>
  <img :src="Logo" />
</template>

<script setup>
import Logo from &#39;@/assets/image/logo.png&#39;
</script>
ログイン後にコピー

画像を使用するたびに、import## を行う必要があります。 # これは明らかに全員の釣りの時間を遅らせます。現時点では、vite-plugin-vue-images を使用して画像を自動的にインポートできます。

#インストール<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;toolbar:false;">npm i vite-plugin-vue-images -D</pre><div class="contentsignin">ログイン後にコピー</div></div>

#構成

// vite.config.ts
import { defineConfig } from &#39;vite&#39;
import ViteImages from &#39;vite-plugin-vue-images&#39;

export default defineConfig({
  plugins: [
    ViteImages({
      dirs: [&#39;src/assets/image&#39;] // 指明图片存放目录
    })
  ]
})
ログイン後にコピー

Use

<template>
  <!-- 直接使用 -->
  <img :src="Logo" />
</template>

<script setup>
// import Logo from &#39;@/assets/image/logo.png&#39;
</script>
ログイン後にコピー
5. .vue 接尾辞は無視してください

Vue2 を開発するときにファイルをインポートする人が多いと思います。 .vue 接尾辞は無視されます。ただし、Vite

では、.vue 接尾辞を無視するとエラーが発生します。

import Home from &#39;@/views/home&#39; // error
import Home from &#39;@/views/home.vue&#39; // ok
ログイン後にコピー
You Dada の回答によると、サフィックスを記述する要件は実際には意図的にこのように設計されており、誰もがこのように書くことが奨励されています。

しかし、本当に書きたくない場合は、公式サポートが提供されます。

// vite.config.ts
import { defineConfig } from &#39;vite&#39;

export default defineConfig({
  resolve: {
    extensions: [&#39;.js&#39;, &#39;.ts&#39;, &#39;.jsx&#39;, &#39;.tsx&#39;, &#39;.json&#39;, &#39;.vue&#39;]
  }
})
ログイン後にコピー

这里要注意,手动配置extensions要记得把其他类型的文件后缀也加上,因为其他类型如js等文件默认是可以忽略后缀导入的,不写上的话其他类型文件的导入就变成需要加后缀了。

虽然可以这么做,不过毕竟官方文档说了不建议忽略.vue后缀,所以建议大家在实际开发中还是老老实实写上.vue。

感谢

本次分享到这里就结束了,感谢您的阅读!予人玫瑰,手有余香,别忘了动动手指点个赞

本文如果有什么错误或不足,也欢迎评论区指正!

【相关推荐:vue.js视频教程

以上がVue3の開発効率を上げる5つの豆知識【整理・共有】の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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