keyup
進行文本框的監聽<!DOCTYPE html>
<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>Document</title>
<script src='https://cdn.bootcss.com/vue/2.6.10/vue.min.js'></script>
</head>
<body>
<div id="app">
<!-- 分析: -->
<!-- 1. 咱們要監聽到 文本框數據的改變,這樣才能知道 何時去拼接出一個fullname -->
<!-- 2. 如何監聽到文本框數據的改變?? -->
<input type="text" v-model="firstname" @keyup="getFullname"> +
<input type="text" v-model="lastname" @keyup="getFullname"> =
<input type="text" v-model="fullname">
</div>
<script> var vm = new Vue({ el: '#app', data() { return { firstname: '', lastname: '', fullname: '' } }, methods: { getFullname() { this.fullname = this.firstname + '-' + this.lastname } } }); </script>
</body>
</html>
複製代碼
watch
屬性來進行監聽Vue實例中的數據改變<!DOCTYPE html>
<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>Document</title>
<script src='https://cdn.bootcss.com/vue/2.6.10/vue.min.js'></script>
</head>
<body>
<div id="app">
<input type="text" v-model="firstname"> +
<input type="text" v-model="lastname"> =
<input type="text" v-model="fullname">
</div>
<script> var vm = new Vue({ el: '#app', data() { return { firstname: '', lastname: '', fullname: '' } }, methods: { getFullname() { this.fullname = this.firstname + '-' + this.lastname } }, watch: {//使用這個屬性,能夠監視data中指定數據的變化,而後出發這個watch中對應function處理函數 firstname(newVal, oldVal){ // console.log("監視到了firstname的變化") this.getFullname() // console.log(newVal + '-----' + oldVal) }, lastname(){ this.getFullname() } }, }); </script>
</body>
</html>
複製代碼
watch
能夠監聽路由的改變<!DOCTYPE html>
<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>Document</title>
<script src='https://cdn.bootcss.com/vue/2.6.10/vue.min.js'></script>
<!-- 1. 安裝vue-router路由模塊 -->
<script src="https://cdn.bootcss.com/vue-router/3.1.3/vue-router.min.js"></script>
</head>
<body>
<div id="app">
<router-link to="login">登錄</router-link>
<router-link to="register">註冊</router-link>
<router-view></router-view>
</div>
<script> let login = { template:'<h1>這是登陸組件</h1>' } let register = { template:'<h1>這是註冊組件</h1>' } const router = new VueRouter({ routes:[ {path:'/', component:login}, {path:'/login', component:login}, {path:'/register', component:register}, ] }) var vm=new Vue({ el:'#app', data () { return{ } }, methods:{ }, router, watch: { // this.$router.path '$route.path'(newVal, oldVal){ // console.log(newVal + '-----' + oldVal) if(newVal == '/login'){ console.log("歡迎進入登陸頁面") }else if(newVal == '/register'){ console.log("歡迎進入註冊頁面") } } }, }); </script>
</body>
</html>
複製代碼
computed
計算屬性來監聽數據的值計算屬性:在computer中,能夠定義一些屬性,這些屬性,叫作【計算屬性】,計算屬性的本質就是一個方法,只不過咱們在使用這些計算屬性的時候,是把他們的名稱直接當作屬性來使用的,並不會把計算屬性當作方法來使用 javascript
<!DOCTYPE html>
<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>Document</title>
<script src='https://cdn.bootcss.com/vue/2.6.10/vue.min.js'></script>
</head>
<body>
<div id="app">
<input type="text" v-model="firstname"> +
<input type="text" v-model="lastname"> =
<input type="text" v-model="fullname">
<p>{{fullname}}</p>
<p>{{fullname}}</p>
<p>{{fullname}}</p>
</div>
<script> var vm = new Vue({ el: '#app', data() { return { firstname: '', lastname: '', } }, methods: { }, computed: { 'fullname'(){ console.log('ok') return this.firstname + '-' + this.lastname } }, }); </script>
</body>
</html>
複製代碼
computed
使用的一些注意事項watch
、computed
和methods
之間的對比computed
屬性的結果或被緩存,除非依賴的響應式屬性變化纔會從新計算。主要當作屬性來使用methods
方法表示一個具體的操做,主要書寫業務邏輯watch
一個對象,鍵是須要觀察表達式,值是對應回調函數。主要用來監聽某些特定數據的變化,從而進行某些具體的業務邏輯操做;能夠看做是computed
與methods
的結合體;nrm
的安裝使用做用:提供了一些最經常使用的NPM包鏡像地址,可以讓咱們快速的切換安裝包時候的服務器地址; 什麼是鏡像:原來包剛一開始只是存在於國外的NPM服務器,可是因爲網絡緣由,常常訪問不到,這時候,咱們能夠再國內,建立一個和官網徹底同樣的NPM服務器,只不過,數據都是從人家那裏拿過來的,除此這外,使用方式徹底同樣。css
npm i nrm -g
全局安裝nrm
包nrm ls
查看當前全部可用的鏡像源地址以及當前所使用的鏡像源地址nrm use npm
或nrm user taobao
切換不一樣的鏡像源地址注意:nrm只是單純的提供了幾個經常使用的下載包URL地址,而且可以讓咱們在這幾個地址之間,很方便的切換,可是,咱們每次安裝包的時候,使用的裝包工具,都是npmhtml
webpack是前端的一個項目構建工具一前端
task
任務的。npm i webpack -g
全局安裝webpack,這樣就能在全局使用webpack的命令npm i webpack --save-dev
安裝到項目依賴中// 這是main.js是咱們項目的js入口文件
//1.導入Jquery
//import *** from *** 是ES6中導入模塊的方式
//因爲ES6的語法過高級了,瀏覽器解析不了,因此這一行執行會報錯
import $ from 'jquery'
$(function(){
$('li:odd').css('backgroundColor', 'yellow')
$('li:even').css('backgroundColor', function(){
return '#' + 'D97634'
})
})
複製代碼
const path = require('path')
//這個配置文件,其實就是一個JS文件,經過Node中的模塊操做,向外暴露了一個配置對象
module.exports = {
//在配置文件中,須要手動指定入口和出口
entry: path.join(__dirname, './src/main.js'),//入口,表示要使用webpack打包哪一個文件
output:{
path:path.join(__dirname, './dist'), //指定打包好的文件,輸出到哪一個目錄中去
filename:'bundle.js' //這是指定輸出的文件的名稱
}
}
複製代碼
webpack.config.js
的配置文件由於咱們在編寫代碼並保存以後,想要看到效果的話還須要在終端輸入webpack
來運行項目,每次都須要執行這種操做,顯得太麻煩了,因此咱們使用webpack-dev-server
來進行自動的打包編譯vue
npm i webpack-dev-server -D
,把這個工具安裝到項目的本地開發依賴package.json
配置項的scripts
中進行添加"dev":"webpack-dev-server"
配置項npm run dev
命令來開啓這個webpack-dev-server
工具<!-- <script src="../dist/bundle.js"></script> -->
<script src="/bundle.js"></script>
複製代碼
webpack-dev-server
在配置項中添加配置參數npm run dev
後直接打開網頁,不須要咱們手動去打開html-webpack-plugin
插件配置啓動頁面因爲使用--contentBase
指令的過程比較繁瑣,須要指定啓動的目錄,同時還須要修改index.html中script標籤的src屬性,因此推薦使用html-webpack-plugin
插件配置啓動頁面。java
npm i html-webpack-plugin --save-dev
安裝到開發依賴webpack.config.js
配置文件以下://導入處理路徑的模塊
const path = require('path')
//導入自動生成HTML文件的插件
var htmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
entry: path.join(__dirname, './src/main.js'),//項目入口文件
output: {//配置輸出項
path: path.join(__dirname, './dist'), //配置輸出的路徑
filename: 'bundle.js' //配置輸出的文件名
},
plugins:[
new htmlWebpackPlugin({
template:path.resolve(__dirname, './src/index.html'),//模板路徑
filename:'index.html' //自動生成的HTML文件的名稱
})
]
}
複製代碼
package.json
中script
節點中的dev指令以下:"dev":"webpack-dev-server"
複製代碼
html-webpack-plugin
插件會自動把bundle.js注入到index.html頁面中npm i style-loader css-loader --save-dev
webpack.config.js
這個配置文件:module:{//用來配置第三方loader模塊的
rules:[
{test: /\.css$/, use:['style-loader', 'css-loader']}//處理css文件的規則
]
}
複製代碼
use
表示使用哪些模塊來處理test
所匹配到的文件;use
中相關loader模塊的調用順序是從後向前調用的;npm i less-loader less -D
webpack.config.js
這個配置文件{test: /\.less$/, use:['style-loader', 'css-loader', 'less-loader']}
複製代碼
npm i sass-loader node-sass --save-dev
webpack.config.js
中添加處理sass文件的loader模塊:{test: /\.sass$/, use:['style-loader', 'css-loader', 'sass-loader']}
複製代碼