【 干货】前端开发 需要注意的事项❗️Be Careful❗️

引子

大家好,我是HoMeTown,从我成为一个职业切图仔至今,满打满算差不多有5年了,想给自己写一个备忘录,针对每个技术,总结一下我在开发中遇到的需要注意的事项,并分享给大家,共勉 GitHub地址

HTML

  • 根据目的使用合适的标签,可以有效的改善SEO,其他小伙伴也更容易理解你写的HTML结构。
  • 合适的位置使用a标签、设置img标签的alt属性、role属性、label属性来提高性能与访问性。

CSS

  • 不要写额外的没用的CSS属性。即使你写的这个CSS对页面没啥影响,也有可能对你后来新加的元素产生一些奇奇怪怪的副作用
  • 相邻元素之间使用margin,父子元素之间使用padding
  • 使用CSS框架时,最好搞清楚他最后会转换成什么样的CSS,有可能会出现属性冲突,我个人比较喜欢Winicss和CssModule一起使用。
  • 一定不要忘记写最后的分号,不然光排查这个问题就会很久。

JavaScript

有机会最好去了解一下JavaScript的历史(《JavaScript高级程序设计》里就有提到),可以加深对前沿技术的理解。

万变不离其宗,一定要搞明白JavaScript,不论是React、Vue、Next、TypeScript,到最后,他都会转为JavaScript,交给浏览器去执行。

  • 变量尽可能使用const/let来缩小变量作用域,尽量不要使用var声明变量。
  • 不要重复使用一个临时变量
  • 不要随意的写一些单词简写,就算名字长点也没关系,把一些有效信息塞进变量名称里,最好通过读变量名就知道这个是干啥的。
  • 注释里写一些不能从代码中了解到的背景和原因,最好简单简洁的陈述。
  • 不要在一行代码中处理一项以上的逻辑,分开行处理
  • if、switch、for保持浅嵌套,不要超出2个嵌套,如果业务逻辑不允许,请单独拿出来一部分处理。
  • 必要时考虑 else的分支是否可以直接用提前return来结束
  • 一定要了解用于处理异步的 .then 和 async/await。
  • 每一个API一定要写清楚每个参数的作用是什么,这个API返回了什么,用在什么地方。
  • 熟悉http请求和响应的基本options.

包管理器

  • npm虽然是nodejs使用库的包管理器,但是也能在web项目中使用。
  • 能用yarn就用yarn,使用方式差不多,但是性能和版本控制都要好于npm。
  • 尽量不要使用cnpm,你不知道他会在版本控制中出现什么问题(package-lock)

TypeScript

  • "strict: true" 最好开启严格模式。
  • 原则上不使用 any
  • 像编写设计文档一样写代码,最好在注释中描述清楚类型的含义和作用
  • 如果你有一个需要很长时间才能解决的ts error,先使用any或者禁用这部分错误,Ts可以提高质量和开发效率,但是咬死坚持,绝对也没啥好处,永远不要搞错目标和手段
  • 如果设置tsconfig.json中的baseUrl: ‘.’,那么import路径会变成从根目录开始的相对路径,更容易理解,推荐这样配置。
  • 许多库现在基本都有TypeScript的类型定义文件,npm install --save-dev @types/库名安装使用。

安全

  • 不要在浏览器端存储隐私信息和API密钥,可以选择硬编码在JavaScript代码中,或者加到env里,原则上应该保存在服务端。
  • 预防XSS,设置字符类型和字符长度限制,如果url字符串是以https/http开头,一定要检查!防止注入SQL与script代码!
  • 预防CSRF,使用JWT进行身份验证!
  • 尽量不要连接免费wifi的时候登录你们自己的网站,去了解一下DNS的工作原理,你会发现这是一个很危险的行为。
  • 谨防网络钓鱼电子邮件。
  • 不要忽视操作系统和应用程序的更新,有可能他修复了一些不方便说的安全漏洞。
  • 最好不要使用一个密码,尤其是生日,去了解一下密码管理器。

