无论是在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 到底有什么好处?的更多相关文章

  1. CommonJS、AMD、CMD、NodeJs、RequireJS到底有什么联系?

    JS中的模块规范(CommonJS,AMD,CMD),如果你听过js模块化这个东西,那么你就应该听过或CommonJS或AMD甚至是CMD这些规范,本文包括这三个规范的来源及对应的产物的原理. 一.C ...

  2. requireJS到底是什么?

    1.requireJS是让js代码模块化:而且js之间的依赖关系,不再依靠script标签的顺序,可以加载不阻塞 2.requireJS加载js的方法:<script data-main=&qu ...

  3. 企业为什么要实行ERP系统,它到底有什么好处呢?

    目前,我国正在大力推行企业信息化建设,作为一种包含了现代管理思想的ERP(Enterprise Resource Planning)系统日益成为现代企业业务运作的主要工具,为了提升管理水平,提升企业竞 ...

  4. 将requirejs进行到底(一)

    随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,我们需要团队协作.模块复用.单元测试等等一系列复杂的需求 ...

  5. RequireJS入门级_RequireJS能给我们带来什么帮助?

    前言:其实很早前就已经接触和了解到RequireJS了,当时只是大概明白它能用来控制JS的加载顺序,即:页面一定要先加载这个JS,再加载那个JS,对于RequireJS的好处还没有一个真正的体会和认识 ...

  6. requirejs基础教程

    一.初识requirejs 随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,我们需要团队协作.模块复用. ...

  7. 语义化的html结构的好处

    HTML是提供网页文档内容的上下文结构和含义:html本身是没有表现的,我们看到例如<h1>是粗体,字体大小2em,加粗:<strong>是加粗的,不要认为这是html的表现, ...

  8. JS模块化工具requirejs教程(一):初识requirejs

    随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,我们需要团队协作.模块复用.单元测试等等一系列复杂的需求 ...

  9. @synthesize 有什么好处?

    如果不用 synthesize,操作的是 @property中定义的变量,使用synthesize之后,间接的操作了一个新的成员变量,到底有什么好处?直接只用一个@property不是更简单吗?

随机推荐

  1. HUST 1328 String (字符串前缀子串个数 --- KMP)

    题意 给定一个字符串S,定义子串subS[i] = S[0..i],定义C[i]为S中subS[i]的数量,求sigma(C[i])(0<=i<N). 思路 我们以子串结尾的位置来划分阶段 ...

  2. yii2高级模板安装

    通过 Composer 安装 如果还没有安装 Composer,在 Linux 和 Mac OS X 中可以运行如下命令: curl -sS https://getcomposer.org/insta ...

  3. Pandas:时间数据的季节分析

    最近在做论文的数据处理,涉及到不同年份不同季节的分析.另外还要求不同季节的数据可以单独分析. 其实思路还是比较简单的,那就在原始数据中增加一栏:季节 2013-05-21 Aotizhongxin 1 ...

  4. Neutron之OVS

    OVS即开放虚拟交换标准,不仅仅是为了支持OpenFlow协议,而是为了给虚拟化平台上运行的虚拟机实例提供一套纯软件实现的路由交换协议栈.具体点说,Open vSwitch是在开源的Apache2.0 ...

  5. 二十、dbms_stats(用于搜集,查看,修改数据库对象的优化统计信息)

    1.概述 作用:用于搜集,查看,修改数据库对象的优化统计信息. 2.包的组成 1).get_column_stats作用:用于取得列的统计信息语法:dbms_stats.get_column_stat ...

  6. Linux之VIM常用功能

    介绍:vim包含三种模式分别为 命令模式:浏览文件,临时更改vim的工作方式,对字符批量处理(也可进行配置) 插入模式:对文件内容进行编辑 退出模式:退出VIM操作 一.命令模式     1.调整vi ...

  7. GNU Autotools的使用方法

    手工写Makefile是一件很有趣的事情,对于比较大型的项目,如果有工具可以代劳,自然是一件好事.在Linux系统开发环境中,GNU Autotools 无疑就充当了这个重要角色.(在Windows系 ...

  8. JAXP使用Stax API时格式化输出XML

    最近项目中需要生成XBRL instance,对于XML读写和验证进行了一些学习.由于Stax API不支持格式化输出,默认全都写在一行上,网上也没有搜到现成的东西,自己写了一个格式化输出的帮助类. ...

  9. Canvas 与 SVG 的区别

    这个说实话,我只用过canvas画过一些简单的图形,复杂的不懂,之所以列出来,是因为之前在面试中有被问到,在这里mark一下,后期深化. 以下的内容全部来自于w3school http://www.w ...

  10. 解决 git 错误 error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 11

    环境 Windows 7 . git push 时出现错误,无法提交代码到远程仓库. Counting objects: , done. Delta compression using up to t ...