最近一直在看关scss相关的内容。忽然觉得其实前端真正能用好scss这个技术的人应该没多少,大部分人其实更关注js的细节,但是其实css和scss也很值得去关注一下。scss其实也是一种脚本,也可以写出条件判断,循环,变量,函数等等,只是这些东西在我们的项目快速迭代的过程中不知不觉的被忽略了。
当然,我们使用的各种前端ui框架,开发这些框架的团队对scss肯定是有一定研究的。因为组件的好坏,除了javascript的逻辑之外,更多的是样式的展现,如何设计这些样式的变量,函数,如何去继承这些样式,如何适配多种尺寸的屏幕,甚至考虑到某种特殊的功能,比如打印,都是需要经过深思熟虑的,这样才能做到工程化。
我们平时面试时被问到能不能独立开发组件,大部分回答可以独立开发组件的,其实也只是开发组件而已,如果真的需要做一整套组件,考虑各种细节,样式定义什么的,我想应该很少人能真正做的到。以我的能力,一个人肯定是不行的,不过话说回来,如果照着别的框架山寨一套,那就另当别论了。
前端技术的局限
今天去市区找几个小伙儿聊天,中间有个人加我微信咨询一些问题。
之前有不少人,一般情况下我能帮他们写就直接帮他们写了。但是也有的比较奇怪,只是简单的问个报价,然后就没有下文了,要不就是类似300块钱做个淘宝的那种。
之所以提到这个,是因为他问到了flutter这个东西。flutter我门都知道是用来做客户端开发用的,体验堪比原生应用。但是有多少人真正的掌握了这项技术呢?这个比例还是很少的。
所以在回来的路上,我又想起来我之前思考过的一个问题:技术都是有使用场景的,单纯的会几个框架对于个人发展来说还是太局限了。
技术都有自己的使用场景表现在,比如vue和react通常用来做web端开发,尽管mpvue和taro可以开发多端的小程序,但是想要扩展更多的端,我们就必须学习另外一种框架。Echarts和antv 是目前流行的可视化相关的组件库。element-ui iview 以及antd是目前流行的前端UI库,但是仅限于web端,小程序及h5通常需要单独使用别的类似的库,antd-mobile, vant 或者taro-ui。这些技术点都是有特定的场景与之对应的。
taro号称可以进行h5,小程序甚至可以打包城rn,但是如果真的打包成react-native的话,其实目前taro-ui中应该还没有与之对应的多端组件。也需要我们去使用react- native的相关组件。
又比如比较火的低代码平台,虽然市面上有一些比较成熟的低代码平台,但是它们大部分其实都是有特定的应用场景的,并不能够做到普遍适用。
那么存在能够适用于所有场景的技术吗?肯定是存在的,而且这些技术都是最基础的技术,但是这似乎又有些矛盾。
我们基于基础的技术,封装适用于特定场景的抽象技术,但是封装后的东西又变成了一个局限的东西,是不是有些矛盾呢?
关于flutter我自己对它的理解其实也不深刻。技术这个东西本身就是一个孰能生巧的过程。每天都写,每天都思考,日积月累就会有一个量变到质变的过程。就好比前几年比较火的web-component,前端微服务这些概念,当你真正去思考,知道它门是怎么实现的以后,就会觉得其实也就是那么回事儿。
只是我们被公司的业务束缚在电脑前,没有时间去思考而已。
说到这里,我想到了一个问题。我们每天的工作时为了挣工资,但是我们从来没有想过工资的本质是什么。
昨天闲着的时候随便翻了翻资本论,发现里面对这个问题的解释非常清楚:
劳动力价值采取工资的形式,也就消灭了工作日分为必要劳动和剩余劳动、有酬劳动和无酬劳动的一切痕迹,工人的劳动全都表现为有酬劳动。
感兴趣的朋友可以去看看这部分的内容,这里到不是说什么愤青的言论,只是对这些东西有了一定的认识之后,某种程度上会改变我们看问题的一些角度,使我们能够更加辩证的看待问题。
还是接着聊flutter吧,早在2019年下半年,用flutter做过一些简单的东西,但是后来就又不用了。关于app的技术栈,最早用过appcan, 18年用过Cordova,19年用了一段时间的flutter,后来就没怎么遇到过客户端开发的需求,基本上也就生疏了。但是如果需要重新上手的话,估计也很快。
关于学习
前端的学习其实没有什么捷径。多看,多思考,多总结。
多看文档,思考文档中描述的场景。多看书,最好看英文原版,因为看别人的译文看的其实只是别人对特定知识的理解,有时候会差些意思,只有看了原版,自己才能真正的对某些知识点有自己的理解。
多思考多总结就不必再说了,毕竟老话说的好:
学而不思则惘,思而不学则怠。
flutter的开发环境我又重新搭起来了,应该再花点时间去琢磨琢磨。