Vue+ElementUI项目实现按需加载&按需打包

说在前面

为什么需要按需加载和按需打包?

打包很好理解,就是执行npm run build得到的dist文件夹,和我们添加压缩包一个道理,如果打包了一些本来不需要的资源,就会使得打包的最终文件变大,最终影响前端项目的加载效率。

按需加载,比如我们的系统有5个模块,如果我们不做任何介入,Vue,React等框架默认的加载逻辑是把资源都下载到本地,然后执行后面的交互,如此一来,确实可以通过牺牲首次加载的时长换取后续运行的流畅性(因为不需要再次从网络端获取资源),但是如果本次用户只会用到其中一个模块A,那么其他模块资源的加载则会白白浪费带宽,并且影响项目的首屏加载。

现身说法

按需打包:

项目采用 Vue + ElementUI。引入ElementUI有两种方式,全局引入和按需引入,然后大家可以看一下两种引入方式的区别,代码中我只使用了ElementUI的Button组件。

全局引入Element UI组件:

在这里插入图片描述

按需引入Button组件:

在这里插入图片描述

整整差了2MB

按需加载

在这里插入图片描述

点击不同的模块,可以动态加载对应模块的资源,如果本次操作不涉及Car模块,则不会加载car.2847c660.js文件。

在这里插入图片描述

实现方案:

按需打包:

借助 babel-plugin-component,我们可以只引入需要的组件,以达到减小项目体积的目的。

npm install babel-plugin-component -D

然后,将 babel.config.js (如果没有,在根目录下新建同名文件并复制内容)修改为:

module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset',
    ["@babel/preset-env", { "modules": false }]
  ],
  "plugins": [
    [
      "component",
      {
        "libraryName": "element-ui",
        "styleLibraryName": "theme-chalk"
      }
    ]
  ]
}

实现按需打包跟引入方式有很大的关系,如果直接

import Element from 'element-ui'
Vue.use(Element)

这种引入方式就属于全部引入,不管你用没用到某个组件,他都会打包到我们build之后的项目里。

import {Button} from 'element-ui'
Vue.component(Button.name, Button);
// 或者Vue.use(Button)

上述写法就可以只打包Button组件相关的内容。

通过查看打包后的文件可以发现,打包时确实只引用了包中的一个文件

"webpack:///./node_modules/element-ui/lib/button.js"

打包后的引入方式为:

Vue.use(Button)

所以,我们在main.js中,最好直接写成上述格式,我觉得还能省下一步转换的过程。

按需打包的效果可以参考 开门见山 里的截图。

按需加载:

Vue项目实现按需加载比较简单,基于Vue-cli创建的项目,会帮助我们配置很多打包选项,实际使用过程中,只需要一句话就可以实现按需加载。

一般我们会在router/route.js中声明组件以及路由的映射关系:

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home
  },
  {
    path: '/car',
    name: 'Car',
    component: () => import(/* webpackChunkName: "car" */ '../views/Car.vue')
  }]

如上述代码:Home组件就不是按需加载的,他会在项目在浏览器中初始化时就把相关的文件资源加载到缓存中,而Car组件,则是点击(如上图所示)Car选项后才会主动去加载。至于为什么会被命名为car.xxx.js,这个和配置的webpackChunkName有关,后面会针对webpack配置单独出一个系列博客,欢迎关注。

说到最后

