代码之家  ›  专栏  ›  技术社区  ›  user8274065

如何将外部javascript文件中的外部变量使用到索引中。帕格?

  •  1
  • user8274065  · 技术社区  · 6 年前

    假设我有一个名为 myscript.js .它声明了一个名为 headArr 这是一个数组。

     headArr = [`id`,`firstname`,`lastname`,`company`,`salary`];
    

    index.pug ,我有一个包括:

    script
            include ../public/script/myscript.js
    

    我用的是 each 迭代读取数组的每个成员。

    ul
      each val in headArr
        li= val
    

    它返回/显示错误: it can't read headArr.length return undefined

    3 回复  |  直到 6 年前
        1
  •  0
  •   ippi    6 年前

    那么,您是否可以选择将脚本包含在服务器端?

    // myscript.js
    export const headArr = [`id`,`firstname`,`lastname`,`company`,`salary`];
    
    // Where you do your rendering
    import { headArr } from myscript.js
    ...
    await ctx.render(index, { headArr }); 
    

    Pug允许您将变量作为第二个参数传入,在渲染时将绑定到窗口 { test: "something" } 变成 window.test (ctx.render正在执行pug生成的compiledTemplate函数);

        2
  •  0
  •   user8274065 user8274065    6 年前

    我能找到解决办法。Thank@ippi 在科阿。js,您只能使用require。

    就我而言: 在脚本中添加

    const head = [`id`,`firstname`,`lastname`,`company`,`salary`];
    
    module.exports.head = head;
    

    然后是索引。js添加

    const myScript = require('./public/script/myscript');
    

    然后呈现页面

    router.get(`/`, async ctx => {
        await ctx.render(`index`,myScript)
    });
    

    最后,将每个迭代添加到索引中。哈巴狗锉

                tr
                each i in head
                    th= i
    
        3
  •  0
  •   Mayur Patil    6 年前
    router.get(/, async ctx => 
        { await ctx.render ('index', { headArr: headArr} ) 
        });
    

    在你的myscript中。js文件,可以在渲染索引时使用此代码。酒吧因为pug文件将对象作为输入,您需要在该对象中传递headArr。