Requirejs 成熟项目的需求

Requirejs 成熟项目的需求,requirejs,amd,Requirejs,Amd,我想开始在我的项目中使用requirejs,这个项目已经开发了大约一年,而且规模很大 该项目是asp.net,母版页有大约50个脚本,其中一半是该项目的自定义脚本大多数是使用显示模块模式编写的,另一半是第三方脚本和jquery插件 页面中还内嵌了大量JS代码 如果有人能告诉我重构项目的最佳策略,我将不胜感激。 也许是一步一步来做的方法,这样就不会阻碍开发团队的其他成员。选择AMD模块模式只有一个很好的理由: 通过将JS代码拆分为可管理的模块来保护开发人员的理智 只有一种方法,你可以保持理智,仍然

我想开始在我的项目中使用requirejs,这个项目已经开发了大约一年,而且规模很大

该项目是asp.net,母版页有大约50个脚本,其中一半是该项目的自定义脚本大多数是使用显示模块模式编写的,另一半是第三方脚本和jquery插件

页面中还内嵌了大量JS代码

如果有人能告诉我重构项目的最佳策略,我将不胜感激。
也许是一步一步来做的方法,这样就不会阻碍开发团队的其他成员。

选择AMD模块模式只有一个很好的理由: 通过将JS代码拆分为可管理的模块来保护开发人员的理智

只有一种方法,你可以保持理智,仍然提供紧凑,高效的网页-你需要“建立”你的AMD树。否则,所有的小模块都会变成一堆HTTP Get请求,从而减慢应用程序的速度

在您的特定情况下,选择“构建AMD树”的一个副作用是,您可能会从简化的JavaScript中获益。您的应用程序已经由服务器gziped提供服务,但缩小JavaScript会使它们变得更小。另外,与aspx文件相比,单独的静态JS文件具有更好的缓存签名,而aspx文件可能具有由服务器分配的非常短的缓存设置

如何“构建”AMD树:

  • 将所有散布在aspx文件周围的大块JavaScript代码放入单独的JS文件中。将它们的脚本标记插入到您的aspx中。测试,确保你的应用程序仍然有效
  • 二,。 然后将这些文件转换为AMD模块。重新测试你的应用程序

    三,。 然后在树上运行AMD树优化器,以获取一个包含所有AMD模块的长JS文件。针对该模块重新测试应用程序

    AMD构建工具中有一个公认的领导者:

    但以下是我建议您首先尝试的内容:

    第一个需要巧妙的配置和大量的耐心。PruneJS不需要配置,但不如r.js灵活


    除非你承诺要一路走下去——打造AMD之树——否则不要走AMD之路。这不值得。

    选择AMD模块模式只有一个很好的理由: 通过将JS代码拆分为可管理的模块来保护开发人员的理智

    只有一种方法,你可以保持理智,仍然提供紧凑,高效的网页-你需要“建立”你的AMD树。否则,所有的小模块都会变成一堆HTTP Get请求,从而减慢应用程序的速度

    在您的特定情况下,选择“构建AMD树”的一个副作用是,您可能会从简化的JavaScript中获益。您的应用程序已经由服务器gziped提供服务,但缩小JavaScript会使它们变得更小。另外,与aspx文件相比,单独的静态JS文件具有更好的缓存签名,而aspx文件可能具有由服务器分配的非常短的缓存设置

    如何“构建”AMD树:

  • 将所有散布在aspx文件周围的大块JavaScript代码放入单独的JS文件中。将它们的脚本标记插入到您的aspx中。测试,确保你的应用程序仍然有效
  • 二,。 然后将这些文件转换为AMD模块。重新测试你的应用程序

    三,。 然后在树上运行AMD树优化器,以获取一个包含所有AMD模块的长JS文件。针对该模块重新测试应用程序

    AMD构建工具中有一个公认的领导者:

    但以下是我建议您首先尝试的内容:

    第一个需要巧妙的配置和大量的耐心。PruneJS不需要配置,但不如r.js灵活


    除非你承诺要一路走下去——打造AMD之树——否则不要走AMD之路。这不值得。

    我可能会先创建一个git分支,只添加AMD包装器。完成后,我合并主分支,解决冲突,并合并到主分支。剩下的问题有点模糊,我可能会先创建一个git分支,只添加AMD包装器。完成后,我合并主分支,解决冲突,并合并到主分支。剩下的问题有点模糊。嗨,谢谢你的回答。我想要实现AMD的原因之一是因为性能(除了更干净的代码),现在我在用户登录时加载了50个脚本,用户必须等待,因为浏览器被解析和评估脚本阻塞。我想性能会有所提高,因为脚本会在需要时(不是一次)异步加载,并作为一个大的缩小文件加载,对吗?也许我可以利用延迟加载来提高性能?是否有使用ReauireJs的真实场景示例?首先,我可以使用shim设置配置中的所有脚本,以便应用程序能够工作,然后逐步(逐页)将脚本转换为模块?是的。使用垫片应该有效。关于垫片的警告:带垫片的普通javascript不能依赖于带垫片的AMD模块。作为替代方案,我建议考虑嵌套的require调用,您可以在其中自由混合非模块和模块。请看这里的例子:嗨,谢谢你的回答。我想要实现AMD的原因之一是因为性能(除了更干净的代码),现在我在用户登录时加载了50个脚本,用户必须等待,因为浏览器被解析和评估脚本阻塞。我想性能会有所提高,因为脚本会在需要时(不是一次)异步加载,并作为一个大的缩小文件加载,对吗?也许我可以利用延迟加载来提高性能?是否有使用ReauireJs的真实场景示例?首先,我可以使用shim设置配置中的所有脚本,以便应用程序能够工作,然后逐步(逐页)将脚本转换为模块?是的。使用垫片应该有效。关于垫片的警告:带垫片的普通javascript不能依赖于带垫片的AMD模块。作为替代方案,苏格斯会这样做吗