Jquery 服务器端,网页包

Jquery 服务器端,网页包,jquery,node.js,reactjs,webpack,Jquery,Node.js,Reactjs,Webpack,我想在服务器端呈现React应用程序,并使依赖项处理问题 更准确地说,我希望从cdn加载jquery,并能够 require('jquery') 在我的应用程序的文件中。客户端一切正常,我有一个网页配置文件,如下所示: # webpack.config.js externals : { "jquery": "jQuery", } jquery只是加载到一个html文件中: # index.html <script src="https://ajax.googleapis.co

我想在服务器端呈现React应用程序,并使依赖项处理问题

更准确地说,我希望从cdn加载jquery,并能够

require('jquery')
在我的应用程序的文件中。客户端一切正常,我有一个网页配置文件,如下所示:

# webpack.config.js 
externals : {
    "jquery": "jQuery",
}
jquery只是加载到一个html文件中:

# index.html
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
问题是require('jquery')在此上下文中不起作用。 这里()我找到了一个关于如何使用webpack服务器端的示例,但它没有解决没有安装在node_模块中的外部组件的问题

我还尝试使用script.js()首先从CDN加载jquery,然后呈现应用程序,但它需要文档组件,这是未定义的服务器端

# this does not work
$script(['https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js'], 'bundle');
$script.ready('bundle', function() {
    reactRender(...)
});

任何想法都是非常感谢的!谢谢

为什么不根据调用webpack的位置有条件地设置
externals
属性呢?使用环境变量或其他什么

为什么不根据调用webpack的位置有条件地设置
externals
属性?在过去,我使用环境变量或类似的东西结合jquery来操作HTML服务器端。Domino是DOM的JavaScript实现。我不是react专家,但这可能适合您:

npm install --save domino jquery
然后:

// Create a window object.  See also: https://github.com/fgnass/domino#usage
const domino = require('domino');
const window = domino.createWindow('');
const document = window.document;

// Create a jquery instance
const $ = require('jquery')(window);
在过去,我曾结合jquery操作HTML服务器端。Domino是DOM的JavaScript实现。我不是react专家,但这可能适合您:

npm install --save domino jquery
然后:

// Create a window object.  See also: https://github.com/fgnass/domino#usage
const domino = require('domino');
const window = domino.createWindow('');
const document = window.document;

// Create a jquery instance
const $ = require('jquery')(window);

您的意思是在我的文件中尝试{var$=require('jquery')}catch(e){var$}?问题是我需要它在服务器端。你是说在我的文件中像try{var$=require('jquery')}catch(e){var$}这样的东西?问题是我需要它在服务器端。回答之后,我意识到您实际上需要在服务器端使用jquery功能,对吗?如果是这样的话,我可以提供另一个可能适合您的答案。谢谢好的,我编辑了我的答案。我希望这会有帮助。回答之后,我意识到您实际上需要在服务器端使用jquery功能,对吗?如果是这样的话,我可以提供另一个可能适合您的答案。谢谢好的,我编辑了我的答案。我希望它有帮助。谢谢cspotcode,我会看一看并接受答案!谢谢cspotcode,我会看一看并接受答案!