带有jquery的requirejs客户机/服务器模块

带有jquery的requirejs客户机/服务器模块,jquery,node.js,requirejs,Jquery,Node.js,Requirejs,我的requirejs模块有一个用于服务器端和客户端的方法。模块还具有jQuery依赖关系。如何在服务器上忽略jquery加载 比如说 应用程序结构: | -public | | -ext | | | -requirejs | | | | -require.js | | -lib | | | -a.js | | -main.js | -index.js main.js requirejs.config({ baseUrl: './lib/', paths : { "j

我的requirejs模块有一个用于服务器端和客户端的方法。模块还具有jQuery依赖关系。如何在服务器上忽略jquery加载

比如说

应用程序结构:

| -public
| | -ext
| | | -requirejs
| | | | -require.js
| | -lib
| | | -a.js
| | -main.js
| -index.js
main.js

requirejs.config({
   baseUrl: './lib/',
    paths : {
      "jquery" : "//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min"
   }
});
a、 js

和nodejs代码(index.js)

前言 您可以仔细查看依赖项的用途,并尝试重构代码,以消除服务器端模型(或直接使用服务器sie模型)的基础模型中的依赖项,如jQuery

即使在一个由10多个模型组成的非常庞大的项目中,也只有两个模型直接使用jQuery
ajax
(如果在服务器端重新使用它们将是一个问题,那么这很容易被重构)

答复 我将在NodeJs中定义一个
jquery
命名模块,并返回一个存根

注意:我使用来定义模块。使用AMD感知的fork作为直接模块(有些人不鼓励使用)可能不起作用

var requirejs = require('requirejs');

requirejs.config({
   baseUrl: "./public/lib/"
});

requirejs.define("jquery", [], function(){
   return {jQueryStub: true};
});

requirejs(["a"], function(a){  //Error: Tried loading "jquery" at ./public/lib/jquery.js then tried node's require("jquery")
   a.serverMethod();
});
此外,您可能想告诉RequireJs它在NodeJS中运行:

requirejs.config({
   nodeRequire: require,
   baseUrl: "./public/lib/"
});
据我所知,仅在服务器端使用模型不需要jQuery。(注意:我只构建了一个在Grunt过程中重用模型和部分视图的小项目。)

var requirejs = require('requirejs');

requirejs.config({
   baseUrl: "./public/lib/"
});

requirejs.define("jquery", [], function(){
   return {jQueryStub: true};
});

requirejs(["a"], function(a){  //Error: Tried loading "jquery" at ./public/lib/jquery.js then tried node's require("jquery")
   a.serverMethod();
});
requirejs.config({
   nodeRequire: require,
   baseUrl: "./public/lib/"
});