作者丨PranaySuresh
策划丨万佳
“三人行必有我师焉,择其善者而从之,其不善者而改之。”这句话出自论语,却同样可应用到我们的职业生涯中。在职业道路中,你应该学会向那些成功人士请教,询问他们做了什么、为何这样做和具体实践。在本文中,我将分享我在职业生涯中所学到的全栈工程师经验。作为一名年轻工程师,我在科技行业和硅谷打拼了十年。这十年,我一直在高速增长的创业公司工作,经历了与此相关的所有起起落落。从构建nextgen电子邮件客户端,到在全球范围内推广电动汽车,再到网上购物结账,我学到很多。
当回想过往,我觉得有些错误完全可以避免。在本文中,我将分享我在职业生涯中所学到的全栈工程师经验。从中,我总结了十大经验教训。我相信,这些经验教训值得起时间考验,并在未来几年里依然适用。
这份列表从前端开始,然后是后端API和数据库,最后是工程最佳实践/流程。
经验总结CSSSpecificity
组件层次结构中的设计状态
后端编程中的面条式代码、千层饼式代码和馄饨式代码
生产中的Postgres
欲速则不达
投资自动化
掌握你的工具
最小可行性产品(MinimumViableProduct,MVP)
研究支持开发
科学调试
1CSSSpecificity错误:我的CSS不适用。我要用!important。
教训:应该为特殊情况保留使用!important,因为它们破坏了整个CSS层次结构,并强制使用特定样式。所以,你有必要了解CSSSpecificity。
CSSspecificity是浏览器应用的一组规则,用来确定哪个CSS样式更specific。你可以将其视为基于点的系统,它决定哪种CSS样式获得优先权,并最终应用于DOM元素。
如果你想知道,为什么你的CSS没有被应用,这与CSSspecificity有关。在大型项目中,这是一个很常见的问题,在这类项目中,像SCSS这样的预处理程序与复杂的CSS层次结构一起使用。了解CSSspecificity将有助于你保留使用!important,仅在极罕见的覆盖情况下使用,例如,当你想要覆盖CSS库或让iframe覆盖主机站点样式时。
本质上,优先顺序是这样:IDselectorsClassselectorsTypeselectors。!important和内联style属性会覆盖所有的CSS。
对于应用于元素的每个CSS,你都可以轻松确定哪种样式将生效。例如,如果你加载上面的HTML代码:
在本例中,IDselector优先级高于typeselector。如果冲突的CSS选择器具有相同的优先级,那么将选择CSS文件中的最后一个。
最后,ChromeDevTools将会显示如上图所示的specificity顺序。如果你无法使用CSS,请查看Chrome使用的specificity顺序,然后添加一个更具体的选择器(如ID选择器、类选择器、类型选择器),让你的CSS更特定,并指示浏览器选择它。
如果你不想这么做,请看看这个specificity计算器