Vue框架相关(2)
如何使用别人的vue项目
- 通常情况网上下好的vue开源项目都是不包含
node_modules文件的 - 这个时候只需要打开
npm i一下,就会自动读取package.json中的记录下好依赖
第三方组件element-ui
居然是饿了么提供的开源前端框架
安装
- 安装:
npm install element-plus --save - 快速开始:
- 完整导入:如果你对打包后的文件大小不是很在乎,那么使用完整导入会更方便。
1
2
3
4
5
6
7import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import App from './App.vue'
const app = createApp(App)
app.use(ElementPlus)
app.mount('#app')app.use(ElementPlus)就是一种全局注册
- 按需导入
TO DO自行看官网,太多了有空来写
- 完整导入:如果你对打包后的文件大小不是很在乎,那么使用完整导入会更方便。
使用
看官方文档中的代码使用,不多赘述
图标库
推荐与使用
- font Awesome4:免费,5,6收费
- 安装
npm install font-awesome --save - 使用
import font-awesome/css/font-awesome.min.css - eg:`
更多使用方法见官方文档
- 安装
- 阿里矢量图库:免费,
但是总感觉不实用element也有,但是很少用
组件生命周期函数(钩子)
每一个组件都有自己的生命周期,以及其对应的函数,其可以被调用实现一些功能
eg:created:被创建的时候
- 在组件
js中的导出里使用created:function(){ console.log("component has been created")}就可以看见被创建时控制台打印
- created:与data:同级
- 其他生命周期函数类似,同样不多赘述

前端路由VueRouter
安装与使用
- Vue路由(vue-router)是官方的路由插件,能轻松的管理SPA项目中组件的切换。
- Vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来
- vue-router目前有3.x和4.x版本,分别对应vue2和vue3
- 安装:
npm install vue-router@4这里安装的是四,默认安装最新版,同理3就是安装@3
声明路由链接和占位标签
可以使用<router-link>标签来声明路由链接,并使用<router-view>标签来声明路由占位符。示例代码如下:
App.vue:
1 | <template> |
创建路由模块
建议在/src下新建一个/router
新建一个index.js:
1 | import { createMemoryHistory, createRouter } from 'vue-router' |
注册路由器插件
一旦创建了我们的路由器实例,我们就需要将其注册为插件,这一步骤可以通过调用 use() 来完成。
1 | import router from './router/index' |
路由重定向
- 指的是:用户在访问地址A的时候,强制用户跳转到地址C,从而展示特定的组件页面。
- 通过路由规则的
redirect属性,指定一个新的路由地址:
1 | const routes = [ |
嵌套路由
在其他组件(例如示例中的guide.vue中),声明子路由链接以及子路由占位符:
1 | <template> |
然后导入到index.js中:
- 方法一(不推荐):
1 | import TopListView from '../components/TopList.vue' |
这样写不仅会覆盖父组件的内容,而且非常的不好区分子父
- 方法二,通过
children属性声明子路由规则:
1 | import Toplist from '../components/toplist.vue' |
动态路由
把hash地址中可变的部分定义为参数项,从而提高路由规则的复用性
为了简化了路由参数的获取形式,可以开启props传参
1 | {path: '/product/:id',component:Product,props:true} |
在对应组件中有:
1 | <template> |
编程式导航
- 之前介绍的
router-link属于声明式的,如果想要导航到不同的URL中,则使用router.push方法 - 这个方法会向
history栈中添加一个新的记录,所以,当用户点击浏览器后退按钮时候,则回到之前的URL - 两者在一定程度上类似(有区分以后这里添加)
1 | <template> |
导航守卫
导航守卫可以控制路由的访问权限
可以使用router.beforeEach注册一个全局前置守卫:
1
2
3
4
5
6
7
8router.beforeEach((to,from,next)=>{
if(to.path ==='/main'&& !isAuthenticated){
next('/login')
}
else{
next()
}
})
to:即将要进入的目标from:当前导航正要离开的路由- 在守卫方法中如果声明了
next形参,则必须调用next()函数,否则不允许用户访问任何一个路由- 直接放行:
next() - 强制其停留在当前页面:
next(false) - 强制其跳转到登录页面:
next('.login')
- 直接放行:
状态管理Vuex
以下介绍以vue3的vuex4.x为主
介绍
- Vuex是专为Vue.js应用程序开发的状态管理库,采用集中式储存管理应用的所有组件的状态
- 简单的说,Vuex用于管理分散在Vue各个组件中的数据
- 安装:
npm install vuex@next
官方文档4.x
状态管理
- 每个Vuex应用的核心都是一个
store,与普通的全局对象不同的是,基于Vue数据与视图绑定的特点,当store中的状态发生变化时,与之绑定的视图也会被重新渲染 store中的状态不允许被直接修改,改变store中的状态的唯一途径就是显式地提交(commit)mutation,这可以让我们方便的跟踪每一个状态的变化- 在大型复杂应用中,如果无法有效地跟踪到状态的变化,将会对理解和维护代码带来极大的困扰
- Vuex中有五个重要的概念:State, Getter, Mutation, Action, Module.

State
- State用于维护所有应用层的状态,并确保应用只有唯一的数据源
1 | //创建一个新的store实例 |
- 访问:在组件中,可以直接使用
this.$store.state.count访问数据,也可以先用mapState辅助函数将其映射下来
1 | import {mapState} from 'vuex' |
Getter
- 维护由State派生的一些状态,这些状态随着State状态变化而变化
1 | const store = createStore({ |
- 在组件中,可以直接使用
this.$store.getters.doneTodos,也可以使用mapGetters辅助函数将其映射下来
1 | import { mapGetters } from 'vuex' |
注意,这里的…不是省略,而是一个对象的展开函数
Action
Action类似Mutation,不同在于:
Action不能直接修改状态,只能通过提交mutation来修改,Action可以包含异步操作
1 | import Vue from 'vue' |
- 在组件中,可以直接使用
this.$store.dispatch('xxx')分发action,或者使用mapActions辅助函数先将其映射下来
1 | methods:{ |
mutation
- 在组件中,可以直接使用
store.commit来提交mutation
1 | methods:{ |
- 也可以先用
mapMutatiuon辅助函数将其映射下来
1 | methods:{ |
Modules
由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。
为了解决以上问题,Vuex 允许我们将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块——从上至下进行同样方式的分割:
1 | const moduleA = { |
vue-element-admin
介绍
- vue-element-admin是后台前端解决方案,基于vue和element-ui实现
- 内置了i18国际化解决方案,动态路由,权限验证,提炼了典型的业务模型,提供了丰富的功能组件
- 可以快速搭建企业级中后台产品原型
- 官方文档
一般开发使用基础模板vue-admin-template,有需求添加再根据集成方案vue-element-admin源码添加
安装
1 | # 克隆项目 |
官方TIP
强烈建议不要用直接使用 cnpm 安装,会有各种诡异的 bug,可以通过重新指定 registry 来解决 npm 安装速度慢的问题。若还是不行,可使用 yarn 替代 npm。
Windows 用户若安装不成功,很大概率是node-sass安装失败,解决方案。
另外因为 node-sass 是依赖 python环境的,如果你之前没有安装和配置过的话,需要自行查看一下相关安装教程。
- 启动完成后会自动打开浏览器访问 http://localhost:9527, 你看到下面的页面就代表操作成功了。
取消es-lint校验
如果不想使用ESLint,只要找到vue.config.js文件。设置lintOnSave: false即可