以上。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: VueElementUI是一对非常强大的前端开发工具,可以帮助我们快速实现增删改查功能。具体实现步骤如下: 1. 安装VueElementUI 首先要安装VueElementUI,可以使用npm或yarn进行安装。 2. 创建Vue组件 创建一个Vue组件,包含增删改查的功能。可以使用ElementUI提供的组件,如表格、表单、对话框等。 3. 实现数据绑定 使用Vue的数据绑定功能,将组件中的数据和页面中的元素进行绑定。可以使用v-model指令实现双向数据绑定。 4. 实现增删改查功能 使用Vue的方法和事件处理功能,实现增删改查的功能。可以使用axios或fetch等工具进行数据的请求和响应。 5. 完成样式设计 使用ElementUI提供的样式和自定义样式,完成页面的样式设计。 以上就是使用VueElementUI实现增删改查功能的基本步骤。要注意的是,具体实现过程可能会因为项目求的不同而有所差异。 ### 回答2: Vue ElementUI 是一套基于 Vue.js 的开源 UI 组件库,提供了丰富的组件和样式库,使开发人员可以更方便、快速地创建美观,符合规范的项目界面。本文将以 Vue ElementUI 为基础,介绍如何实现增删改查功能。 一、安装 Vue ElementUI 首先,要安装 Vue.jsElementUI。 在命令行中执行以下命令安装: ``` npm install vue npm install element-ui ``` 二、创建 Vue ElementUI 项目 在命令行中执行以下命令来创建一个新的 Vue ElementUI 项目。 ``` vue create vue-elementui-demo ``` 三、在Vue文件中引入ElementUI组件库 修改App.vue文件,引入ElementUI组件库。 ``` <template> <div id="app"> <el-header>Header</el-header> <el-main>Main Content</el-main> <el-footer>Footer</el-footer> </div> </template> <script> import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; export default { name: 'app', components: { 'el-header': ElementUI.Header, 'el-main': ElementUI.Main, 'el-footer': ElementUI.Footer } }; </script> ``` 四、创建增删改查页面 首先,在src目录下创建一个名为views的文件夹,用于存放页面组件。在views文件夹中新建一个名为user.vue的组件文件用于实现增删改查页面。 创建一个表格用于显示用户列表,并添加一个操作列,用于添加、编辑和删除操作。代码如下: ``` <template> <div class="user"> <el-button @click="handleCreate">新建</el-button> <el-table :data="tableData" style="width: 100%"> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="gender" label="性别"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <el-table-column label="操作"> <template slot-scope="scope"> <el-button @click="handleEdit(scope.row)">编辑</el-button> <el-button @click="handleDelete(scope.row)">删除</el-button> </template> </el-table-column> </el-table> </div> </template> <script> export default { data() { return { tableData: [ {name: "张三", gender: "男", age: "18"}, {name: "李四", gender: "女", age: "20"}, {name: "王五", gender: "男", age: "22"} ] } }, methods: { handleCreate() { // TODO: 弹出新建对话框 }, handleEdit(row) { // TODO: 弹出编辑对话框 }, handleDelete(row) { // TODO: 弹出删除确认对话框,确认后从tableData中删除该行数据 } } } </script> ``` 五、实现新建、编辑、删除对话框 为了实现新建、编辑、删除操作,实现对应的对话框组件。创建一个名为user-dialog.vue的组件文件用于实现这些对话框。 代码如下: ``` <template> <el-dialog :title="title" :visible.sync="dialogVisible"> <el-form :model="form" label-position="left" label-width="80px"> <el-form-item label="姓名"> <el-input v-model="form.name"></el-input> </el-form-item> <el-form-item label="性别"> <el-radio-group v-model="form.gender"> <el-radio label="男">男</el-radio> <el-radio label="女">女</el-radio> </el-radio-group> </el-form-item> <el-form-item label="年龄"> <el-input v-model="form.age"></el-input> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button @click.native="dialogVisible = false">取消</el-button> <el-button type="primary" @click.native="handleSave">保存</el-button> </div> </el-dialog> </template> <script> export default { props: { title: { type: String, required: true }, visible: { type: Boolean, required: true }, form: { type: Object, required: true } }, computed: { dialogVisible: { get() { return this.visible; }, set(val) { this.$emit('update:visible', val); } } }, methods: { handleSave() { this.$emit('save'); } } } </script> ``` 在user.vue引入user-dialog.vue组件,并为每个操作添加对应的处理函数来弹出对应的对话框。 代码如下: ``` <template> <div class="user"> <el-button @click="handleCreate">新建</el-button> <el-table :data="tableData" style="width: 100%"> <!-- 省略的列 --> </el-table> <user-dialog title="新建用户" :visible.sync="createDialogVisible" :form="createForm" @save="handleCreateSave"/> <user-dialog title="编辑用户" :visible.sync="editDialogVisible" :form="editForm" @save="handleEditSave"/> <el-dialog title="删除确认" :visible.sync="deleteDialogVisible"> <p>确定要删除“{{deleteForm.name}}”吗?</p> <div slot="footer" class="dialog-footer"> <el-button @click.native="deleteDialogVisible = false">取消</el-button> <el-button type="danger" @click.native="handleDelete">删除</el-button> </div> </el-dialog> </div> </template> <script> import UserDialog from '@/views/user-dialog.vue'; export default { components: { UserDialog }, data() { return { tableData: [ {id: 1, name: "张三", gender: "男", age: "18"}, {id: 2, name: "李四", gender: "女", age: "20"}, {id: 3, name: "王五", gender: "男", age: "22"} ], createDialogVisible: false, createForm: { name: "", gender: "男", age: "" }, editDialogVisible: false, editForm: { id: 0, name: "", gender: "", age: "" }, deleteDialogVisible: false, deleteForm: { id: 0, name: "" } } }, methods: { handleCreate() { this.createForm.name = ""; this.createForm.gender = "男"; this.createForm.age = ""; this.createDialogVisible = true; }, handleCreateSave() { const id = Math.max(0, ...this.tableData.map(item => item.id)) + 1; const data = {... this.createForm, id}; this.tableData.push(data); this.createDialogVisible = false; }, handleEdit(row) { this.editForm.id = row.id; this.editForm.name = row.name; this.editForm.gender = row.gender; this.editForm.age = row.age; this.editDialogVisible = true; }, handleEditSave() { const index = this.tableData.findIndex(item => item.id === this.editForm.id); if (index >= 0) { this.tableData.splice(index, 1, this.editForm); } this.editDialogVisible = false; }, handleDelete(row) { const index = this.tableData.findIndex(item => item.id === row.id); if (index >= 0) { this.tableData.splice(index, 1); } this.deleteDialogVisible = false; }, handleDeleteSave() { this.handleDelete(this.deleteForm); } } } </script> ``` 以上就是如何使用 Vue ElementUI 实现增删改查功能的介绍,希望对你有所帮助。 ### 回答3: Vuejs是目前最流行的前端框架之一,随着其火爆的发展,越来越多的公司和开发者喜欢使用Vuejs开发项目,其中Vuejs与element-ui的组合是目前最常用的一种方式,element-ui提供了一整套完整的UI组件库,可以轻松地实现页面开发。在实现增删改查功能时,Vuejs与element-ui非常适合,可以极大地提高我们的开发效率,让我们快速实现各种功能。 首先,我们要安装Vue-cli 3.x版本,使用Vue-cli创建一个Vue项目,安装element-ui库。我们还要安装axios库,它可以用来与后端API通信。 接下来,我们要创建一个列表页,将数据展示在页面上,同时还要添加按钮以执行相应的操作。这个列表页可以通过element-ui的table组件来实现,同时使用axios库与后端api通信,获取数据并将其渲染到页面上。 在实现增加数据功能时,我们可以通过一个Dialog弹窗来实现,通过展示表单进行新增数据操作。此时我们就要用到element-ui的Dialog组件,将表单组件放在Dialog里面,同时使用axios与后端进行通信。 修改数据同样也可以使用弹窗进行实现,只要在弹窗的表单里填入要修改的数据,通过axios向后端发送更新请求即可。 最后,删除数据可以通过一些操作按钮来处理,例如:删除按钮,勾选数据后点击删除按钮即可。在处理完删除数据请求之后,使用axios与后端进行通信。 总之,使用Vuejs与element-ui一起开发增删改查功能是一种很高效的方式,这个组合可以大大提高我们前端开发的效率,减少开发周期。同时各种组件也可以通过element-ui的样式来保证我们UI的一致性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值