ホームページ > ウェブフロントエンド > jsチュートリアル > vue-cli 3.0 の新機能を詳しく説明します (詳細なチュートリアル)

vue-cli 3.0 の新機能を詳しく説明します (詳細なチュートリアル)

亚连
リリース: 2018-06-04 10:48:55
オリジナル
4612 人が閲覧しました

vue-cli は、vue プロジェクトを迅速に開発するために公式 vue チームによって立ち上げられたビルド ツールで、すぐに使用でき、シンプルなカスタム構成やその他の機能を提供します。この記事では主に vue-cli 3.0 の新機能を素早く理解する方法を紹介します。必要な方は参考にしてください。

vue-cli は、vue プロジェクトを迅速に開発するために vue の公式チームによって立ち上げられた構築ツールです。箱から出してすぐに使用でき、簡単なカスタム構成やその他の機能を提供します。 vue-cli の 2.0 から 3.0 へのアップグレードについては、新たに述べるべきことが多すぎますが、この記事のすべての内容をリストすることは不可能です。この記事は、2.0 のアップグレード機能を比較するためのガイドとして役立ち、すぐに説明できます。 3.0 アップデートの内容を理解します。

1. プロジェクトの作成:

プロジェクト作成コマンドの変更。

vue create my-project
ログイン後にコピー

バージョン 3.0 には、デフォルトのプリセット構成とユーザー定義の構成が含まれています。

カスタム機能構成には次の機能が含まれます:

  • TypeScript

  • Progressive Web App (PWA) Support

  • Router

  • Vuex

  • CSS プリプロセッサ

  • リンター /フォーマッタ

  • 単体テスト

  • E2E テスト

バージョン 3.0 では、TypeScript と PWA のサポートが直接追加されていることがわかります。

CSS 前処理を選択すると、どのプリプロセッサを選択するように求められます:

  • SCSS/SASS

  • LESS

  • Stylus

と eslint 仕様の選択:

    ESLint 付きエラー防止のみ
  • ESLint + Airbnb config
  • ESLint + Standard config
  • ESLint + Prettier

  • 最後に、Babel、PostCSS、ESLint およびその他のカスタム設定の保存場所を選択します。

専用の設定ファイル内
  • package.json内
  • 選択後、上記の設定をデフォルト値として保存でき、今後vue-cliを通じて作成される他のプロジェクトはその設定を使用します。

2. プロジェクト ディレクトリ構造の変更:

比較したところ、vue-cli 3.0 のデフォルトのプロジェクト ディレクトリは 2.0 のそれよりもはるかに単純であることがわかりました。

設定ファイルのディレクトリ、config フォルダー、および build フォルダーを削除しました。
  • 静的フォルダーが削除され、パブリックフォルダーが追加され、index.html がパブリックに移動されました。
  • ビューコンポーネントとパブリックコンポーネントを分類するために、srcフォルダーにビューフォルダーを追加しました。

3. 設定ファイルのディレクトリを削除した後に設定をカスタマイズする方法。

バージョン 3.0 以降、vue.config.js ファイルをプロジェクトのルート ディレクトリに配置すると、プロジェクトのさまざまな側面を構成できるようになります。

vue.config.js はオブジェクトをエクスポートする必要があります。例:

module.exports = {
 baseUrl: '/',
 outputDir: 'dist',
 lintOnSave: true,
 compiler: false,
 // 调整内部的 webpack 配置。
 // 查阅 https://github.com/vuejs/vue-doc-zh-cn/vue-cli/webpack.md
 chainWebpack: () => {},
 configureWebpack: () => {},
 // 配置 webpack-dev-server 行为。
 devServer: {
  open: process.platform === 'darwin',
  host: '0.0.0.0',
  port: 8080,
  https: false,
  hotOnly: false,
  // 查阅 https://github.com/vuejs/vue-doc-zh-cn/vue-cli/cli-service.md#配置代理
  proxy: null, // string | Object
  before: app => {}
 }
 ....
}
ログイン後にコピー

