那你理解了上面的内容,webpack到底做了什么?webpack其实就是在你的电脑,首先安装node环境,同样配置好了mime类型,然后vue的开发者才会用build命令,做了一次解析多个目录,把所有.vue后缀的文件打包到了一个js当中而已。
注意:我并没有用编译这个词,而是用了打包。这里就说一下坏处了。用webpack打包压缩的vue项目很简单了,一个index.html,加上多个打包压缩后的.js。就可以发布了,当然中间肯定做了ES5语法替换,去除空格,压缩,甚至可以做到加密。但是问题就是这样做的前端项目出现一下几个问题:
1、你开发的模块越多,特别是npm加载的第三方组建越多,你自己可以看看每次你打包时多少个文件就明白了,只要你用到的组建,即使只用了其中一个很简单的功能,但npm发布的作者代码量都非常大,你可以看到每次打包都是几千个组建被加载,那代码的量就更恐怖。所以也就是webpack打包的项目由于.js的代码量巨大,一般都是几M几十M的单位,首次加载网页白屏,需要等待很久原因就在这里了。如果你是买的1M的国内VPS,10M的js,你可以算一下一个人访问时需要花多少时间才能加载完成,多人访问时需要多少时间才能加载完成。
2、现在都是开源时代,特别是前端,html,css,js,在vue,react,angular没有出来之前,没有人考虑加密的,及时是js加密,也可以理解为保护核心功能而已。但css,html文件都是独立的。因为你再如何折腾,浏览器只要渲染成功,都可以打开控制面板看到html代码和css代码。
3、打包的必要性和编译的理解。很多静态语言为什么要编译?编译的目的是转换为二进制,脱离执行环境,直接交给系统,操作CPU,提高执行效率。
webpack打包出来却只是压缩。
4、代码维护变困难,比如以前开发html+css+js最终执行都是放入浏览器三个核心解析器来执行。也就是你根本不需要搭建什么后端环境,直接桌面拖拽.html文件到浏览器就能执行。现在变成了,先安装个node环境才能开发前端,node 是后端环境哦。。。。并且整个开发流程,你只是为了用webpack打包,或者npm下载别人开发好的组建直接用时才会用到。。也就是整个项目的代码质量非常差,很多都是第三方组建,npm是个人都能发布,你没办法知道你每行代码的必要性,产生了很多冗余代码。并且还开启了一个本地后端ndoe环境。。。实在违背了大前端(女权,男权)一定要前后端完全分离的思想。
5、就是seo问题了,前端极端者(大前端,类似女权,男权的人),总是强调前后端完全分离,但开发时却用了node后端环境,然后理解是js的后端环境,所以又提出js天下第一。。。但最头疼的问题是,如果你是大公司,多个node服务器是极其简单的事情,如果你是小公司,开发出一个作品,切不被收录,确实有点自娱自乐的感觉,那单独搞个node服务器?搭建ssr与处理渲染?是不是有点把简单的事情复杂化了?我并不反对vue,观念很好,你可以直接局部虚拟化嘛,或者用jquery?或者自己写js?没有什么落伍的,一切都是为了考虑开发效率和成本。如果你稍微理解一下后端mvc架构,早就是实现了前后端分离,只是不够彻底,需要你自己熟悉一下模板语言的语法而已。。
更何况,大家几乎除了大公司网页,在搜索引擎能找出来的网页都是传统开发方式,比如你们最熟悉的wordpress,discuz等等。。。
自己就在一个传统开发方式的论坛,为什么找开源产品就这么极端?一定要webpack的才觉得不丢人?好好思考一下这个问题先。
以上我们算是基本理解了js,ES,VUE等的概念,那跟css有什么关系?
你可以这样理解,html,css,js是完全独立运行在浏览器引擎中的,你可以做个实验,单独写css代码,然后用js动态添加删除dom元素,你会发现,动态添加的dom同样被css监听到,css的效果同样起作用了。
那你把css写入到js目的是什么?
如果你理解了独立运行的概念,把css写入js,就好比,人家本来好好引擎级别的C语言监听dom变化的,你非要拿个脚本js逻辑语言来处理css,但你也只能做到,动态加入css代码到引擎,也就是,你只是用 js,到底什么时候写这个css代码,而没有做到任何优化动作。
所以正确的使用js操作css的办法,我们一直是用js来动态添加class或者删除class,因为理解了独立运行,没有什么办法比原生css的执行能力强,所以写动画,都是推荐用css编写动画而不用js来编写动画的原因也在此。
后面还有很多,已经丢失了。。。我也懒得再说了。
其实有很多丢失了。。论坛帖子最多1万字,还触碰到非法关键词,所以没注意分割时丢失了。我单独补充一下,为什么开源作者会这么敏感的问题,因为你如果认同了我上面说的,你会发现码农跟有独立开发能力的开发者区别还是蛮大的,因为开发者至少知道底层工作原理,才能开发出市面上不存在的东西。而码农的定义就是只要是涉及到工作中的项目不论难度是否大,首先想到的是github,npm等等开源库看看有没有现成的,或者就是搜索引擎查找,但是作为一个有独立开发能力的人,肯定是需要知道自己每行代码的含义的。npm,github有很多大神,但也有很多参差不齐的发布者,代码质量和代码冗余性,以及安全性都是没办法保证的,比较没有官方审核,只要你有账号就能发布。所以如果好不容易开发出一个独立作品,却被不懂行的人质疑,实在是有点憋屈,所以敏感,极端也是可以理解的。但心态不好。就如大家所说,观念不同而已。用人家的组建拼拼凑凑就能出一个项目,何必一行一行代码写呢?但是,问题就是现在行业氛围导致说出多了解一下原生,这样一个多么普通的基础原理,都被口诛笔伐,只能算是行业悲哀了。时代变了,买本书看看原理的时代已经过去了。没人关心什么基础,甚至觉得高校教的基础都是垃圾,拿个UI框架,后端框架调用两下就出来的东西,就是比自己写的优秀的观念占了主流,着实没有想到的。
论坛限制太多了。发了三贴,还有关键词。。。。处理了大半天才发布出来 |