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']}
复制代码