Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

直接对组件的预处理

  以 STYLE 元素的形式将 CSS 直接嵌入到 HTML 中的做法经常是被嫌弃的,因为人们觉得把 CSS 放在 HTML 中很乱。其实我完全不反对这种玩法,Polymer 中全是这么用的,只要组件化,写在一起又有什么关系呢?它们本该在一起的,只是被人们硬生生地拆散了而已。
  早期的 Web 是以页面为单位,每个页面里都有很多东西,因此资源堆在同一个文件中就会很乱。于是人们都喜欢把 js、html、css,分开。甚至在很长一段时间里,每当要新开一个 Web 项目,前端要做的就是新建这个三个目录(还有 img 目录也是惯例)。
  后来各种框架流行起来后对以页面为单位的组件化已经开始发展,于是出现了以页面为目录名,里面直接存放 js、html、css 文件的目录结构。这样便于每个页面单独开发时容易找到相应的资源。
  如今,对功能模块的组件化都开始出现。那么被分开了这么久的 js、html、css 是不是又该合并回来了呢?polymer 的思想是所有东西都打包成 html,webpack 的思想是把所有东西打包成 js。总之,它们都是希望把这些被残忍地拆散这么久的 Web 各部分重新合并起来以还原一个完整的 Web。
  在以扩展名来区分文件的时候,人们为了方便代码的书写引入了各种预处理。那么如果文件合并了,这些预处理可能就无法像原先那么用了。这点是组件化的一个坑。之前我用 Polymer 做的小项目,虽然业务部分很快就搞定了,但至今都没有任何预处理、压缩、合并等东西。因为当时没有什么插件是可以直接处理 Polymer 这种神奇的文件结构。
  虽然这是一个坑,但也不算深坑吧?如果非要对内联在 html 文件中的 CSS 和 JS 做预处理,只要写个正则替换就好。如果觉得正则太黑魔法也可以考虑 AST,反正 HTML 是很容易解析的格式。经过这样对组件的预处理,最终可能会诞生出比对文件预处理还有用的黑魔法。比如通过预处理来实现 STYLE 元素的 scoped 属性兼容,这就是曾经的 CSS 预处理工具无法做到的。
  如果按照这个方向发展下去,将来的 Web 可能会不再是 js、html、css,以一种特殊的组件开发模式来搞定所有事情也是可以有的。
网名:
3.80.32.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^