当前位置: 代码迷 >> 综合 >> vue知识
  详细解决方案

vue知识

热度:85   发布时间:2024-03-08 07:37:17.0

vue.config.js中的常用配置:

module.exports = {//基本路径,vue.cli 3.3以前请使用baseUrlpublicPath: "./",configureWebpack: {resolve: {alias: {assets: "@/assets",common: "@/common",components: "@/components",network: "@/network",views: "@/views"}}},//项目启动的一些配置,如果有跨域问题可以在这里进行设置代理devServer: {port: 3333,open: true}
};

页面跳转:

标签:<router-link to='two.html'><button>点我到第二个页面</button></router-link>

js: this.$router.push({path:'/home'})

 

路由:

路由懒加载写法,以下是ES6写法:

{path: '/about',component: () => import('../components/About')
},

路由正常加载和懒加载的区别:

正常方式:进入页面的时候就加载这个组件,路由过多时一起加载会造成速度变慢

懒加载:进入这个页面才进行加载这个组件,能极大提升应用加载速度

 

嵌套路由:

比如在home页面中,我们希望通过/home/news和/home/message访问一些内容

一个路径映射一个组件,访问这2个路径也会分别渲染两个组件

实现嵌套路由:

创建对应的子组件,并且在路由映射中配置对应的子路由在组件内部使用标签

 

 

路由传递参数的方式主要有2种类型:params 和query

params的类型

配置路由格式: /router/:id

传递方式:在path后面跟随对应的值 传递后形成的路径:/router/123, /router/abc

this.$router.push({name: 'home' , params: {name: 'Jack'}})

 

query的类型:

配置路由格式: /router,普通配置

传递方式: 对象中使用query的key作为传递方式 传递后形成的路径: /router?id=123,/router?id=abc

this.$router.push({path: '/home' , query: {name: 'Jack'}})

注意以上params是使用的name,query是使用的path,所以如果使用了params,路由配置中记得加上name字段

 

组件放置目录

在src文件夹下创建views 或者是pages文件夹 ,存放视图文件夹,如home,category,cart,profile文件夹,在这些文件夹下又存放着各自的vue组件,如profile组件,如果该组件底下还有相关的组件,依旧放在profile文件夹中。

总结就是放独立组件

components文件夹放什么呢?放一些公共的组件,如上面的home,category(2个以及2个以上都能用到的组件)放进去即可

 

给某些文件夹起别名

cli2 的build/webpack.base.conf文件中

resolve: {extensions: ['.js', '.vue', '.json'],alias: {'@': resolve('src'),'assets': resolve('src/assets'),'components': resolve('src/components')}
},

 

cli3的vue.config.js中

  configureWebpack: {resolve: {alias: {assets: "@/assets",common: "@/common",components: "@/components",network: "@/network",views: "@/views"}}},

 

标签中使用别名

<img src='~assets/img/tabbar/category.svg' slot="item-icon">

script中使用别名

import TabBar from 'components/tabbar/TabBar'

 

vuex 状态管理

多个组件间之间共享的状态一般都放vuex: 如用户的登录状态,用户名称,头像,地理位置信息等到

 vuex安装: npm install vuex --save

使用: 在src目录下新建store文件夹,创建index.js,记得在main.js中引入

import Vue from "vue";
import Vuex from "vuex";Vue.use(Vuex);export default new Vuex.Store({state: {},mutations: {},actions: {},modules: {}
});

 

在页面中使用全局状态:

<h3>{ {$store.state.counter}}h3>

只要是涉及到修改state的,都应该使用mutations来进行

页面按钮涉及到修改state,在按钮的点击事件中提交mutations中的函数名

testBt() {

    this.$store.commit('increment')

}

如果是提交actions,则用dispatch,actions中的方法内部一般都是通过context去执行mutaions中的方法

 

使用devtools进行开发调试

谷歌插件商品搜索 devtools,找到vue的那一项进行安装,

store中的数据是响应式的,但是如果是后面增加的属性,则不会有响应式方法,mutation中的方法必须是同步方法,不然devtools不好跟踪数据

 

对象解构语法:

const obj = {
name: 'why',
age: 18,
height: 1.88
}const {name, age, height} = obj;
console.log(name)

网络请求的使用:

安装axios :  npm install axios --save

 

导入别的模块的代码时,如果该文件没有使用default导出,则导入的时候需要加上花括号,如

import {request} from './network/request'

 

新建项目后优先做的事就是目录划分,如src目录下:

1.assets文件夹下新建css和img目录

2.新建views视图文件夹,存放视图

3.components放一些公共的组件,components又分为以下两类。

common 和 content ,common放一些不仅仅是当前项目会用到的,下一个项目也可以使用的,总结就是完全公共的。content放一些和当前业务相关的组件,放下一个项目中应该是不能用的,只和当前项目相关。

4.新建network文件夹,封装网络请求 ,    npm install axios --save

5.新建common文件夹,放一些公共的js文件,如公共的常量或者是工具类

6.新建router文件夹,表示路由,文件夹内创建index.js  npm install vue-router --save

7.新建store文件夹,表示vuex状态管理

8.路径别名配置(脚手架3下进行配置),通过新建vue.config.js进行配置

  相关解决方案