如何在节点 js 中创建类似 php 的函数

Posted

技术标签:

【中文标题】如何在节点 js 中创建类似 php 的函数【英文标题】:how to create function like in php in node js 【发布时间】:2019-01-19 19:56:12 【问题描述】:

其实我用过的功能如下

function selectBloodGroupNames()

    return array("A+", "O+", "B+", "AB+", "A-", "O-", "B-", "AB-", "A1+Ve", 
    "Unknown");

上述函数返回血型列表,可以根据我们的想法进行格式化,例如显示在下拉列表中或表格中!!!

我已将该函数保存在名为 functions.php 的单独文件中

如何在 express 模块和 ejs 或基本 html 模板引擎中使用与 node.js 中相同的内容。

【问题讨论】:

您是在问如何在 javascript 中创建和填充数组吗?即return ['A+', 'O+', 'B+', 'AB+', ...] 不完全一样,实际上我正计划创建一个必须在节点 js 中项目的每个页面中全局调用的函数 所以你想要一个 .js 文件,你可以将它包含在你的每个其他 js 文件中,就像 PHP 的 include() 一样? 是的,@Zim84 不仅在 js 中,我还在我的项目中使用 node js 中的 ejs 模板引擎,所以我也需要在 ejs 模板引擎上完成这个想法。 【参考方案1】:

ejs 文件中带有访问数组的完整示例

data.js

 const sampleArray = 
     function1()
     return ["A+", "O+", "B+", "AB+", "A-", "O-", "B-", "AB-", "A1+Ve", 
        "Unknown"];
      ,
   function2() 
     return ["A+", "O+", "B+", "AB+", "A-", "O-", "B-", "AB-", "A1+Ve", 
        "Unknown"];
     
    
module.exports = sampleArray;

ma​​in.js //渲染ejs文件。

const  sampleArray = require('./data');
app.get('/renderEjs', function(req, res) 
  res.set('Content-Type', 'application/javascript');
  res.render('ejsHtmlFileName',  myArray :sampleArray.function1(),myArrayTwo:sampleArray.function2());
);

ejsFile

<div><p><%= myArray %><%= myArrayTwo %></p></div>

ejs 文件中渲染数据的参考链接 - LINK

【讨论】:

你的回答完全符合我的观点!但是我在 data.js 中使用了多个函数,并且我将在 viewes.ejs 文件中使用这些函数 n 个函数,因此我无法定义每个函数在 main.js 文件中渲染期间! 我已经更新了我的答案,请检查..你需要这样吗? 答案很好!您已经回答了我的预期,但是如果在 view.ejs 文件中必须添加 10 到 15 个函数,就好像硬编码不会自动化!我需要在渲染期间在 main.js 文件中定义 15 函数,而且我必须在渲染期间为许多页面执行此操作,这将增加代码行数!在 main.js 文件中! 现在我第二次更新我的答案请检查 你没有明白我的意思@IftekharDani。您正在为每个功能定义! myArray :sampleArray.function1(),myArrayTwo:sampleArray.function2() 我要问的是如果有 20 到 25 个函数,我们如何定义它!这就是我的阙?如果我们定义 25 次意味着单页!想想其他页面!如果有 50 页,我需要为 50 页中的每一个分别传递 25 个函数!所以像 php 这样的简单代码调用像 '' 和 functions.php 为每 50 个页面返回这 25 个函数!【参考方案2】:

为了在 node.js 中使用,你可以创建一个单独的文件 common.js

 module.exports=function selectBloodGroupNames()
 
    return ["A+", "O+", "B+", "AB+", "A-", "O-", "B-", "AB-", "A1+Ve", 
    "Unknown"];
 

然后在你想使用它的文件中,你可以包含它并像下面这样使用它:-

   const Common=require('pathto/common.js');
   let bloodGroupList= Common.selectBloodGroupNames();
   //now you can use it where ever you want 
   console.log(bloodGroupList);  

【讨论】:

如果我有如下功能怎么办? function successMessage($message) echo ' &lt;div class="alert pastel alert-success" align="center"&gt; &lt;p&gt;'.$message.'&lt;/p&gt; &lt;/div&gt; '; 【参考方案3】:

你应该安装 babel 才能使用 ES6 for javascript

npm install --save-dev babel-core 然后创建单独的文件 config.js。在 config.js 中:

export default Config 
  selectBloodGroupNames() 
     return ["A+", "O+", "B+", "AB+", "A-", "O-", "B-", "AB-", "A1+Ve", 
    "Unknown"];
  

然后在文件中你要使用的功能

import Config from ./pathto/config.js;

function functionName () 
  var arr = Config.selectBloodGroupNames();

【讨论】:

【参考方案4】:

最后我自己找到了一个解决方案,答案来自 @IftekharDani 并自己做了一些更改

functions.js 包含多个函数的文件!!!

module.exports = 
    menuTop: function()
        var data = '<li>'+
        '<a href="/login">Log in</a>'+
        '</li>'+
        '<li>'+
        '<a href="/register">Register</a>'+
        '</li>';
        return data;
    ,

    workCheck: function(user)
        if(user === "OLD")
        
            var data1 = '<h1>OLD user</h1>';
        
        else
        
            var data1 = '<h1>Unknown or new user</h1>';
        
        return data1;
    
;

app.js 主渲染文件,我将带有变量的整个文件传递给 ejs 文件

var func = require('./functions');

app.get('/', function (req, res) 
    res.render('home',  funs : func);
);

home.ejs 文件,其中包含函数的内容。

功能1

<ul class="nav navbar-nav navbar-right">
    <%- funs.menuTop(); %>
</ul>

功能2

<div class="row">
    <%- funs.workCheck("NEW"); %> 
    /* Here i pass parameter to the function that i call from the external file to which make more dynamic. */
</div>

最后我得到了预期的结果!我会给 @IftekharDani 50% 的积分,因为他们给了我一个想法。谢谢!

【讨论】:

以上是关于如何在节点 js 中创建类似 php 的函数的主要内容,如果未能解决你的问题,请参考以下文章

如何在节点 js 服务器中创建通道 websocket

如何在 php 中创建类似 twitter 的 search.json

如何在 PHP 中创建网页的图像?

如何在 d3.js 中创建家谱?

如何在 R 中创建类似 swirl() 的函数?

如何在c ++中创建节点?