Webpack 設定を調整する最も簡単な方法は、vue.config.js </code の <code>configureWebpack です。 > code> オプションは、webpack-merge によって最終的な Webpack 設定にマージされるオブジェクトを提供します。

サンプルコード: プラグインを追加するように webpack を設定します。

vue.config.js 中的 configureWebpack 选项提供一个对象,该对象将会被 webpack-merge 合并入最终的 webpack 配置。

示例代码:配置 webpack 新增一个插件。

// vue.config.js
module.exports = {
 configureWebpack: {
  plugins: [
   new MyAwesomeWebpackPlugin()
  ]
 }
}
ログイン後にコピー

修改插件选项的参数你需要熟悉 webpack-chain

import { Component, Emit, Inject, Model, Prop, Provide, Vue, Watch } from &#39;vue-property-decorator&#39;
const s = Symbol(&#39;baz&#39;)
@Component
export class MyComponent extends Vue {
 @Emit()
 addToCount(n: number){ this.count += n }
 @Emit(&#39;reset&#39;)
 resetCount(){ this.count = 0 }
 @Inject() foo: string
 @Inject(&#39;bar&#39;) bar: string
 @Inject(s) baz: string
 @Model(&#39;change&#39;) checked: boolean
 @Prop()
 propA: number
 @Prop({ default: &#39;default value&#39; })
 propB: string
 @Prop([String, Boolean])
 propC: string | boolean
 @Provide() foo = &#39;foo&#39;
 @Provide(&#39;bar&#39;) baz = &#39;bar&#39;
 @Watch(&#39;child&#39;)
 onChildChanged(val: string, oldVal: string) { }
 @Watch(&#39;person&#39;, { immediate: true, deep: true })
 onPersonChanged(val: Person, oldVal: Person) { }
}
ログイン後にコピー
ログイン後にコピー



プラグイン オプションのパラメータの変更 このオプションの完全な設定を評価する方法を理解するには、 webpack-chain API に精通し、ソース コードを読む必要がありますが、これにより、Webpack 設定で値を直接変更するだけでなく、より柔軟で安全な方法が得られます。

// vue.config.js
module.exports = {
chainWebpack: config => {
config
.plugin('html')
.tap(args => {
return [/* new args to html-webpack-plugin のコンストラクターに渡します */]

})

}

}

注: Webpack 構成を変更すると、vue Inspection > を通じて完全な構成リストを出力できることに注意してください。有効な Webpack 構成ファイルではありませんが、レビュー用にシリアル化された形式です。 詳細を表示

4. ESLint、Babel、ブラウザリスト関連の設定:

Babel は、.babelrc または package.json の babel フィールドを通じて設定できます。

ESLint は、.eslintrc または package.json ファイルの eslintConfig フィールドを通じて構成できます。 package.json のブラウザリスト フィールドがプロジェクトのターゲット ブラウザのサポート範囲を指定していることに気づいたかもしれません。

🎜5.公開ディレクトリの調整について。 🎜🎜🎜

vue 约定 public/index.html 作为入口模板会通过 html-webpack-plugin 插件处理。在构建过程中,资源链接将会自动注入其中。除此之外,vue-cli 也自动注入资源提示( preload/prefetch ), 在启用 PWA 插件时注入 manifest/icon 链接, 并且引入(inlines) webpack runtime / chunk manifest 清单已获得最佳性能。

在 JavaScript 或者 SCSS 中通过 相对路径 引用的资源会经过 webpack 处理。放置在 public 文件的资源可以通过绝对路径引用,这些资源将会被复制,而不经过 webpack 处理。

小提示:图片最好使用相对路径经过 webpack 处理,这样可以避免很多因为修改网站根目录导致的图片404问题。

六. 新增功能:

1. 对 TypeScript 的支持。

在 3.0 版本中,选择启用 TypeScript 语法后,vue 组件的书写格式有特定的规范。

示例代码:

import { Component, Emit, Inject, Model, Prop, Provide, Vue, Watch } from &#39;vue-property-decorator&#39;
const s = Symbol(&#39;baz&#39;)
@Component
export class MyComponent extends Vue {
 @Emit()
 addToCount(n: number){ this.count += n }
 @Emit(&#39;reset&#39;)
 resetCount(){ this.count = 0 }
 @Inject() foo: string
 @Inject(&#39;bar&#39;) bar: string
 @Inject(s) baz: string
 @Model(&#39;change&#39;) checked: boolean
 @Prop()
 propA: number
 @Prop({ default: &#39;default value&#39; })
 propB: string
 @Prop([String, Boolean])
 propC: string | boolean
 @Provide() foo = &#39;foo&#39;
 @Provide(&#39;bar&#39;) baz = &#39;bar&#39;
 @Watch(&#39;child&#39;)
 onChildChanged(val: string, oldVal: string) { }
 @Watch(&#39;person&#39;, { immediate: true, deep: true })
 onPersonChanged(val: Person, oldVal: Person) { }
}
ログイン後にコピー
ログイン後にコピー

以上代码相当于

const s = Symbol(&#39;baz&#39;)
export const MyComponent = Vue.extend({
 name: &#39;MyComponent&#39;,
 inject: {
  foo: &#39;foo&#39;,
  bar: &#39;bar&#39;,
  [s]: s
 },
 model: {
  prop: &#39;checked&#39;,
  event: &#39;change&#39;
 },
 props: {
  checked: Boolean,
  propA: Number,
  propB: {
   type: String,
   default: &#39;default value&#39;
  },
  propC: [String, Boolean],
 },
 data () {
  return {
   foo: &#39;foo&#39;,
   baz: &#39;bar&#39;
  }
 },
 provide () {
  return {
   foo: this.foo,
   bar: this.baz
  }
 },
 methods: {
  addToCount(n){
   this.count += n
   this.$emit("add-to-count", n)
  },
  resetCount(){
   this.count = 0
   this.$emit("reset")
  },
  onChildChanged(val, oldVal) { },
  onPersonChanged(val, oldVal) { }
 },
 watch: {
  &#39;child&#39;: {
   handler: &#39;onChildChanged&#39;,
   immediate: false,
   deep: false
  },
  &#39;person&#39;: {
   handler: &#39;onPersonChanged&#39;,
   immediate: true,
   deep: true
  }
 }
})
ログイン後にコピー

更多详细内容请关注 这里 ;

2. 对 PWA 的支持。

当我们选择启用 PWA 功能时,在打包生成的代码时会默认生成 service-worker.js 和 manifest.json 相关文件。如果你不了解 PWA, 点击这里查看 ;


需要注意的是 在 manifest.json 生成的图标信息,可以在 public/img 目录下替换。

默认情况 service-worker 采用的是 precache ,可以通过配置 pwa.workboxPluginMode 自定义缓存策略。详情

配置示例

// Inside vue.config.js
module.exports = {
 // ...其它 vue-cli 插件选项...
 pwa: {
  workboxPluginMode: &#39;InjectManifest&#39;,
  workboxOptions: {
   // swSrc 中 InjectManifest 模式下是必填的。
   swSrc: &#39;dev/sw.js&#39;,
   // ...其它 Workbox 选项...
  },
 },
};
ログイン後にコピー

总结:

vue-cli 致力于将 Vue 生态中的工具基础标准化。它确保了各种构建工具能够基于智能的默认配置即可平稳衔接,这样你可以专注在编写你的应用上,而不必花好几天去纠结配置的问题。与此同时,它也为每个工具提供了调整配置的灵活性。

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

在angularjs中使用select 赋值 ng-options配置方法该怎么做?

在AngularJS中使用select加载数据选中默认值的方法该怎么处理?

怎样在vue中使用ts(详细教程)

以上がvue-cli 3.0 の新機能を詳しく説明します (詳細なチュートリアル)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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