最近在做一款 Chrome 插件,就一直思考,前端到底能做什么,能做什么东西。我感觉前端貌似已经无所不能了。
本质
前端本质大家都很清楚,是在浏览器内页面编程,HTML 为骨架,CSS 为样式,JS 为动作,三者结合,呈现在浏览器中。
发展
对于前端来说,13年 React 的出现就像 09年 Node 出现一样,意义是巨大的。
Node 的出现,前端实现了模块化(bower、npm)、工程化(Grunt、gulp、bf、webpack)。这些再配合 babel 使用 ES2015+,写代码简直不要太舒服。
但,直到 React 的出现,前端才终于有了一个公认的组件化框架,它能够 HTML in JS,
把 HTML 和 JS 结合,后来 CSS in JS,至此,HTML、CSS 和 JS 终于能够写在一起,实现了组件化。
React 不光能够实现组件化了,还能够 Virtual Dom,一方面很快,但我觉得另一方面意义更大:
因为 VM,所以我们前端可以使用 React Native 用写前端的方式去写客户端程序。
- iOS 、Android 是 React Native
- DOM 是 react-dom
- SSR 甚至可以是 react-dom/server
周边
微信小程序
谷歌的 PWA 出现,给了前端更多挑战和机遇,我们可以让用户拥有更好的体验
Chrome 插件也算是使用前端的方法去写 Chrome App
Electron 甚至已经可以让前端去写桌面应用了
未来
说了这么多,前端的本质还是 HTML、CSS、JS 么?现在是不是已经走向全端了。是不是要掌握上面说的那些技术才是一个合格的前端呢?
我从去年开始觉得,客户端开发和 Web 前端开发其实是一回事,都是基于界面编程,所以思想都是一样的,只不过是语言和环境不同而已。所以,今年开始想学学 Android 开发,不过现在还没入门 -_-! 。
我看到很多公司的前端部门也都有这一想法,成立了一个所谓的『大前端』部门,里面有 Web 前端、iOS 开发、Android 开发。其实,倒也合理,因为一个工作2、3年的人,对于前端这一『思想』熟络之后,再去学 iOS、Android 只不过是过语言关而已。这就是『全端』吧。
而因为 Node 的出现鼓吹了很多年的『全栈』,我倒是很不看好。首先,因为 Node 的出现很多前端觉得 JS 也可以写服务端了,可是你要知道语言可是最好学的,而相应的后端知识岂是一个 JS 就能涵盖的。
所以,前端的未来应该是『全端』而不是『全栈』。
不知道自己能不能做到呢,惆怅。