Vueとwebpackの基本的な使用紹介
11245 ワード
MVVM
Vueの命令
基本概念:
Vueの中の命令はすべてv-xxで始まるので、命令の作用、最終的にすべてデータを持って、私達の命令のラベルの中の内容をレンダリングします
v-text/v-html直接テキストを表示し、Webページv-bindデータバインドを表示して、私たちのページに表示される値を動的に(一方向データストリームの体現)一方向データストリームを表示します.モデルが変更されると、私たちのビューは変化します.
注意:
v-on:イベント処理
イベントをトリガーした後、オブジェクトの処理関数が必要です.
注意:
1、私たちがトリガしたイベント処理関数にパラメータがない場合、v-onに直接関数名を書くことができます(
v-model双方向データバインド
モデル----->ビュー----->モデル
注意点:
1、すべてのhtml要素がv-modelを使用できるわけではありません.一般的には
v-if/v-show条件レンダリング
注意:
1、v-else要素はv-ifまたはv-else-if要素の後ろに続く必要があります.そうしないと認識されません.
v-if&v-show違い:v-ifが偽物の場合、dom要素v-showは作成されません.偽物の場合、dom要素が作成され、スタイルで非表示になります.
v-show初期化のレンダリング効率は低くなりますが、v-ifの切り替え効率は向上します.
v-ifは、スイッチング中に条件ブロック内のイベントリスナーとサブコンポーネントが適切に破棄され、再構築されることを保証するため、「真の」条件レンダリングです.v-ifも不活性です.初期レンダリング時に条件が偽の場合、条件が初めて真になるまで条件ブロックのレンダリングが開始されません.それに比べて、v-showはずっと簡単です.初期条件が何であれ、要素は常にレンダリングされ、CSSに基づいて簡単に切り替えるだけです.一般に、v-ifはより高いスイッチングオーバーヘッドを有し、v-showはより高い初期レンダリングオーバーヘッドを有する.したがって、非常に頻繁に切り替える必要がある場合は、v-showを用いるのが好ましい.実行時に条件が変更されない場合は、v-ifを使用するとよい.
v-forリストレンダリング
誰に作用するか、v-forを誰に書くか.
Vueコンポーネント(Component)
基本概念:コンポーネントはHTML要素を拡張し、再利用可能なコードをカプセル化することができます.同じ機能のコードを別のコンポーネントに抽出し、すべてのコードをid=appのdivに書かないでください.コンポーネントはカスタム要素です.
Vueコンポーネント定義の方法:5種類
1、先に定義して、更に2、定義して、登録して1歩所定の位置に着く3、私達のコンポーネントの内容のコードを定義して
View id=app div
VM new Vue({})
Model Vue data:{}
Vueの命令
基本概念:
Vueの中の命令はすべてv-xxで始まるので、命令の作用、最終的にすべてデータを持って、私達の命令のラベルの中の内容をレンダリングします
{{}}
補間式v-text/v-html直接テキストを表示し、Webページv-bindデータバインドを表示して、私たちのページに表示される値を動的に(一方向データストリームの体現)一方向データストリームを表示します.モデルが変更されると、私たちのビューは変化します.
注意:
v-bind `:`
:
v-bind:href="xxx"
:href="xxx"
v-on:イベント処理
イベントをトリガーした後、オブジェクトの処理関数が必要です.
注意:
1、私たちがトリガしたイベント処理関数にパラメータがない場合、v-onに直接関数名を書くことができます(
()
呼び出しを加えてもいいです)2、イベントをトリガした処理関数にパラメータがある場合、( )
3、v-onを省略することはできません:@
4と簡単に書くことができます.イベントはclickだけではありません.イベントタイプの表を参照してください.https://developer.mozilla.org/zh-CN/docs/Web/Events v-model双方向データバインド
モデル----->ビュー----->モデル
注意点:
1、すべてのhtml要素がv-modelを使用できるわけではありません.一般的には
value
の値を持つhtml要素が2、双方向データでバインドできる原理Angular:汚値検査Vue:属性検査/ハイジャックhttp://www.cnblogs.com/kidney/p/6052935.html https://segmentfault.com/a/1190000006599500 v-if/v-show条件レンダリング
注意:
1、v-else要素はv-ifまたはv-else-if要素の後ろに続く必要があります.そうしないと認識されません.
v-if&v-show違い:v-ifが偽物の場合、dom要素v-showは作成されません.偽物の場合、dom要素が作成され、スタイルで非表示になります.
v-show初期化のレンダリング効率は低くなりますが、v-ifの切り替え効率は向上します.
v-ifは、スイッチング中に条件ブロック内のイベントリスナーとサブコンポーネントが適切に破棄され、再構築されることを保証するため、「真の」条件レンダリングです.v-ifも不活性です.初期レンダリング時に条件が偽の場合、条件が初めて真になるまで条件ブロックのレンダリングが開始されません.それに比べて、v-showはずっと簡単です.初期条件が何であれ、要素は常にレンダリングされ、CSSに基づいて簡単に切り替えるだけです.一般に、v-ifはより高いスイッチングオーバーヘッドを有し、v-showはより高い初期レンダリングオーバーヘッドを有する.したがって、非常に頻繁に切り替える必要がある場合は、v-showを用いるのが好ましい.実行時に条件が変更されない場合は、v-ifを使用するとよい.
v-forリストレンダリング
誰に作用するか、v-forを誰に書くか.
v-for="person in persons"
v-for="(person,index) in persons"
Vueコンポーネント(Component)
基本概念:コンポーネントはHTML要素を拡張し、再利用可能なコードをカプセル化することができます.同じ機能のコードを別のコンポーネントに抽出し、すべてのコードをid=appのdivに書かないでください.コンポーネントはカスタム要素です.
Vueコンポーネント定義の方法:5種類
1、先に定義して、更に2、定義して、登録して1歩所定の位置に着く3、私達のコンポーネントの内容のコードを定義して
4、
の に き して5、3 (よく う): html ,Vue
:
1、コンポーネントにはルート 2、コンポーネントのモデルdata、 が
フィルタ
:サーバから されたデータをフィルタリングしてからレンダリング :momentjs
プライベートフィルタは のVueインスタンスでのみ されますfilters:{
toUC:function(input){
return input.toUpperCase()
}
}
```
Vue
Vue.filter('toUC',function(input){ return input.toUpperCase(); }) ```
:filters 、methods 、filters の には り が です.
ルーティング(vue-router)
フロントエンドのルーティング(Angular,Vue,React)の :あるルーティングがトリガーされた 、どのコンポーネントを のページに するかを する
ドキュメント:https://router.vuejs.org/zh-cn/essentials/getting-started.html
:1、ジャンプに するコンポーネントが ずあること( にコンポーネントを し、 しない)
2、コンポーネントに する ng-view / router-view
3、ルーティングとコンポーネントの を する(コンポーネントの とルーティングとコンポーネントのオブジェクト の )
4、ルーティングとVueインスタンスの を する
5、 のルートを して、router-link
:1、vueを にインポートする があります.js、vue-routerをインポートします.js 2、2つの きなhtml 1、ジャンプのハイパーリンク
2、 コンポーネントのプレースホルダ
js 1、コンポーネントの 、または コンポーネントのインポート
2、ルーティングとコンポーネントの の (ルーティングルールの )
3、 したルートをVueインスタンスに する(ルートオブジェクトをVueインスタンスに れて する)
:1、 たちが したルートを、 たちのルートインスタンスnew Vue({router:xxxx})2に することを れないでください. ず たちのコンポーネントが れる があります.
:1、 たちのアプリケーションを くと、デフォルトのコンポーネントを させますか?ルーティングルールを する では、 の/
を して したルーティングにリダイレクトします.{path:'/',redirect:'/newslist'},
```
------------------
##### (vue-resource)
Vue
vue-resource
:
https://github.com/pagekit/vue-resource/blob/develop/docs/http.md
:
1、 vue.js, vue-resource.js
2、
this.$http.get
this.$http.post(url,body,{emulateJSON:true})
this.$http.jsonp
:
post :emulateJSON:true
this.$http.post(url, {username:'afdaf',password:'lisi'}, {emulateJSON:true}) ```
Vuexの
1、 たちのプロジェクトの のグローバル のデータに して、2、 のコンポーネントの でデータの ( )を うが、 イベントバスとの いは、Vuexは のコンポーネントにデータを するのではなく、 したデータを の に れ、 のコンポーネントが する があるときに に りに くことである.
Vuexのコアコンセプトstate: , data(){return {}}
getters: state ,
Mutations : state ,
Actions: state ,
1、Vuexを してもコンポーネント (ローカル)のデータを できるexport default{
data(){
return {}
}
}
```
2、 , Vuex state
3、Vuex
###
1、
CDN, Vue
Webpack npm
2、
demo(html)
###
:
https://cn.vuejs.org/v2/guide/computed.html
Vue , methods
computed:{ } ( methods )
1、 , ,
2、methods , ,
3、 , , , , methods
4、 , ,
## Vue.js devtools Vue
: Vue ,
:
,
:
https://stackoverflow.com/questions/43781351/vue-js-is-detected-on-this-page-devtools-inspection-is-not-available-because-it
## Webpack
#####
Webpack
。
。
, 。
loader , ,
CommonJs 、 AMD 、 ES6 、CSS、 、
JSON、Coffeescript、 LESS 。
,
, webpack,
, , ,
npm i webpack webpack-dev-server -g
:
Webpack2.x , , es6 es5
#####
:
1、webpack (
),
2、 webpack
( bundle.js)
3、 , html,
index.html, bundle.js
1、 webpack webpack
(bundle.js) ,
css
1、
npm i style-loader css-loader --save-dev
##### Webpack
:
https://doc.webpack-china.org/concepts/output/
Loader:
webpack js , Loade https://doc.webpack-china.org/loaders/
:css: style-loader,css-loader
1.x 2.x
1.x loader !style!css
2.x !style-loader!css-loader
:1.x 2.x loader
https://webpack.js.org/guides/migrating/#automatic-loader-module-name-extension-removed
plugins:
:
:
webpack , 。
:
1、 , webpack
2、 npm html-webpack-plugin
3、 index.html
var HtmlWebpackPlugin = require('html-webpack-plugin') 4、 webpack.confi.js
plugins:[new HtmlWebpackPlugin({filename:'index.html',//パラメータファイルで された ファイル template:'./template.html'//ファイルのパス })``
: のいくつかはwebpackです.config.jsの で する 、すべて で、くれぐれもネストしないでください、 の の で きました
Webpackプロファイル(webpack.config.js)
: に いパッケージ を し、エラーを らす
:1、 たちのプロジェクトルートの でjsファイルwebpackを します.config.js
2、 entry【 】、output【 】 loader、 :https://webpack.js.org/guides/migrating/#automatic-loader-module-name-extension-removed
3、 はただ の で、プロジェクトのルートディレクトリの で のwebpack
を するだけでよい
:1、 のすべてのコードはmoduleに かれています.exports={}2、 のコードはコアコンセプトのコードのみ
Webpack の の
にwebpackの にいくつかの webpack --progress
【コンソール パッケージの 】webpack -p
【 js、ここには_
しかありません. に の でwebpackローカルパッケージにuglifyの が いています】webpack --config
webpackがパッケージするファイル を します
:1、 の の は、-p【 】を いて、2つの_
です.
2、 の--progree -p --config
は、 がなくて、 から へとつなげてもいいし、 つなげてもいいです.
3、--progress -p --config
、webpack.config.js
に できない
でパッケージ を させるには
1、Webpackコマンドを するとき、 ろに--watchを ける
2、webpack-dev-server : , ,
webpack-dev-server
:webpack-dev-serverというグローバルパッケージをグローバルにインストールする:npm i webpack-dev-server -g
も な い :1、webpack-dev-server--progress-p--config xxxを する
な い :(ポート を したい、ブラウザを に く、ホット したい)
webpack-dev-server --progress --port 3008 --open
--hot --inline
【ホットアップデート】
:1、webpack-dev-serverパッケージbundle.jsはメモリの で2、 が するhtmlファイルで、indexを ばなければなりません.html 3、 たちはindexにいます.htmlパッケージされたbundleをインポートします.jsはこう かなければならない
```
4、
##### webpack-dev-server webpack
1、
: webpack-dev-server
:webpack
2、
webpack-dev-server, , ,
bundle.js【 】
webpack , bundle.js
3、 webpack ,webpack-dev-server ,
webpack
`webpack --progress -p xxx`
`webpack-dev-server --progress -p xxx`
------------------
## webpack Vue
#####
src :
main.js (
)
App.vue ,
( )
package.json ,
package.json :` npm init -y `
##### webpack.config.js
entry: './src/main.js', // 【 】
output: {// 【 】
path: __dirname+'/dist',
filename: 'bundle.js'
}
```
Appでvueにコードを く
```
##### main
1、 vue
npm i vue --save
2、 vue
`import Vue from 'vue' //const Vue = require('vue')`
3、 , , App.vue
new Vue({
el:"#app",
render:function(createElement){
return createElement(App) // Vue ,
, App.vue
}// id=app div
})
```
Webpackのサポートをしましょう.vueファイルのパッケージ
:https://doc.webpack-china.org/loaders/
1、vue-loader npm i vue-loader vue-template-compiler css-loader --save-dev
をインストール、webpack.config.js module: { //Loader
rules: [
{
test: /\.vue$/, // .vue
use: [
{
loader: "vue-loader"
}
]
}
]
}
```
#####
`webpack-dev-server --progress --port 6008 --open`
package.json
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "webpack-dev-server --progress --port 6008 --open"
},
```
npm run dev