# eglpt-vue
**Repository Path**: wenwang2000/eglpt-vue
## Basic Information
- **Project Name**: eglpt-vue
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-03-08
- **Last Updated**: 2022-04-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# eglpt-vue
# 参考资料
https://cn.vuejs.org
# 项目搭建
方式 1
vue init webpack eglpt-vue
cd eglpt-vue
cnpm install / npm install 如果创建项目的时候没有报错,这一步可以省略。如果报错了 cd到项目里面运行 cnpm install / npm install
npm run dev
方式 2(推荐)
vue init webpack-simple eglpt-vue
cd eglpt-vue
cnpm install / npm install
npm run dev
# 知识点
绑定数据:v-bind: || :
绑定样式: v-bind:class="{ active: isActive }" v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"
绑定html: v-html="h"
MVVM双项数据绑定 :model改变会影响视图view,view视图改变反过来影响model
触发事件 : v-on:click="getMsg()" @click="setMsg()"
# 生命周期函数/生命周期钩子
组件挂载、以及组件更新、组件销毁、的时候触发的一系列的方法 这些方法就叫做生命周期函数
beforeCreate(){
console.log('实例刚刚被创建1');
},
created(){
console.log('实例已经创建完成2');
},
beforeMount(){
console.log('模板编译之前3');
},
mounted(){ /*请求数据,操作dom , 放在这个里面 mounted*/
console.log('模板编译完成4');
},
beforeUpdate(){
console.log('数据更新之前');
},
updated(){
console.log('数据更新完毕');
},
/*页面销毁的时候要保存一些数据,就可以监听这个销毁的生命周期函数*/
beforeDestroy(){
console.log('实例销毁之前');
},
destroyed(){
console.log('实例销毁完成');
}
# 请求数据
vue-resource 官方提供的 vue的一个插件 https://github.com/pagekit/vue-resource [推荐使用]
1、需要安装vue-resource模块, 注意加上 --save 插件写入package.json
npm install vue-resource --save / cnpm install vue-resource --save
2、main.js引入 vue-resource
import VueResource from 'vue-resource';
3、main.js Vue.use(VueResource);
4、在组件里面直接使用
this.$http.get(地址).then(function(){
})
axios 第三方插件 https://github.com/axios/axios
1、安装 cnpm install axios --save
2、哪里用哪里引入axios
fetch-jsonp https://github.com/camsong/fetch-jsonp
# 父-》子组件传值
1.父组件调用子组件的时候 绑定动态属性 (可以传数据,也可以传方法,也可以是整个对象)
2、在子组件里面通过 props接收父组件传过来的数据 String; Number; Boolean; Array; Object; Date; Function; Symbol
/*无验证*/
props:['title',"run","home"]
/*有验证*/
props:{
'title':String,
'run':Function,
'home':Object
}
# 父组件主动获取子组件的数据和方法:
1.调用子组件的时候定义一个ref
2.在父组件里面通过
this.$refs.header.属性
this.$refs.header.方法
# 子组件主动获取父组件的数据和方法:
this.$parent.数据
this.$parent.方法
# 非父子组件传值
1、新建一个js文件 然后引入vue 实例化vue 最后暴露这个实例
2、在要广播的地方引入刚才定义的实例
3、通过 VueEmit.$emit('名称','数据')
4、在接收收数据的地方通过 $om接收广播的数据
VueEmit.$on('名称',function(){
})
# Vue Router
参考资料:https://router.vuejs.org/zh/
1.安装npm install vue-router --save / cnpm install vue-router --save
2.引入 Vue.use(VueRouter) (main.js)
import VueRouter from 'vue-router'
Vue.use(VueRouter)
3.配置路由
1、创建组建 引入组建
2、定义路由(建议复制js)
const routes = [
{ path: '/foo', component: Foo },
{ path: '/bar', component: Bar },
{ path: '*', redirect: '/home' } /*??????·??*/
]
3、实例化VueRouter
const router = new VueRouter({
routes // (缩写)相当于 routes: routes
})
4、挂载
new Vue({
el: '#app',
router,
render: h => h(App)
})
5 放在 App.vue
# 路由传值
1、配置动态路由
routes: [
// 动态路径参数 以冒号开头
{ path: '/user/:id', component: User }
]
2、在对应的页面
this.$route.params获取动态路由的值
# get传值
1、 :to="'/productContent?id='+key"
2、this.$route.query
# 重定向、别名
“重定向”的意思是,当用户访问 /a时,URL 将会被替换成 /b,然后匹配路由为 /b,那么“别名”又是什么呢?
const router = new VueRouter({
routes: [
{ path: '/a', redirect: '/b' }
]
})
重定向的目标也可以是一个命名的路由:
const router = new VueRouter({
routes: [
{ path: '/a', redirect: { name: 'foo' }}
]
})
“别名”的功能让你可以自由地将 UI 结构映射到任意的 URL,而不是受限于配置的嵌套路由结构。
{ path: '/a', component: A, alias: '/b' }
# HTML5 History 模式
如果不想要很丑的 hash,我们可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。
const router = new VueRouter({
mode: 'history',
routes: [...]
})
不过这种模式要玩好,还需要后台配置支持。因为我们的应用是个单页客户端应用,如果后台没有正确的配置,当用户在浏览器直接访问 http://oursite.com/user/id 就会返回 404,这就不好看了。
你要在服务端增加一个覆盖所有情况的候选资源:如果 URL 匹配不到任何静态资源,则应该返回同一个 index.html 页面,这个页面就是你 app 依赖的页面。
nginx
location / {
try_files $uri $uri/ /index.html;
}
# 路由的嵌套
1.配置路由
{
path: '/user',
component: User,
children:[
{ path: 'useradd', component: UserAdd },
{ path: 'userlist', component: Userlist }
]
}
2.父路由里面配置子路由显示的地方
# Vue UI框架
Element Ui 基于vue pc端的UI框架 http://element.eleme.io/ https://element.eleme.cn/#/zh-CN/component/installation
1.找官网
2.安装 cnpm i element-ui -S -S表示 --save
3.引入element UI的css 和 插件
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI);
4、*webpack.config.js 配置file_loader http://element.eleme.io/1.4/#/zh-CN/component/quickstart
{
test: /\.(eot|svg|ttf|woff|woff2)(\?\S*)?$/,
loader: 'file-loader'
}
5.看文档直接使用。
element UI组件的单独使用(第一种方法):
1、cnpm install babel-plugin-component -D
2、找到.babelrc 配置文件
把
{
"presets": [
["env", { "modules": false }],
"stage-3"
]
}
改为 注意:
{
"presets": [["env", { "modules": false }]],
"plugins": [
[
"component",
{
"libraryName": "element-ui",
"styleLibraryName": "theme-chalk"
}
]
]
}
3、
import { Button, Select } from 'element-ui';
Vue.use(Button)
Vue.use(Select)
element UI组件的单独使用(第二种方法):
import { Button, Select } from 'element-ui';
Vue.use(Button)
Vue.use(Select)
引入对应的css
import 'element-ui/lib/theme-chalk/index.css';
如果报错: webpack.config.js 配置file_loader
{
test: /\.(eot|svg|ttf|woff|woff2)(\?\S*)?$/,
loader: 'file-loader'
}
MintUi 基于vue 移动端的ui框架 http://mint-ui.github.io/#!/zh-cn http://mint-ui.github.io/docs/#/zh-cn2
1.找官网
2.安装 npm install mint-ui -S -S表示 --save
3.引入mint Ui的css 和 插件
import Mint from 'mint-ui';
Vue.use(Mint);
import 'mint-ui/lib/style.css'
4.看文档/样例 直接使用。 创建项目的时候要选择 scss
在mintUi组件上面执行事件的写法 @click.native
# vuex
https://vuex.vuejs.org/zh/ (适用于大项目,小项目建议使用 localStorage 和 SessonStorage)
Vuex 是一个专为 Vue.js 设计的状态管理模式 ,
vuex解决了组件之间同一状态的共享问题 (解决了不同组件之间的数据共享) ,
组件里面数据的持久化
# vuex的使用:
1、src目录下面新建一个vuex的文件夹
2、vuex 文件夹里面新建一个store.js
3、安装vuex
cnpm install vuex --save
4、在刚才创建的store.js引入vue 引入vuex 并且use vuex
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
5、定义数据
/*1.state在vuex中用于存储数据*/
var state={
count:1
}
6、定义方法 mutations里面放的是方法,方法主要用于改变state里面的数据
var mutations={
incCount(){
++state.count;
}
}
暴露
const store = new Vuex.Store({
state,
mutations
})
export default store;
组建里面使用vuex:
1.引入 store
mport store from '../vuex/store.js';
2、注册
export default{
data(){
return {
msg:'我是一个home组件',
value1: null,
}
},
store,
methods:{
incCount(){
this.$store.commit('incCount'); /*触发 state里面的数据*/
}
}
}
3、获取state里面的数据
this.$store.state.数据
4、触发 mutations 改变 state里面的数据
this.$store.commit('incCount');
# 问题
## 1.TypeError: this.getResolve is not a function
npm uninstall sass-loader(卸载当前版本)
npm install sass-loader@7.3.1 --save-dev
# 感谢支持
 |