Vue

  • 原则上一定要记得在 style标签上写上 scoped,防止样式污染。
  • 其实没有必要一直使用Vuex,其他状态管理工具也可以多看看。
  • 不要对Vue的源码有太执着的想法,毕竟人家一个团队那么多人,不是你的小脑子就能看完的,了解基本的思想即可。
  • 尝试在Vue中使用hooks。
  • 在vue2中修饰符 .sync可以使子组件能够修改父组件的数据,快速达到v-model的效果。
  • 可以试试component组件的is属性,用来做组件的动态切换。
  • 图片、css的引用在字符串最前面加上“~”
  • 表单的校验最好直接使用正则,少写逻辑代码。
  • 合理使用slot进行插槽,你会发现会少很多propsdata。
  • 合理使用计算属性。
  • 合理使用watch。

React

性能优化

  • 看看浏览器中的PerformanceNetwork,你可以发现瓶颈在哪。
  • 主要原因得看问题,具体问题具体解决。
  • 不要发生不必要的渲染。
  • 不要有长延迟API。
  • 下载数据量不要过大。
  • 有没有可能是后端或者网络的问题?

生命周期

一个类组件的生命周期大致可以分为3个阶段:

  • Mounting,显示组件之前。
  • UpDating,显示组件和更新状态时。
  • Unmounting,组件销毁卸载时。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-up2EvHZs-1667297888149)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/59f7ee5ec6a946e7bba31103532a2b88~tplv-k3u1fbpfcp-watermark.image?)]
一个函数式组件可以通过钩子useEffect实现与类组件相同的生命周期。

重绘组件的条件

  • data更新
  • props更新
  • 父组件重新渲染

组件设计

  • 不要添加太多的props。
  • 随着项目扩大,业务代码复杂会给组件管理带来很大的挑战,一定要写清楚组件的作用。
  • 实际上很难对组件进行一个100%的精准划分,好的组件需要灵活的考虑规则,只要与项目其他组件的设计风格以及想法一致即可,原则上一定要区分展示组件和逻辑组件。

Hooks

useState

  • 执行seState函数后,并不会立即反应状态,你可以在重新渲染后使用更新后的状态。
  • 引用类型变量 更新内容可能不会引起重新渲染。
  • 如果想从当前状态生成更新的状态,使用setState的回调函数。

useEffect

  • 在第二个参数中适当的设置变量,避免不必要的渲染或者无限渲染。
  • 考虑一下是否真的需要使用useEffect,如果你可以用常规的api实现。

useContext

  • 更新Context时,Provider下的组件会出现不必要的渲染。

渲染模式

  • CSR(客户端渲染),初始渲染很慢,但是所有元素都是在客户端构建的,但是由于空的html,对SEO很不利。
  • SSR(服务端渲染),服务端返回渲染好的页面,返回HTML。
  • SSG(静态站点生成),内容构建后无法动态修改,不利于频繁更新网站。

写接口

  • 切记!无论什么时候,从用户的角度出发,明确使用API的目的,永远是机器来靠近人,而不是人去匹配机器
  • 接口名称尽量短一点,但是不要瞎省略,比如/user -> /u
  • 不要使用大写字母,只能使用小写!
  • 使用正确的HTTP方法,GET、POST、PUT、DELETE
  • 在URL中学会用单复数形式表示名称。
  • 资源名称一定是名词,不要用动词
  • 数据格式基于JSON。
  • 使用合适的相应状态码。

做人

  • 着急的活完成了一定要向上报告!
  • 分清楚事实意见
  • 不是天才,就做一个努力点的普通人!
  • 要善于与交谈!
  • 想想竞争者的优势?你为什么没有这个优势?可不可以有?
  • 无论什么时候,想想有没有双赢的方法?分出输赢很容易!
  • 多为大局着想,学会为未来做准备,而不是手头的任务。
  • 提问或者讨论问题的时候,请不要浪费别人的时间,不要忘记感恩,学会尊重!

爱情

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GdtlqhKU-1667297888150)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1d6fe46d863f4e969f3338ba7e03e752~tplv-k3u1fbpfcp-watermark.image?)]

写在最后

如果有任何错误和建议,请随时发表评论。

我会持续维护这篇文章。

如果你有补充,也欢迎提交PR!给个Star!GitHub地址

下次见~ 我的朋友,我是HoMeTown👨‍💻‍,➕我VX,💊你进群,这是一个大家共同成长、共同学习的社群!在这里你可以:讨论技术问题、了解前端资讯、打听应聘公司、获得内推机会、聊点有的没的。

👉 vx: hometown-468【单独拉你】

👨‍👩‍👧 公众号:秃头开发头秃了 【关注回复“进群”】

🤖 Blog:HoMeTown’Blog【点开看看】

高赞好文

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coder HoMeTown

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值