更新
用户@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) 尝试使用 Node.js 和 Express 为我的个人项目启动会话。我使用 MySQL 数据库作为会话存储,并安装了以下模块:
我正在通过 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) 感谢您的回复,每个人都有助于我了解这是如何工作的.
一位朋友发给我这段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次,但只打印一次.当然阵列中的数据不仅仅是一个诱饵,但对于我的生活,我无法弄清楚发生了什么.