VUE3 --->组件化

这篇具有很好参考价值的文章主要介绍了VUE3 --->组件化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

vue-cli

1、基于 vue ui 创建 vue 项目

 组件库

1.vue 组件库

2.vue 组件库和 bootstrap 的区别

3. 最常用的 vue 组件库

4. Element UI

axios 拦截器

1. 回顾:在 vue3 的项目中全局配置 axios

2. 在 vue2 的项目中全局配置 axios

3、拦截器

4. 配置请求拦截器

5、配置响应拦截器

proxy 跨域代理

1. 回顾:接口的跨域问题

2. 通过代理解决接口的跨域问题

3. 在项目中配置 proxy 代理


vue-cli

vue-cli 提供了创建项目的两种方式

vue create 项目名称

vue ui

1、基于 vue ui 创建 vue 项目

步骤1:在终端下运行 vue ui 命令,自动在浏览器中打开创建项目的可视化面板

步骤2:在详情页面填写项目名称

步骤3:在预设页面选择手动配置项目

步骤4:在功能页面勾选需要安装的功能Choose Vue VersionBabelCSS 预处理器使用配置文件):

步骤5:在配置页面勾选 vue 的版本需要的预处理器

步骤6:将刚才所有的配置保存为预设(模板),方便下一次创建项目时直接复用之前的配置

步骤7:创建项目并自动安装依赖包:

vue ui 的本质:通过可视化的面板采集到用户的配置信息后,在后台基于命令行的方式自动初始化项目:

版本 3 和版本 4 的路由最主要的区别:创建路由模块的方式不同!

 组件库

1.vue 组件库

在实际开发中,前端开发者可以把 自己封装的 .vue 组件 整理、打包、并 发布为 npm 的包 ,从而供其他人下载 和使用。这种可以直接下载并在项目中使用的现成组件,就叫做 vue 组件库

2.vue 组件库和 bootstrap 的区别

二者之间存在本质的区别:
  •  bootstrap 只提供了纯粹的原材料( css 样式、HTML 结构以及 JS 特效),需要由开发者做进一步的组装改造
  •  vue 组件库是遵循 vue 语法高度定制的现成组件,开箱即用

3. 最常用的 vue 组件库

