5 分钟搞懂 Monorepo
由于谷歌在 Monorepo 上的实践,Monorepo 受到了越来越多的关注。Monorepo 意味着把所有项目的所有代码统一维护在一个单一的代码版本库中,和多代码库方案相比,两者各有优劣,需要根据公司文化和产品特性进行取舍。原文:What is monorepo? (and should you use it?)[1]
Monorepos(单一代码库)有助于加快开发工作流程,在本文中,我们将帮助你认识这一代码组织模型是否适合你的团队和公司。
60 个 Vue 常见问题汇总及解决方案
# Q1:安装超时 (install timeout)
方案有这么些:
cnpm : 国内对npm的镜像版本 | |
/* | |
cnpm website: https://npm.taobao.org/ | |
*/ | |
npm install -g cnpm --registry=https://registry.npm.taobao.org | |
//cnpm 的大多命令跟 npm 的是一致的,比如安装,卸载这些 | |
yarn 和 npm 改源大法 | |
// 使用 nrm 模块 : www.npmjs.com/package/nrm | |
npm config : npm config set registry https://registry.npm.taobao.org | |
yarn config : yarn config set registry https://registry.npm.taobao.org |
停用moment.js ,基于 date-fns 封装日期相关utils
# 前言
本文将简要介绍前端常用日期处理库:官方停止维护的 moment.js,无缝代替 moment.js 的 day.js,逐渐流行的 date-fns,最后基于 date-fns 封装常用日期处理的 utils。
如果项目中有用 moment.js 的可以用 day.js 代替减少体积做优化,新项目可以直接选择 date-fns。
为什么前端开发者都不用 try finally 了?
在 JavaScript 开发过程中,资源管理一直是一个需要认真对待的问题。无论是文件句柄、数据库连接还是其他需要手动释放的资源,开发者都不得不编写繁琐的清理代码。传统的解决方案是使用 try…finally
结构,但这种方式往往导致代码冗长且易于出错。
从15个点来思考前端大量数据渲染与频繁更新的方案
# 从 15 个点来思考前端大量数据渲染与频繁更新的方案
先来总结一下处理方法有哪些:
- 惰性加载 (懒加载)
- DOM 操作合并处理
- 虚拟列表
- 分批数据加载
- 简化 DOM 结构
- 优化资源
- Web Workers
- 用户操作优化
- 差异更新
- 服务端渲染
- 动画优化
- 逐帧渲染
- 异步更新
- WebAssembly
- GPU 加速
8 个很棒的 Vue 开发技巧
# 路由参数解耦
通常在组件中使用路由参数,大多数人会做以下事情。
export default { | |
methods: { | |
getParamsId() { | |
return this.$route.params.id | |
} | |
} | |
} |
在组件中使用 $route 会导致与其相应路由的高度耦合,通过将其限制为某些 URL 来限制组件的灵活性。正确的做法是通过 props 来解耦。
const router = new VueRouter({ | |
routes: [{ | |
path: /user/:id , | |
component: User, | |
props: true | |
}] | |
}) |
将路由的 props 属性设置为 true 后,组件内部可以通过 props 接收 params 参数。
export default { | |
props: [ id ], | |
methods: { | |
getParamsId() { | |
return this.id | |
} | |
} | |
} |
您还可以通过功能模式返回道具。
const router = new VueRouter({ | |
routes: [{ | |
path: /user/:id , | |
component: User, | |
props: (route) => ({ | |
id: route.query.id | |
}) | |
}] | |
}) |