小编Khr*_*yus的帖子

如何使用 esbuild 将类公开到全局范围?

更新

用户@TKoL 建议在窗口对象中定义一个属性。这产生了我想要实现的结果,尽管我不知道这是否是正确的方法。我暂时就用这个方法。谢谢!


我在我的项目中使用esbuild(第一次使用捆绑器/以这种“风格”开发 JS)。该项目是一个小型 Web 组件,我为其开发了一个类,最终用户应该能够在其脚本中使用该类。

// this is the component, which is then bundled and minified by esbuild.
// i have omitted various imports required in the class here.

export default class Widget extends HTMLElement {
    /// code here is not relevant
}

customElements.define('custom-widget', Widget);
Run Code Online (Sandbox Code Playgroud)

就目前情况而言,最终用户可以像这样使用 HTML 中的小部件:

<custom-widget some-custom-attribute="some-value"></custom-widget>

let widget = document.querySelector('custom-widget');
widget.someMethodDefinedInTheClass();
Run Code Online (Sandbox Code Playgroud)

不过,我希望用户也可以通过 JavaScript 来完成这一切。

如何使esbuild将Widget类公开到全局范围?我想这样做是为了启用以下行为:

let wOptions = {}; // object of initialization options for the widget
let widget …
Run Code Online (Sandbox Code Playgroud)

javascript bundler ecmascript-6 esbuild

7
推荐指数
1
解决办法
2223
查看次数

具有express-sessions 和express-mysql-session 的NodeJS 不会设置会话。我哪里搞砸了?

尝试使用 Node.js 和 Express 为我的个人项目启动会话。我使用 MySQL 数据库作为会话存储,并安装了以下模块:

  • 表达
  • body-parser,获取 POST 数据
  • mysql,连接到我的数据库
  • 科尔斯
  • 快速会话
  • 快速 mysql 会话
  • bcrypt,将 POST 数据与数据库哈希值进行比较

我正在通过 javascript 从页面发送包含登录信息的 POST 请求,并将其与数据库中的哈希值进行比较。如果匹配,我会为用户创建会话。我想阻止用户在有会话的情况下再次登录,但会话 cookie 似乎没有被存储。我通过查看验证了这一点req.session,但user我创建的对象从未出现在那里。

正在创建数据库中的记录:如果我使用正确的数据登录,则会创建一条新记录。我不确定这是否应该发生,但如果我使用同一用户再次登录,它会创建一条新记录。

这是我所得到的:

var express    = require('express');
var app        = express();
var bodyParser = require('body-parser');
var mysql      = require('mysql');
var cors       = require('cors');
var session    = require('express-session');
var MySQLStore = require('express-mysql-session')(session);
var bcrypt     = require('bcrypt');

var options = { ... };
var pool = mysql.createPool(options);
var sessionConnection …
Run Code Online (Sandbox Code Playgroud)

mysql session node.js express

5
推荐指数
1
解决办法
8441
查看次数

朋友给我发了一个我不明白的片段.这是如何运作的?

感谢您的回复,每个人都有助于我了解这是如何工作的.

一位朋友发给我这段C代码询问它是如何工作的(他也不知道).我通常不和C合作,但这引起了我的兴趣.我花了一些时间试图了解发生了什么,但最终我无法完全理解它.这是代码:

void knock_knock(char *s){
 while (*s++ != '\0')
  printf("Bazinga\n");
}

int main() {
 int data[5] = { -1, -3, 256, -4, 0 };
 knock_knock((char *) data);
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

起初,我以为这只是阵列中的打印数据的奇特的方式(是的,我知道:\),但是当我看到它没有打印"Bazinga" 5次,我很惊讶,但8.我搜索的东西并计算出它与指针的工作(总业余当谈到C),但我为什么8.我搜索了一点,发现了通常的指针有8个字节长度的C仍然无法弄清楚,并我通过在循环之前打印sizeof(s)来验证,确定它是8.我认为这是它,它只是在指针的长度上迭代,所以它打印Bazinga 8次是有意义的.现在我还清楚为什么他们会使用Bazinga作为打印的字符串 - 数组中的数据只是让人分心.所以我尝试向阵列添加更多数据,果然它会继续打印8次.然后我更改了数组的第一个数字-1,以检查数据是否真的没有意义,这就是我感到困惑的地方.它不再打印8次,但只打印一次.当然阵列中的数据不仅仅是一个诱饵,但对于我的生活,我无法弄清楚发生了什么.

c ascii pointers ansi overflow

2
推荐指数
1
解决办法
103
查看次数