对于从事前端工作的小伙伴,掌握Vue,React这样的框架可以说是前端基本功了。人人都会用,那我们怎样才能写得比别人优雅?比别人漂亮?

鉴于一线互联网大厂在前沿技术领域的持续研究和大规模投入,直接向他们取经,是最便捷也是最高效的学习方式。

本文将介绍大厂Vue项目两大最佳实践

01

一劳永逸的组件注册

通常在组件使用前,需要引入后再注册,但如果高频组件多了,每次都这样做,不仅新增很多代码,效率还低!我们应该如何优化呢?

其实,我们可以借助一下webpack的require.context() 方法来创建自己的(模块)上下文,从而实现自动动态require组件。

我们先在components文件夹(这里面都是些高频组件)添加一个叫global.js的文件,在这个文件里使用require.context 动态将需要的高频组件统统打包进来,然后在main.js文件中引入global.js的文件。

//  global.js文件
import Vue from 'vue'
function changeStr (str) {return str.charAt(0).toUpperCase() + str.slice(1)
}
const requireComponent = require.context('./', false, /\.vue$/)
// 查找同级目录下以vue结尾的组件
const install = () => {requireComponent.keys().forEach(fileName => {let config = requireComponent(fileName)console.log(config) // ./child1.vue 然后用正则拿到child1let componentName = changeStr(fileName.replace(/^\.\//, '').replace(/\.\w+$/, ''))Vue.component(componentName, config.default || config)})
}
export default {install // 对外暴露install方法
}

最后我们就可以随时随地在页面中使用这些高频组件,无需再手动一个个引入了。

02

高精度权限控制

——自定义指令directive

我们通常给一个元素添加 v-if / v-show 来做权限管理,但如果判断条件繁琐且多个地方需要判断,这种方式的代码不仅不优雅而且冗余。

针对这种情况,我们可以通过全局自定义指令来处理:我们先在新建个 array.js 文件,用于存放与权限相关的全局函数:

// array.js
export function checkArray (key) {let arr = ['1', '2', '3', '4', 'demo']let index = arr.indexOf(key)if (index > -1) {return true // 有权限} else {return false // 无权限}
}

然后在将 array 文件挂载到全局中:

 // main.jsimport { checkArray } from "./common/array";Vue.directive("permission", {inserted (el, binding) {let permission = binding.value; // 获取到 v-permission的值if (permission) {let hasPermission = checkArray(permission);if (!hasPermission) { // 没有权限 移除Dom元素el.parentNode && el.parentNode.removeChild(el);}}}});

最后我们在页面中就可以通过自定义指令 v-permission 来判断:

<div class="btns"><button v-permission="'1'">权限按钮1</button>  // 会显示<button v-permission="'10'">权限按钮2</button>  // 无显示<button v-permission="'demo'">权限按钮3</button> // 会显示</div>

除了以上分享,还有一些能体现竞争力的实践,你会吗?

  • 我们都会写组件,但是你知道怎么让组件能够成为高复用性的组件库型组件吗?

  • 我们都会项目打包上线,但是你知道如何编写配置文件能让打包速度最优化吗?

  • 我们都会写路由,但是你知道如何写才能保证多路由模块解耦,保证更方便增加新的路由模块吗?

是否积累优秀实战经验已经成为区分前端水平高低的评判标准。秋招在即,大家可能都面临:项目拿不出手?没有实战经验?面试问底层原理不知道怎么答?一系列问题。

那么如何积累实战经验跨过大厂面试门槛?

这边给大家推荐网易资深工程师开设的《网易独家面试集训-3天前端直播课》,3天课程,每天2小时,限时0元,让你收获大厂的vue优秀实践。

老师手把手带教,讲解vue项目从0到上线的完整流程。从真实项目实操中总结的方法,肯定能让你少走弯路,一站式解决前端进阶难题~

你能通过课程学到如何写出高质量代码、面试必问底层原理、大型项目中的api层该怎么做……

网易独家面试集训

3天前端直播课

 8月3日—8月5日 

 0元学习 ,  每晚8点

01

从0到1掌握vue实践,上手项目开发

周二

【那些源码教我的事】一节课教你写出高质量代码

源码有哪些值得学习的

源码组织模式

透过源码学习设计模式

周三

【技能拓展】一线互联网项目都有的api层是怎么做的?

Axios源码分析

大型项目中的api层

二次封装Axios实例

周四

【用vue3做项目】一节课带你了解vue3改变了什么

vue3源码改动详情

什么是vite

用vite加vue3写项目

扫码听直播领取

前端进阶资料包

添加助教小姐姐一起进步

02

资深讲师手把手带你了解企业开发模式

唐磊,网易高级前端工程师。

8年工作经验,过手无数商业项目,主导过日流水百万级的项目前端开发。精通架构与设计模式,为数家公司定制过框架与前端标准。

03

0元领取前端面试题,知识点全覆盖

添加课程助教免费领取网易高级前端开发工程师进阶资料包,内涵学习路径+源码+项目实战+面试真题,方便大家重点突破,迅速进阶。

现在扫码,限时3天免费领取。

扫描下方二维码,获取高清版

底层原理+项目实战+面试真题

免费领取

不用转发,不用分享

04

到课即送网易内部案例课

多重到课福利,参与直播即送:网易严选、网易云等一线实战项目视频+项目源码

免费直播,海量资料,先到先得~

往期直播干货回顾↓

Vue项目如何提高效率?大厂2大实践总结告诉你相关推荐

  1. vue 项目中H5页面,实现大转盘活动

    vue 项目中H5页面,实现大转盘活动 <template><div class="about"><div id="app"> ...

  2. vue项目职责_进大厂兼职的机会来了!腾讯微校项目招人了!

    在经历了双十二等各种剁手 准备冬至.圣诞节的各种礼物之后 你是否也零钱"归零",余额"无余" 许多同学会选择做兼职 这样既能利用空余时间挣一些零花钱 还能积累一 ...

  3. vue项目中使用swiper实现中间大,两边小的轮播图

    前言 项目中使用的vue,刚好有需求要实现轮播图,突出显示当前图片,两边展示其他图片:通过查各种资料,实现了,故在此记录下来 实现效果如下: 下面我们来看下实现步骤: 第一步:首先在项目index.h ...

  4. 管理项目,提高效率---Trello简单使用

    转载地址:http://www.jianshu.com/p/fbf015f4f3f3 工欲善其事,必先利其器 前言 最近公司开新的项目,团队中有用到Trello进行项目管理,自己也有查阅一些资料,理解 ...

  5. VUE项目中图片加载过大处理方式-渐进式方式-懒加载方式--附源码

    解决有两步: 1.采用渐进式加载:原图未加载完时显示比它内存小的模糊图: 2.采用懒加载:只加载可视区域的图片,即滚动到可视区域时再加载图片 vue-lazyload-img:VUE图片懒加载插件 v ...

  6. IDEA打开vue项目,每次打开的都是上一次的vue项目,即同一个vue项目,解决方法

    今天在打开其他vue项目的时候出现了一个大bug 前提:我用一个写好的vue项目vue_01复制之后重命名为vue_02,其实这里并包名没有修改成功,你还需要打开vue_02,右击项目Refactor ...

  7. Vue - 使用 腾讯云SCF部署Vue项目(支持GitHub Action)

    一.前提条件 1.本地已有一个Vue2/Vue3项目 腾讯云SCF本身支持使用模板创建(模板创建参考)一个Vue项目并部署,但本文主要讲解将本 地原有的Vue项目改造为支持Serverless SCF ...

  8. 做一个项目,平时都用到哪些工具提高效率(上)

    做一个项目,平时都用到哪些工具提高效率(上)  转载 做.NET 相关项目,Visual Studio 2008,SQL Server 2000/2005是标准的配置,但是,除此之外,还可以应用哪些工 ...

  9. 提高 webpack 构建 Vue 项目的速度

    提高 webpack 构建 Vue 项目的速度 前言 最近有人给我的 Vue2 后台管理系统解决方案 提了 issue ,说执行 npm run build 构建项目的时候极其慢,然后就引起我的注意了 ...

最新文章

  1. 计算机水平flash试题,计算机flash考试试题
  2. SpringCloud(第 029 篇)配置客户端 ConfigClient 接入配置服务端
  3. Python 将视频 截取 成图片 附cv2处理教程
  4. python爬取音乐并保存_python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
  5. 工业级路由器和家用路由器的区别_工业路由器和普通家用路由器有什么区别啊?工业路由器好不好用啊?...
  6. [react] 请描述下事件在react中的处理方式是什么?
  7. java 分层领域模型_Java领域模型 | 学步园
  8. supervisor 重启_每日一说:说一下supervisor进程管理工具
  9. 敢闯会创,第七届中国国际“互联网+”双创大赛腾讯广告产业命题等你来战!
  10. python request 库传送formdata_Python Requests库 form-data 上传文件操作
  11. java删除sql表中记录,您将如何维护SQL表中的历史记录?
  12. socket通信,server与多客户端通信(二)
  13. Java进阶:SpringMVC文件上传
  14. GridControl中进行多选数据,可以做多行删除
  15. React Native系列文章
  16. python turtle库下载_turtle库安装
  17. 推荐免费下载380套大型商业源码
  18. keras的net中使用tensorflow函数, AttributeError: ‘NoneType‘ object has no attribute ‘_inbound_nodes‘
  19. 李佳明的成长经历与留学选择
  20. CSS—— grid 网格布局

热门文章

  1. SQLite 3 一些基本的使用
  2. php使用redis做缓存,php使用redis做缓存和使用redis保存session
  3. python读取文件夹下特定的文件_python os模块获取指定文件夹下所有文件名
  4. 第四范式入围Gartner新兴技术与趋势影响力雷达全球代表厂商
  5. 为最快动脉线诊断 铁科院联合第四范式完成高铁智能化巡检应用
  6. 520,#爱 with AI#
  7. vb.net2019-多线程并行计算(6)
  8. 【Python】特征工程:数值特征的缩放与编码
  9. 【数学基础】一份非常适合人工智能学习的高等数学基础材料中文版 (国内教材精华)...
  10. 推荐:李沐开源新作,一起来《动手学深度学习》