我正在尝试在JavaScript中创建全局唯一标识符.我不确定所有浏览器上有哪些例程,"随机"和内置随机数生成器的种子等等.
GUID/UUID应至少为32个字符,并应保持在ASCII范围内,以避免传递它们时出现问题.
我想在 Javascript 中定义两个函数(或类),它们具有完全相同的函数体,但它们是完全不同的对象。用例是我在主体中有一些通用逻辑,它是多态的(函数可以接受多种类型),但是通过只调用具有单一类型的函数,函数最终会更快,我假设因为 JIT 可以在每种情况下都采取更快乐的快速路径。
一种方法是简单地完全重复函数体:
function func1(x) { /* some body */ }
function func2(x) { /* some body */ }
Run Code Online (Sandbox Code Playgroud)
另一种以较少重复完成相同事情的方法是eval()
:
function func(x) { /* some body */ }
function factory() { return eval("(" + func.toString() + ")") }
let func1 = factory(), func2 = factory()
Run Code Online (Sandbox Code Playgroud)
eval()
当然,缺点是任何其他工具(缩小器、优化器等)都完全出乎意料,并且有可能破坏我的代码,因此这不起作用。
在标准工具链(我使用 Typescript、esbuild 和 Vite)的范围内,是否有任何明智的方法可以做到这一点,而不使用技巧eval()
或只是复制粘贴代码?我也有关于类定义的类似问题。
编辑:总结评论中发生的事情:
function factory() { function func() { /* some body …
Run Code Online (Sandbox Code Playgroud)最近我开始学习React Storybook。在下面的示例中,当我不写入时{}
,Template.bind({})
故事书将运行得很好,不会出现任何错误。但我发现很多人在制作故事时都会使用{}
in Template.bind({})
。
问: Storybook 制作故事时需要有{}
内部吗?Template.bind({})
import React from 'react'
import { MyButton } from './MyButton'
export default {
title : 'MyButton',
component : MyButton
};
const Template = (args) => <MyButton {...args}/>
export const Primary = Template.bind()
Primary.args = {
variant: 'primary',
label: 'button'
}
Run Code Online (Sandbox Code Playgroud) 基本上我需要做的是获取一个本地grader.js文件,然后在命令行使用它来输入HTML,然后将输出JSON数据到控制台以验证是否存在多个HTML元素.用法看起来像这样:
./grader.js --checks checks.json --file index.html
./grader.js --checks checks.json --url http://google.com
Run Code Online (Sandbox Code Playgroud)
使用的Node模块是Commander(用于在命令行工作),Cheerio(用于HTML)和Restler(用于从URL获取HTML).
该checks.json文件是简单的,它的根本要求,检查是否有一些简单的HTML元素的存在,以查明他们是否在页面上存在:
["h1",
".navigation",
".logo",
".blank",
".about",
".heading",
".subheading",
".pitch",
".video",
".thermometer",
".order",
".social",
".section1",
".section2",
".faq",
".footer"]
Run Code Online (Sandbox Code Playgroud)
该grader.js文件是事情变得更加复杂.以下代码实际上是有用的,因为它采用命令行参数,并指示HTML元素是否存在的true或false值.但是在底部添加URL检查后它无法正常工作.我的checkURL功能有问题以及我使用底部的Commander代码实现它的方式.即使真值和假值依赖于我使用的HTML文件/ URL是正确的,我最终也会将两个检查都吐出到控制台,即使我只想检查文件或URL,而不是两者.我对此很新,所以我很惊讶它的功能完全正常.它可能与默认值有关,但是当我尝试进行这些更改时,checkURL函数似乎会崩溃.在此先感谢您的帮助,我真的很感激.
#!/usr/bin/env node
var fs = require('fs');
var program = require('commander');
var cheerio = require('cheerio');
var rest = require('restler');
var HTMLFILE_DEFAULT = "index.html";
var CHECKSFILE_DEFAULT = "checks.json";
var URL_DEFAULT = "http://cryptic-spire-7925.herokuapp.com/index.html";
var assertFileExists = function(infile) {
var instr = infile.toString();
if(!fs.existsSync(instr)) { …
Run Code Online (Sandbox Code Playgroud) 我的页面中有几个包含第三方内容的 iframe,它们抛出各种错误等。它们工作得很好,这不是我的内容,所以不是我的问题。我可以阻止他们将内容记录到控制台中,以便我可以专注于我的代码吗?如果这样的功能应该是特定于浏览器的,那么 Firefox 或 Chrome 都适合我。
javascript ×4
ecmascript-6 ×1
firefox ×1
guid ×1
html-parsing ×1
iframe ×1
json ×1
node.js ×1
reactjs ×1
storybook ×1
uuid ×1