在视图中表达基本模块的使用

Express basic module use within a view

我正在使用 express/nodejs 开发应用程序。这是我的 routes/index.js 文件的样子,如您所见,我正在尝试包含一个 sidebar 模块并在 index 视图中访问它:

var express = require('express');
var router = express.Router();
var sidebar = require('./modules/sidebar');

router.get('/', function(req, res){
    res.render('index');
});

module.exports = router;

这是我的 routes/modules/sidebar.js 的样子:

module.exports.showSystemMenu = function(){
    var elem = document.getElementsByClassName('app-settings-wrapper')[0]; 
    elem.classList.toggle('app-settings-wrapper-exposed');
}

在我看来 (index),当我尝试访问模块函数时,出现 showSystemMenu 不是函数的错误:

$scope.showSystemSelect = sidebar.showSystemMenu();

感谢任何关于我收到此错误的原因以及解决方法的说明。

提前致谢!

客户端和服务器端是两个不同的部分。

在您的 routes.js 或 app.js 中发生的一切都称为服务器端。呈现的视图是您的客户端。 从客户端调用服务器端代码(就像你正在做的那样)是不可能的。

您可以使用:

a) 将模块传递给客户端。例如res.render('index', {moment: moment}); 此调用会将 momentJS 从服务器端传递到客户端。 (只是一个例子)

b) 从您的模块 routes/modules/sidebar.js 中提取代码并在您的视图中将其作为通用 JS 客户端函数实现。例如。在脚本标记的视图中实现它。