Vue项目页面跳转,显示进度条
1.安装
1 | cnpm install --save nprogress |
2.在main.js中引入
1 | import NProgress from 'nprogress' |
3.在main.js中进行配置
1 | NProgress.configure({ |
4.在main.js中对路由钩子进行设置
1 | //当路由进入前 |
1.安装
1 | cnpm install --save nprogress |
2.在main.js中引入
1 | import NProgress from 'nprogress' |
3.在main.js中进行配置
1 | NProgress.configure({ |
4.在main.js中对路由钩子进行设置
1 | //当路由进入前 |
VUE是一套用于构建用户界面的渐进式框架
特点:
1 | let vm = new Vue({ |
通过Vue的实例对象vm可以直接访问data中声明的变量以及methods中声明的方法
在methods的方法中,this指向当前Vue实例对象也就是vm
Vue实例创建完成,但没有初始化完成
vue实例初始化完成,此时可以通过vue的实例对象访问data中的变量以及methods中的方法
完成数据绑定之前的准备工作,重点完成dom对象的编译,将dom对象绑定在this.$el上,data中的变量还未绑定在dom对象
data中的变量绑定到了dom对象,并且dom渲染到了网页中
data中的变量的值发生了变化
data中的变量的值的改变已经反映到了网页上
当前vue实例在销毁之前
当前vue实例已经销毁
1 | {{ message }} //常量 |
1 | v-html |
1 | v-on:eventType |
1 | <div @click="handler"></div> |
1 | <div @click="handler('a')"></div> |
1 | 1. 事件处理函数中没有参数 |
1 | 1) 事件修饰符 |
1 | <input type="text" v-bind:value="常量"> |
1 | 1) class |
1 | 将组件的信息配置到一个对象中,这个对象与Vue的参数基本一致 |
全局注册:所有的vue实例都可以调用注册组件
1 | Vue.component(组件名称,config) |
局部注册:只有当前vue实例才能调用注册的组件
1 | new Vue({ |
动态组件
1 | App.vue 根组件 |
1 | <组件名称></组件名称> |
1 | props:["title","type"] |
1 | 当用户操作子组件的时候,希望父组件的值得到改变 |
匿名插槽
1 | <my-test> |
具名插槽
1 | <!--vue2.0--> |
回调插槽(作用域插槽)
1 | function foo(a,b,c,callback){ |
创建并且初始化一个项目
1 | mkdir app01 |
自动测试
脚手架会提供一个静态服务器,自动对源码进行构建,然后部署到服务器上,这些操作不需要开发者操作,是自动完成的
自动打包
1 | .vue -> html/css/js |
安装nodejs
1 | linux 解压/opt ;配置环境变量 |
全局安装cnpm
1 | > npm install -g cnpm --registry=https://registry.npm.taobao.org |
全局安装 @vue/cli
1 | > npm install @vue/cli -g |
创建项目
1 | > vue create app01 |
启动服务进行测试
1 | > npm run served |
与data类似,模板中可以直接访问计算属性中定义的属性
1 | <p> {{name1}}</p> |
计算属性相对于方法来说,计算属性会缓存计算后的值,而不是每次调用都会执行计算属性对应的函数。当计算属性中的因变量发生变化的时候,计算属性的值会重新计算
1 | <template> |
用于监听data中值的变化,如果data中的值为对象,想要监听对象中属性的改变,那么必须deep:true
1 | new Vue({ |
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
1 | state 状态 (data) |
实例化
1 | let store = new Vuex.Store({ |
集成到vue中
1 | new Vue({ |
调用
1 | this.$store |
作用:
突变,用于修改state的唯一方式,并且其中只能包含同步操作。
定义
1 | mutations:{ |
调用
1 | 不能直接调用,必须通过store.commit方法来调用 |
辅助函数
1 | Vuex.mapMutations(["findAll","deleteById"]) |
作用:
动作,用于封装异步操作(异步操作的同步化),不能直接修改state,但是可以通过提交突变,间接修改state的值
定义:
1 | actions:{ |
映射辅助函数
1 | Vuex.mapActions(["",""]) |
作用
需要对state中的值经过一个计算,然后渲染到页面中的时候可以使用getters
定义
使用属性调用
1 | getters:{ |
使用方法调用
1 | getters :{ |
辅助函数
1 | Vuex.mapGetters([""]) |
安装
1 | cnpm install vue-router --save |
实例化vueRouter实例对象
1 | import Home from './pages/Home.vue' |
集成到vue中
1 | Vue.use(VueRouter) |
使用
1 | 将组件渲染到哪里? |
编程式导航
1 | router.push("/") |
1 | function* method_name(){ |
1 | //Generator调用的结果为迭代器 |
1 | 1. 可以生成迭代器对象 |
1 | 2. 利用Generator函数实现异步函数的同步化 |
Generator函数的语法糖(对于Generator函数简化和功能增强)
1 | async function foo(){ |
承诺对象,用于封装异步操作
1 | 状态: |
1 | 1. then(resolved_callback, rejected_callback) |
1 | 1. Promise.all() |
let arr = new Array(3,2)
1 | let str = "Hello World"; |
1 | let array_like = {"0" : "terry", "1" : "larry", length : 2} |
检测数组中是否包含某个元素,返回的是Boolean值
检测数组中是否包含某个值或符合某个条件,起筛选作用
举例:
1 | let arr = [1,2,3,4]; |
检测数组中是否包含某个值或符合某个条件,起筛选作用
举例:
1 | let arr = [1,2,3,4]; |
用一个元素填充数组
获取一个数组的所有索引
获取一个数组的所有值
获取一个数组的所有索引和值
1 | let arr = ["terry","larry","tom","jacky"]; |
无序不可以重复的集合【天然去重】(数组中的元素可以重复)
1 | 1. 实例化Set对象 |
key可以为任意数据对象(对象的key只能为字符串)
1 | 1. 实例化map对象 |
1 | ES5写法: |
箭头函数中的this的取值为该箭头函数外部函数的this,如果箭头函数没有外部函数,那么这个this就指向全局对象
1.极简模式
1 | item表示形参,xxx为返回结果(方法体中只有这一个表达式) |
2.普通模式
1 | 当形参有多个的时候,参数必须添加小括号,当方法体中有多个表达式,方法体一定要加大括号 |
3.this指向
1 | let obj = { |
1 | let name = "terry", |
实例可以调用该实例构造函数原型中的方法,但不能调用构造函数中的方法
类似于 ===
将o1,o2中可枚举的属性合并到target中,返回target
获取obj对象的原型也就是其构造函数的原型
为obj对象指定一个新的原型等价于obj.__proto__ = prototype
获取一个对象的所有属性名
获取一个对象的所有属性值
获取一个对象的所有属性名与属性值,并以[[],[]]方式显示
可以一次性从对象或者数组中获取多个值,并且把这些值赋值给不同的变量
1 | let {name,age} = {name:"terry", age:12}; //name:terry,age:12 |
1 | let [a,b,c] = [8,2,5]; //a:8, b:2, c:5 |
ES6是ES5的升级版,提供了简洁的语法和新的特性。ES6在浏览器上兼容性差一些,但是在nodejs上可以完全兼容
ES6 ——babel/webpack(js插件,运行在nodejs上)——-> ES5
ajax ——>根据数据创建虚拟的don节点,追加到页面中
这里以表格为例
ajax -> tr -> clone -> 数据填充
js文件、目录、目录嵌套都属于一个模块
1 | 1. module变量 |
1 | 2. require() |
1 | 3. node_modules |
1 | 4. 模块可以为一个目录 |
1 | 5. npm |
1 | 6. cnpm |
将es6转换为es5,但是注意一点:如果你写的js代码运行在nodejs【服务器,插件】上无需转换
1 | 1. 安装babel |
在普通用户下【不要使用超级管理员!!】使用如下命令下载mysql
sudo apt-get install mysql-server
根据提示输入用户名、密码即可【密码设置成好记忆的,以后会经常使用】
安装完成
使用如下命令行,并根据提示输入密码【密码就是你刚刚设置好的密码】,登陆进入MySQL
mysql -uroot -p
在MySQL中分别执行代码
GRANT ALL PRIVILEGES ON . TO root@’%’ IDENTIFIED BY ‘你刚刚设置好的密码’ with grant option;
执行完代码出现Query OK, 0 rows affected, 1 warnning即可
flush privileges;
更新权限,执行代码没有出现错误即可
CTRL + z提出MySQL,执行如下命令进入/etc/mysql/mysql.conf.d/目录,对mysqld.cnf文件的内容进行更改,要使用sudo,否则更改后无法退出
1 | cd / //从家目录退回到根目录目录 |
至此mysql配置完成
sudo service mysql restart
1.首先在阿里云控制台将3306端口开放
2.使用navicat连接mysql
填完点击确认即可