ExpressJS + jsdom – 范围问题
我有一个expressJS web应用程序与路线设置。 我也有几个函数存在于jsdom环境中,因为我想利用各种jquery函数。
我遇到的问题是我需要在expressJS作用域级别的jsdom中调用一个函数。
我真的希望这是可能的,因为这将大大简化我的生活。
例如:
// express app.get('/someRoute', function(request, response){ myFunction( request.data, function( getResponse ){ response.status( 200 ).send( getResponse ); } }) //jsdom jsdom.env('html', function(err, window) { ..... myFunction( a, callback ){ // <some jquery-only feature that I need> callback(a); } })
是的,你可以,你有几个select。 我想这两个部分将在不同的文件,否则你可以只在文件的顶部定义一个variables,并在jsdom
分配。 根据您的应用程序的大小,您可能需要select一个或另一个:
快速但不是很好的:在jsdom.env
函数中,定义一个全局函数,可以从ExpressJS路由器访问。
// express app.get('/someRoute', function(request, response){ global.myJSDomFunction(request.data, function( getResponse ){ response.status( 200 ).send( getResponse ); } }) //jsdom jsdom.env('html', function(err, window) { ..... global.myJSDomFunction = myFunction( a, callback ){ // <some jquery-only feature that I need> callback(a); } })
好的,通常不build议定义全局variables,以保持一个健全的架构,不会产生名称冲突。 让我们试着定义一个你可以附加你的函数的第三个文件:
// express const fnContainer = require('../fnContainer') app.get('/someRoute', function(request, response){ fnContainer.myJSDomFunction(request.data, function( getResponse ){ response.status( 200 ).send( getResponse ); } }) //jsdom const fnContainer = require('../fnContainer') jsdom.env('html', function(err, window) { ..... fnContainer.myJSDomFunction = myFunction( a, callback ){ // <some jquery-only feature that I need> callback(a); } }) //fnContainer.js module.exports = { myJSDomFunction: null, }
最好的办法是根据你的情况改进名字。 您可以有更复杂的结构,最后,您必须将此function保存在Express.jspath内可访问的位置。
- Nodejs / Expressjs无法链接到css文件
- iisnode – IIS7.5:405执行PUT请求时不允许使用方法
- 使用节点在SASS编译期间注入variables
- 我如何处理expressjs应用程序中的意外错误以避免停机?
- Node.js module.exports护照已authentication到路由
- 使用Express的Nodejs – 将mongoDB和mongoose添加到package.json并运行npm install时出错
- NodeJS + Redis + Express + Passport Facebook身份validation失败
- 为什么没有新版本的节点从请求体中删除__proto__?
- 数组中的NodeJs itemvariables只取得for循环中的第一个值