我有一个带有简单html,app.js,helper.js
的节点表达应用程序运行命令node app.js
正常运行,页面出现并在localhost:3000上正常运行。
我希望能够调用IN app.js中存在的函数,称为FROM helper.js。我在StackO中看到了几个关于使用module.exports的例子,但是这些例子都反过来调用了这些函数。
有没有办法(方法)这样做?我已经看到了一些看似有希望的浏览器。这是唯一的选择吗?
我知道写这篇文章的方式不会奏效,但是可以这样做吗?这样,如果我点击网页上的一个按钮,它将会安装3.13'?
app.js
// Various lines of node and express code
module.exports = {iLikePi: function() { return '3.14' } }
helper.js
var app_mod = require('./app.js')
function aButtonClicked() { console.log(app_mod.iLikePi()) }
的index.html
// A button onclick event that calls aButtonClicked()
最后,这一切的原因。我想在节点应用程序中使用sqlite3。我需要sqlite3进入模块的唯一方法似乎是在app.js.当我尝试将sqlite3转换为helper.js时,它不起作用。如果有一种方法可以在app.js之外编写一个可以调用和使用npm的sqlite3的模块,那么这将是一个对我来说没问题的替代方案!
谢谢大家, 弗兰克
答案 0 :(得分:0)
你绝对可以从另一个文件调用函数!
以下是一个例子:
app.js
const iLikePie = () => 3.14
module.exports = iLikePie
helper.js
const app_mod = require('./app.js)
const aButtonClicked = () => console.log(app_mod())
当调用aButtonClicked时,这将打印3.14。
答案 1 :(得分:0)
您的客户端代码永远不应该直接访问SQL服务器。您可以通过API调用/ HTTP请求或某个路径公开您的数据。
客户端POST示例:
onButtonClick = () => {
fetch("/math/executepifunc", {
method: "POST",
redirect: "follow",
headers: {
"Accept": "application/json",
"Content-Type": "application/json"
},
body: JSON.stringify({
num: <value> // something your want server to do with the Pi
})
}).then(response => {
// Process your response there
}).catch(err => {throw err;});
}
来自服务器:
// Mini-middleware grabs all routes under "/math"
var mathFuncRouter = express.Router();
router.post("/executepifunc", (req, res) => {
const num = req.body.num;
// execute your function from server
});
// Connect to your custom middleware
app.use("/math", mathFuncRouter);