PC 端

  •  Element UI(https://element.eleme.cn/#/zh-CN)
  •  View UI(http://v1.iviewui.com/)

移动端

  •  Mint UI(http://mint-ui.github.io/#!/zh-cn)
  •  Vant(https://vant-contrib.gitee.io/vant/#/zh-CN/)

4. Element UI

Element UI 是 饿了么前端团队 开源的一套 PC 端 vue 组件库 。支持在 vue2 和 vue3 的项目中使用:
  •  vue2 的项目使用旧版的 Element UI(https://element.eleme.cn/#/zh-CN)
  •  vue3 的项目使用新版的 Element Plus(https://element-plus.gitee.io/#/zh-CN)

1、在 vue2 的项目中安装 element-ui

运行如下的终端命令:

npm i element-ui -S
2、引入 element-ui
开发者可以 一次性完整引入所有的 element-ui 组件,或是根据需求,只 按需引入用到的 element-ui 组件:
  •  完整引入:操作简单,但是会额外引入一些用不到的组件,导致项目体积过大
  •  按需引入:操作相对复杂一些,但是只会引入用到的组件,能起到优化项目体积的目的

3、完整引入

main.js 中写入以下内容:

import ElementUI from 'element-ui'

import 'element-ui/lib/theme-chalk/index.css'

Vue.use(ElementUI)
4、按需 引入
借助 babel-plugin-component ,我们可以只引入需要的组件,以达到 减小项目体积 的目的。
步骤1,安装 babel-plugin-component:
npm i babel-plugin-component -D
步骤2,修改根目录下的 babel.config.js 配置文件,新增 plugins 节点如下:
{

  "plugins": [
    [
      "component",
      {
        "libraryName": "element-ui",
        "styleLibraryName": "theme-chalk"
      }
    ]
  ]
}
步骤3,如果你 只希望引入部分组件 ,比如 Button,那么需要在 main.js 中写入以下内容:
import { Button, Select } from 'element-ui';

Vue.component(Button.name, Button);
Vue.component(Select.name, Select);
/* 或写为
 * Vue.use(Button)
 * Vue.use(Select)
 */
5、把组件的导入和注册 封装为独立的模块
在 src 目录下新建 element-ui/index.js 模块,并声明如下的代码:
import Vue from 'vue'
// 完整引入 Element UI
// import ElementUI from 'element-ui'
// import 'element-ui/lib/theme-chalk/index.css'
// Vue.use(ElementUI)

// 按需导入
import { Button, Input } from 'element-ui'

Vue.config.productionTip = false

Vue.use(Button)
Vue.use(Input)

//在mian.js中导入
 import './element-ui'

axios 拦截器

1. 回顾:在 vue3 的项目中全局配置 axios

在 main.js 入口文件中,通过 app.config.globalProperties 全局挂载 axios

import axios from 'axios'
axios.defaults.baseURL = '请求根路径'
app.config.globalProperties.$http = axios

2. 在 vue2 的项目中全局配置 axios

需要在 main.js 入口文件中,通过 Vue 构造函数prototype 原型对象全局配置 axios:

import axios from 'axios'
//全局配置
axios.defaults.baseURL = '请求根路径'
Vue.prototype.axios = axios

3、拦截器

拦截器(英文:Interceptors)会在每次发起 ajax 请求得到响应的时候自动被触发。

4. 配置请求拦截器

通过 axios.interceptors.request.use(成功的回调, 失败的回调) 可以配置请求拦截器:注意:失败的回调函数可以被省略

请求拦截器 – Token 认证

// 配置请求拦截器
axios.interceptors.request.use(config => {
  // 配置 Token 认证
  config.headers.Authorization = 'Bearer xxx'
  console.log(config)
  // 这是固定写法
  return config
})
请求拦截器 – 展示 Loading 效果
借助于 element ui 提供的 Loading 效果 组件(https://element.eleme.cn/#/zh-CN/component/loading) 可以方便的实现 Loading 效果的展示:
import { Loading } from 'element-ui'
/ 配置请求拦截器
let loadingInstance = null
axios.interceptors.request.use(config => {
  // 展示 loading 效果
  loadingInstance = Loading.service({ fullscreen: true })
  // 配置 Token 认证
  config.headers.Authorization = 'Bearer xxx'
  console.log(config)
  // 这是固定写法
  return config
})

5、配置响应拦截器

通过 axios.interceptors.response.use(成功的回调, 失败的回调) 可以配置响应拦截器。

响应拦截器 – 关闭 Loading 效果

调用 Loading 实例提供的 close() 方法即可关闭 Loading 效果

// 配置响应拦截器
axios.interceptors.response.use(response => {
  // 关闭 loading 效果
  loadingInstance.close()
  return response
})

proxy 跨域代理

1. 回顾:接口的跨域问题

vue 项目运行的地址: http :// localhost : 8080 /
API 接口运行的地址: https :// www.escook.cn /api/users
由于当前的 API 接口 没有开启 CORS 跨域资源共享,因此默认情况下,上面的接口 无法请求成功

2. 通过代理解决接口的跨域问题

通过 vue-cli 创建的项目在遇到接口跨域问题时,可以通过代理的方式来解决:

① 把 axios 的 请求根路径 设置为 vue 项目的运行地址 (接口请求不再跨域)
② vue 项目发现请求的接口不存在,把请求 转交给 proxy 代理
③ 代理把请求根路径 替换为 devServer.proxy 属性的值, 发起真正的数据请求
④ 代理把请求到的数据, 转发给 axios

3. 在项目中配置 proxy 代理

步骤1,在 main.js 入口文件中,把 axios 的请求根路径改造为当前 web 项目的根路径文章来源地址https://www.toymoban.com/news/detail-614226.html

// 配置请求根路径
// axios.defaults.baseURL = 'https://url地址'
axios.defaults.baseURL = 'http://localhost:8080'
步骤2,在 项目根目录 下创建 vue.config.js 的配置文件,并声明如下的配置:
module.exports = {
  devServer: {
    proxy: 'https://url地址',
  },
}
注意:
① devServer.proxy 提供的代理功能, 仅在开发调试阶段生效
② 项目上线发布时,依旧需要 API 接口服务器 开启 CORS 跨域资源共享

到了这里,关于VUE3 --->组件化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 二、Vue组件化编程

    Vue 中使用组件的三大步骤: 定义组件(创建组件) 注册组件 使用组件(写组件标签) 如何定义一个组件? 使用 Vue.extend(options) 创建,其中 options 和 new Vue(options) 时传入的那个 options 几乎一样,但也有点区别; 区别如下: el 不要写,为什么? ——— 最终所有的组件都要经过一

    2024年02月22日
    浏览(45)
  • Vue(组件化编程:非单文件组件、单文件组件)

    传统组件编写:不同的HTML引入不同的样式和行为文件 组件方式编写:组件单独, 复用率高(前提组件拆分十分细致)  理解为封装行为:html,css,js封装在一个文件中 解释模块化和组件化的区别: 组件化 :css,js,html三件套使用在同一部分的代码封装在一个组件中 模块化

    2024年02月01日
    浏览(53)
  • 通用vue组件化登录页面

    1.首先建立一个login文件夹,在里面建立对应的login.vue文件 2.设置登录页面的背景图,在App.vue文件中使用router-view进行展示登录组件 3.先给App.vue的div元素设置高度100%,之后在login.vue里面去设置背景图 这里注意怎么使login组件垂直水平居中的样式 1.首先建立一个cpns的文件夹,里

    2024年02月09日
    浏览(42)
  • 【Vue】Vite 组件化开发

    1. 什么是组件化开发 组件化开发指的是:根据封装的思想,把页面上可重用的部分封装为组件,从而方便项目的开发和维护。 例如:https://gitee.com/vdpadmin/variant-form 所展示的效果,就契合了组件化开发的思想。用户可以通过拖拽组件的方式,快速生成一个页面的布局结构。

    2024年02月10日
    浏览(48)
  • Vue 如何简单快速组件化

    为了简化拆分复杂的代码逻辑,和实现代码的组件化,封闭化。我们需要使用组件化的方法。我这里只讲解我感觉最优的组件化方法。 vue组件化总结 vue 单文件组件 子组件修改Props报错 vue 父组件调用子组件方法ref vue中组件的props属性(详) 使用Vue-cil搭建一个简单的Vue页面,

    2024年02月12日
    浏览(39)
  • Vue开发实战(03)-组件化开发

    对组件功能的封装,可以像搭积木一样开发网页。 Vue官方的示例图对组件化开发的形象展示。左边是一个网页,可以按照功能模块抽象成很多组件,这些组件就像积木一样拼接成网页。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aS7Zk8tp-16862

    2024年02月08日
    浏览(98)
  • 通用vue组件化展示列表数据

    1.首先先确定要展示的表格列名以及拿到所需要展示的数组数据 2.然后建立一个专门放el-table遍历的文件 3.在父组件中将数据列表数据存放在listData里面,然后传给子组件,子组件定义一个动态的列,通过遍历propList得到列名,然后也动态匹配prop,这样prop的值会去和listData进行匹

    2023年04月08日
    浏览(36)
  • vue~el-autocomplete实现组件化

    可以实现异步的数据拉取,从异步返回的数据中,选择需要的结果,并回显到文本框中。 回调列表,异步的方式获取数据列表,显示在列表框中 当选中某一项时,会触发这个方法,将数据获取到,这时,我们可以将数据回显,或者赋值给父页面上的元素,如果希望赋值父页

    2024年02月11日
    浏览(41)
  • Vue 组件化: 计算属性、内容分发、自定义事件

    目录 1. 计算属性 1.1 计算属性的特点 2. 内容分发 2.1 使用插槽的示例 3. 自定义事件 什么是计算属性 ? 计算属性的重点突出在 属性 两字, 首先它是个 属性 , 其次这个属性有 计算 的能力, 这里的计算就是个函数; 简单来说, 它就是一个能够将计算结果缓存起来的属性 (将行为转

    2024年02月08日
    浏览(51)
  • Vue:将以往的JQ页面,重构成Vue组件页面的大致思路梳理(组件化编码大致流程)

    组件要按照功能点拆分,命名不要与 HTML元 素冲突。 1、根据 UI 提供的原型图,进行结构设计,结构设计的粒度以是否方便给组件起名字为依据。并梳理好对应组件的层级依赖关系。 2、设计好结构后,开始写对应的组件,并根据梳理好的层级关系,对应引入组件。 3、根据

    2024年01月15日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包