Webフロントエンド学習ノート——WebpackはVueJSと組み合わせて、Mint-UI、MUI
42247 ワード
注意:
普通のページでレンダリングコンポーネントを使う運転 実行 実行 は は、 作成 は は、 は、 を導入するは矢印関数を使用する. vueコンポーネントページでは、vue-routerルーティングモジュールを統合します.
vue-router公式サイトルートモジュールを導入する: ルーティングモジュールのインストール: ディスプレイが必要なコンポーネントを導入する: ルートオブジェクトを作成します. は、ルートオブジェクトをVueのインスタンスにマウントする: App.vueコンポーネントを改造し、templateに
引き抜きルートは別のモジュールです. main.js router.js App.vue login.vue
Github倉庫保管住所
Mint-UI公式文書すべてのMintUIコンポーネントを導入する: スタイルシートの導入: は、ビンUI中のButtonボタンとToast弾枠提示をvueで使用する. 使用例: main.js App.vue
注意:MUIはMint-UIと違って、MUIは開発された一連の良いコードセグメントだけで、中にはセットになっているスタイル、サポートされているHTMLコードセグメントが提供されています.Bootstrapと似ています.Mint-UIは、本物のコンポーネントライブラリであり、Vue技術を用いてパッケージ化されたセットのコンポーネントであり、シームレスなVUEプロジェクトと統合開発が可能である.だから、体験から言えば、Mint-UI体験がもっといいです.これは他の人が開発してくれた既存のVueコンポーネントです.体験から言えば、MUIとBootstrapは似ています.理論的には、どの項目もMUIまたはBootstrapを使用することができますが、MInt-UIはVueプロジェクトにのみ適用されます.
注意:MUIはnpmでダウンロードできません.自分でマニュアルでgithubから既製のカバンをダウンロードして、自分で解凍して、マニュアルでプロジェクトにコピーして使います.
公式ホームページ
文書の住所 MUIのスタイルテーブルを導入する: は、 は、公的に提供された文書およびexampleに基づいて、関連するコンポーネント を使用することを試みる.
npm i node-sass -D
を使って入れられない場合があります.cnpm i node-sass -D
を使用しなければなりません.普通のページでレンダリングコンポーネントを使う
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Documenttitle>
<script src="./lib/vue-2.4.0.js">script>
head>
<body>
<div id="app">
<p>444444p>
div>
<script>
var login = {
template: ' '
}
// Vue , ViewModel
var vm = new Vue({
el: '#app',
data: {},
methods: {},
render: function (createElements) { // createElements , , , html
return createElements(login)
// : return , el
}
});
script>
body>
html>
webpackに配置します.vueコンポーネントページの解析cnpm i vue -S
は、vueを運転依存にインストールする.cnpm i vue-loader vue-template-compiler -D
は、解析変換vueのパケットを開発依存にインストールする.cnpm i style-loader css-loader -D
は、解析変換CSSのパケットを開発依存にインストールします.webpack.config.js
において、以下のようなmodule
規則を追加する.
module: {
rules: [
{ test: /\.css$/, use: ['style-loader', 'css-loader'] },
{ test: /\.vue$/, use: 'vue-loader' }
]
}
// webpack Node , ,webpack , Node
var path = require('path')
// , , , bundle
// , , plugins
var htmlWebpackPlugin = require('html-webpack-plugin')
// webpack webpack-dev-server , , , , , , , ,
module.exports = {
entry: path.join(__dirname, './src/main.js'), //
output: { //
path: path.join(__dirname, './dist'), //
filename: 'bundle.js' //
},
plugins: [ // webpack
new htmlWebpackPlugin({
template: path.join(__dirname, './src/index.html'), //
filename: 'index.html' //
})
],
module: { // loader
rules: [ //
{ test: /\.css$/, use: ['style-loader', 'css-loader'] }, // CSS loader
{ test: /\.less$/, use: ['style-loader', 'css-loader', 'less-loader'] }, // less loader
{ test: /\.scss$/, use: ['style-loader', 'css-loader', 'sass-loader'] }, // scss loader
{ test: /\.(jpg|png|gif|bmp|jpeg)$/, use: 'url-loader?limit=7631&name=[hash:8]-[name].[ext]' }, // loader
// limit , , byte, , limit , base64 , limit , base64
{ test: /\.(ttf|eot|svg|woff|woff2)$/, use: 'url-loader' }, // loader
{ test: /\.js$/, use: 'babel-loader', exclude: /node_modules/ }, // Babel ES
{ test: /\.vue$/, use: 'vue-loader' } // .vue loader
]
},
resolve: {
alias: { // Vue
// "vue$": "vue/dist/vue.js"
}
}
}
login.vue
コンポーネントページを作成します.
, .vue --- {{msg}}
export default {
data() {
// : data function
return {
msg: "123"
};
},
methods: {
show() {
console.log(" login.vue show ");
}
}
};
main.js
エントランスファイル:// webpack , Vue
// vue:
// 1. script , vue
// 2. index , id app div
// 3. new Vue vm
// webpack Vue:
// : webpack , import Vue from 'vue' Vue , , runtime-only , ;
import Vue from 'vue'
// import Vue from '../node_modules/vue/dist/vue.js'
// :
// 1. node_modules
// 2. node_modules , vue
// 3. vue , package.json
// 4. package.json , main 【main , 】
// var login = {
// template: ' login , '
// }
// 1. login
import login from './login.vue'
// ,webpack .vue , loader:
// cnpm i vue-loader vue-template-compiler -D
// , loader { test:/\.vue$/, use: 'vue-loader' }
var vm = new Vue({
el: '#app',
data: {
msg: '123'
},
// components: {
// login
// }
/* render: function (createElements) { // webpack , vue, ,vm render
return createElements(login)
} */
render: c => c(login)
})
// : webpack vue :
// 1. vue : cnpm i vue -S
// 2. webpack , .vue , , loader cnpm i vue-loader vue-template-complier -D
// 3. main.js , vue import Vue from 'vue'
// 4. .vue , , : template script style
// 5. import login from './login.vue'
// 6. vm var vm = new Vue({ el: '#app', render: c => c(login) })
// 7. id app div , vm ;
webpackを使って構築したVueプロジェクトでテンプレートオブジェクトを使用しますか?webpack.config.js
にresolve
属性を追加します.resolve: {
alias: {
'vue$': 'vue/dist/vue.esm.js'
}
}
ES 6における文法使用のまとめexport default
およびexport
を使用してモジュール内のメンバを導出する.ES 5に対応するmodule.exports
とexport
import ** from **
およびimport ' '
を使用し、他のモジュールimport {a, b} from ' '
がある.(a, b)=> { return a-b; }
vue-router公式サイト
import VueRouter from 'vue-router'
Vue.use(VueRouter);
import login from './components/account/login.vue'
import register from './components/account/register.vue'
var router = new VueRouter({
routes: [
{ path: '/', redirect: '/login' },
{ path: '/login', component: login },
{ path: '/register', component: register }
]
});
var vm = new Vue({
el: '#app',
// render: c => { return c(App) }
render(c) {
return c(App);
},
router // , Vue
});
router-link
とrouter-view
を追加します.
コンポーネントのcssスコープ問題引き抜きルートは別のモジュールです.
import Vue from 'vue'
// 1. vue-router
import VueRouter from 'vue-router'
// 2. VueRouter
Vue.use(VueRouter)
// app
import app from './App.vue'
//
import router from './router.js'
var vm = new Vue({
el: '#app',
render: c => c(app), // render el , , router-view router-link el
router // 4. vm
})
// : App , VM render , , render , , el: '#app' ;
// Account GoodsList , , , , ;
import VueRouter from 'vue-router'
// Account
import account from './main/Account.vue'
import goodslist from './main/GoodsList.vue'
// Account
import login from './subcom/login.vue'
import register from './subcom/register.vue'
// 3.
var router = new VueRouter({
routes: [
// account goodslist
{
path: '/account',
component: account,
children: [
{ path: 'login', component: login },
{ path: 'register', component: register }
]
},
{ path: '/goodslist', component: goodslist }
]
})
//
export default router
App
Account
Goodslist
Account
お腹が空きましたか?Github倉庫保管住所
Mint-UI公式文書
import MintUI from 'mint-ui'
import 'mint-ui/lib/style.css'
Vue.use(MintUI)
primary
Mint-UIで必要に応じて導入される構成import Vue from 'vue'
// 1. vue-router
import VueRouter from 'vue-router'
// 2. VueRouter
Vue.use(VueRouter)
// bootstrap
import 'bootstrap/dist/css/bootstrap.css'
import './css/app.css'
// MUI , Bootstrap
import './lib/mui/css/mui.min.css'
// MIntUI
// Mint-UI
// import MintUI from 'mint-ui' //
// // node_modules
// import 'mint-ui/lib/style.css'
// // MintUI Vue
// Vue.use(MintUI) // ,
// Mint-UI
import { Button } from 'mint-ui'
// Vue.component
Vue.component(Button.name, Button)
// console.log(Button.name)
// app
import app from './App.vue'
//
import router from './router.js'
var vm = new Vue({
el: '#app',
render: c => c(app), // render el , , router-view router-link el
router // 4. vm
})
// : App , VM render , , render , , el: '#app' ;
// Account GoodsList , , , , ;
<template>
<div>
<h1> App </h1>
<!-- mt-button button -->
<mt-button type="danger" icon="more" @click="show">default</mt-button>
<mt-button type="danger" size="large" plain>default</mt-button>
<mt-button type="danger" size="small" disabled>default</mt-button>
<button type="button" class="mui-btn mui-btn-royal">
</button>
<!-- <mybtn type="primary">12345</mybtn> -->
<router-link to="/account">Account</router-link>
<router-link to="/goodslist">Goodslist</router-link>
<router-view></router-view>
</div>
</template>
<script>
// Toast
import { Toast } from "mint-ui";
export default {
data() {
return {
toastInstanse: null
};
},
created() {
this.getList();
},
methods: {
getList() {
// AJax
// , Toast ,
this.show();
setTimeout(() => {
// 3 , , Toast
this.toastInstanse.close();
}, 3000);
},
show() {
// Toast(" ");
this.toastInstanse = Toast({
message: " ",
duration: -1, // -1
position: "top",
iconClass: "glyphicon glyphicon-heart", //
className: "mytoast" // Toast ,
});
}
}
};
</script>
<style>
</style>
MUIコードセグメントを使う注意:MUIはMint-UIと違って、MUIは開発された一連の良いコードセグメントだけで、中にはセットになっているスタイル、サポートされているHTMLコードセグメントが提供されています.Bootstrapと似ています.Mint-UIは、本物のコンポーネントライブラリであり、Vue技術を用いてパッケージ化されたセットのコンポーネントであり、シームレスなVUEプロジェクトと統合開発が可能である.だから、体験から言えば、Mint-UI体験がもっといいです.これは他の人が開発してくれた既存のVueコンポーネントです.体験から言えば、MUIとBootstrapは似ています.理論的には、どの項目もMUIまたはBootstrapを使用することができますが、MInt-UIはVueプロジェクトにのみ適用されます.
注意:MUIはnpmでダウンロードできません.自分でマニュアルでgithubから既製のカバンをダウンロードして、自分で解凍して、マニュアルでプロジェクトにコピーして使います.
公式ホームページ
文書の住所
import '../lib/mui/css/mui.min.css'
webpack.config.js
に新たなloaderルールを追加する.
{ test: /\.(png|jpg|gif|ttf)$/, use: 'url-loader' }