【问题标题】:Move pure RequireJS project to Maven将纯 RequireJS 项目移动到 Maven
【发布时间】:2014-09-19 09:20:26
【问题描述】:

我有项目使用带有 RequireJS 的裸 Javascript(+ Jquery + Backbone)。我包括以下依赖项:

require.config({
    baseUrl: "./js/",
    paths: {
        jquery: 'lib/jquery-1.8.2',
        underscore: 'lib/underscore-1.4.2',
        backbone: 'lib/backbone-1.1.2',
        'backbone.localStorage': 'lib/backbone.localStorage'
    },
    shim: {
        underscore: {
            exports: "_"
        },
        backbone: {
            deps: ['underscore', 'jquery'],
            exports: 'Backbone'
        },
        'backbone.localStorage': {
            deps: ['backbone'],
            exports: 'Backbone'
        }
    }
});

我想要:将项目移至 maven。我不想以如此丑陋的方式包含所有这些部门。此外,我想使用 Hibenate、Spring 和其他应该通过 maven 导入的 deps。

问题:我对 maven 插件或 RequireJs 的工作原理没有深入了解。看了this,什么都不懂。

问题: 你能写一个分步操作点如何将我的应用程序移动到 maven 吗?

【问题讨论】:

    标签: javascript maven requirejs


    【解决方案1】:

    Maven 并不是您所展示的配置的(所谓)“丑陋”的真正答案,因为它在完全不同的层面上工作。首先,Maven 是一个服务器端工具,而 RequireJS 是客户端(抱歉,如果你已经知道它,但是 -> “我对 maven 插件或 RequireJs 的工作原理没有深入了解”)。这个配置是 RequireJS 特有的,所以没有办法绕过它。

    即使使用 Maven,您仍然需要配置前端应用程序并告诉它在哪里可以找到所需的依赖项以及如何初始化它们。客户端应用程序的路径是 Web 资源,可以与项目的文件结构任意不同,因此自动化配置过程并不容易。

    我一直在使用RequireJS maven plugin(在您发布的同一个问题的答案之一中找到它)来包装r.js,但设置起来相当痛苦,尤其是在使用资源时间戳时。我只是觉得这种方法是有缺陷的,因为 Java 和 JavaScript 工具之间存在根本差异——你总是会得到一个不太理想的折衷方案,任何非标准步骤都会耗费大量时间和研究。

    另一种越来越受欢迎的方法是将您的客户端和服务器端应用程序完全拆分为单独的项目,从而允许您使用特定于语言的工具来使流程尽可能顺利。服务器端使用 Maven,客户端使用 Grunt+Bower+RequireJS+等。双方通过使用 JSON over HTTP 的明确定义的接口进行对话。

    应该很容易找到一些介绍性阅读材料,但是既然您提到了 Spring,那么不妨先看看参考 Spring 应用程序:Sagan。它演示了如何将前端和后端拆分为单独的 Maven 子模块,这些子模块共享相同的公共“核心”。


    使用webjars 使使用 Maven一点更文明地使用 JS 库的权宜之计解决方案。您可以直接在 pom.xml 中定义您的依赖项,并且它们很容易像其他静态资产一样暴露给前端。但是,这限制了您在捆绑或自定义库时的选择。

    【讨论】:

    • 这是一个很好的答案!!!我会接受它,但希望您能在其中添加将应用程序拆分为服务器和客户端应用程序的优点/缺点。我的意思是它总是可能的。例如,我的应用程序同时用于客户端 - JSP 和 JavaScript。
    猜你喜欢
    • 2012-05-01
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 2022-07-19
    • 2020-09-29
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多