requirejs 到底有什么好处?
无论是在backbone时代,还是angularjs 时代 我都用过requirejs, 后来慢慢全都去掉了, 因为在前端开发requirejs 感觉没有带来任何实质性的好处.
从几个方面说说我的感受
1 文件加载 文件加载已经很多, 即使手动用script 引入我也感觉很方便, 因为理由主要有几点, 前端的页面没有非常复杂, 虽然我现在已经不推荐SPA, 即使是目前主流的网站,新浪微博, 淘宝, 的页面 也没有多复杂, 我真的不相信js已经大到比后端还复杂的程序, 一个后端路由出来的页面不会有多复杂. 这是一定的, 我觉得最复杂的应用也就是企业ERP了, 网站这种页面的确不太复杂.
另外一点就是生产环境一般都是压缩成一个文件, 文件就一两个script就够了, requirejs在生产环境完全没用. 文件加载这块, labjs head.js 已经够用了.
2 js模块化 和 模块依赖
requirejs 也就在这里 而且是在开发环境 看起来有点作用, 其实也不大, 模块化这个问题还是看具体用的库的写法, 非要都按照requirejs 来 完全是增加了开发成本, 至于依赖也是同样道理 你用angular, 用ember 用其他, 依赖问题库都解决了, 为啥还用requirejs?
另一观点requirejs 可以解决团队大规模协作的问题, 我不知道每个公司的前端团队有多少人,可能例如淘宝都是30人起步的, 但即使是30人, requirejs仅仅解决了js得模块化, 例如未来的html import, 没有根本解决模块的问题, 而且不引入mvvm库, requirejs 没有减少任何代码量. 和backbone差不多 哈哈.
3 组件化
为什么我觉得组件化 和模块化 不能混为一谈, 看看polymer就知道了, 我们前端还是希望组件化, 这样可以重用.
我来说说 ”重用” 首先,对用户的产品 重用基本是伪命题, 就像跨平台一样, 重用的组件必然用户体验不佳, 重用的组件适合做后台统计等不强调用户体验的产品.
还有组件化,是html 组件化, 还是css 组件化, 还是js组件化? 目前没有定论, 我希望是html组件化 声明式组件这样用起来方便, 不希望是js组件化 requirejs 这里基本就和组件化就没啥关系了.
所以我感觉requirejs 除了在开发环境中 引用一些js基础库方便,例如underscore这种, 基本没啥好处, 引入一大堆语法不说, 搞得所有库都要写成这样, 代码没减少反而多加了几行. 还不如只引用小型mvvm库提高生产力效率 来的方便易用.
requirejs 到底有什么好处?的更多相关文章
- CommonJS、AMD、CMD、NodeJs、RequireJS到底有什么联系?
JS中的模块规范(CommonJS,AMD,CMD),如果你听过js模块化这个东西,那么你就应该听过或CommonJS或AMD甚至是CMD这些规范,本文包括这三个规范的来源及对应的产物的原理. 一.C ...
- requireJS到底是什么?
1.requireJS是让js代码模块化:而且js之间的依赖关系,不再依靠script标签的顺序,可以加载不阻塞 2.requireJS加载js的方法:<script data-main=&qu ...
- 企业为什么要实行ERP系统,它到底有什么好处呢?
目前,我国正在大力推行企业信息化建设,作为一种包含了现代管理思想的ERP(Enterprise Resource Planning)系统日益成为现代企业业务运作的主要工具,为了提升管理水平,提升企业竞 ...
- 将requirejs进行到底(一)
随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,我们需要团队协作.模块复用.单元测试等等一系列复杂的需求 ...
- RequireJS入门级_RequireJS能给我们带来什么帮助?
前言:其实很早前就已经接触和了解到RequireJS了,当时只是大概明白它能用来控制JS的加载顺序,即:页面一定要先加载这个JS,再加载那个JS,对于RequireJS的好处还没有一个真正的体会和认识 ...
- requirejs基础教程
一.初识requirejs 随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,我们需要团队协作.模块复用. ...
- 语义化的html结构的好处
HTML是提供网页文档内容的上下文结构和含义:html本身是没有表现的,我们看到例如<h1>是粗体,字体大小2em,加粗:<strong>是加粗的,不要认为这是html的表现, ...
- JS模块化工具requirejs教程(一):初识requirejs
随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,我们需要团队协作.模块复用.单元测试等等一系列复杂的需求 ...
- @synthesize 有什么好处?
如果不用 synthesize,操作的是 @property中定义的变量,使用synthesize之后,间接的操作了一个新的成员变量,到底有什么好处?直接只用一个@property不是更简单吗?
随机推荐
- Centos7下部署两套python版本并存
Centos7下部署两套python版本并存 需求说明:centos7.2系统的开发机器上已经自带了python2.7版本,但是开发的项目中用的是python3.5版本,为了保证Centos系统的 ...
- Neutron三层网络服务实现原理
Neutron 对虚拟三层网络的实现是通过其 L3 Agent (neutron-l3-agent).该 Agent 利用 Linux IP 栈.route 和 iptables 来实现内网内不同网络 ...
- html/css/javascript练习代码
这两天心血来潮学习了前端,自己也做了个小小的网页,不好看QAQ 不过网页上集结了很多零碎的知识,在这里先马克一下.图片地址:https://github.com/lesroad/html-css-js ...
- hdu3829
题解: 对于每一个孩子裂点+建边 如果i孩子讨厌的和j孩子喜欢的相同,那么建边 然后跑最大独立集 代码: #include<cstdio> #include<cstring> ...
- js Worker 线程
在平时的运行的javascript脚本都在主线程中执行,如果当前脚本包含复杂的.耗时的代码.那么JavaScript脚本的执行将会被阻塞,甚至整个刘看齐都是提示失去响应. 例子: 假设程序需要计算.收 ...
- 【WebGL】4.光源
光的类型:所有的光都是从THREE.Light继承,分为环境光THREE.AmbientLight,点光源PointLight,聚光灯THREE.SpotLight和方向光THREE.Directio ...
- L161
The robot arm made for gentle undersea explorationA soft robotic arm which will allow underwater sea ...
- javaScript高程笔记--最佳实践
1.可维护性 <1>什么是可维护的代码 (1)可理解性 (2)直观性 (3)可适应性 (4)可扩展性 (5)可调试性 <2>代码约定 (1)可读性---适当的进行注释[函数和方 ...
- select2切换事件如何生效
1.问题背景 利用select2生成可搜索下拉框,并且绑定切换事件:但是直接绑定change事件,发现不起作用 2.问题原因 <!DOCTYPE html> <html> &l ...
- 【Keras学习】资源
Keras项目github源码(python):keras-team/keras: Deep Learning for humans 里面的docs包含说明文档 中文文档:Keras中文文档 预训练模 ...