轶哥

📚 Having fun with AI Agent. Always learning.

Node.js在VM环境使用ECMAScript modules
  •   更新:2021-03-04 15:28:35
  •   首发:2021-03-04 13:25:32
  •   JavaScript
  •   3004

vm模块允许在V8虚拟机上下文中编译和运行代码。但是不是安全机制,如果有沙箱(sandbox)需求,可以考虑https://github.com/patriksimek/vm2

在VM环境中使用ECMAScript modules,即在VM环境中可以用import代替require引入某个模块,避免Cannot use import statement outside a module错误,也可以用export代替module.exports

我的使用场景:

通过Node.js在VM环境使用ECMAScript modules之目的,是为了构建一个虚拟环境(可控的上下文内容)动态执行一些代码,方便在复杂系统中构建小型脚本动态的快速验证一些想法。

https://github.com/yi-ge/api-proxy这个小项目中也有用到vm模块。

Json Schema定义“既可以是对象,又可以是数组”
  •   更新:2021-02-06 23:46:41
  •   首发:2021-02-06 23:45:04
  •   JavaScript
  •   2443

如果我想定义json的内容(root)既可以是一个对象,又可以是一个数组,应该如何书写json schema?

这个问题换一种描述方式,“json schema定义了一个对象,但是希望内容也可以是这个对象的数组,如何书写json schema?”。

例如,Typescript中:root: object | [object]

例如,我希望数据可以是下面这样的一个对象:

{
  "method": "GET"
}

也可以是这样的数组:

[
  {
    "method": "GET"
  }
]
JavaScript练习题
  •   更新:2021-02-02 22:03:23
  •   首发:2021-02-02 21:58:27
  •   JavaScript
  •   3202

学习JavaScript绝佳的方法是阅读代码。阅读代码需要熟悉JavaScript的基本语法,包括作用域、类型及类型转换、原型链、函数、异步、闭包等内容。In-JavaScript-we-trust给我们提供了非常好的练习素材。

赶紧自测一下JavaScript掌握得怎么样!

H5在线练习地址https://js.wyr.me

仅支持手机访问(毕竟做完68道题是需要耐心的,这是为了避免打开调试界面偷懒而设计)。

NuxtJS中Axios的配置说明
  •   更新:2020-12-19 23:48:03
  •   首发:2020-12-19 23:48:03
  •   JavaScript
  •   4700

nuxt.js中使用axios,推荐使用nuxt定制款nuxt/axios(https://axios.nuxtjs.org/)。相比原生axios有如下优势:

  • 自动为客户端和服务器端设置baseURL
  • setToken函数暴露给$axios,可以非常容易的进行全局Authentication tokens设置
  • 基于baseURL发起请求时,自动启用withCredentials
  • 添加用于服务器端渲染的Proxy请求Header
  • 支持使用axios加载CSS
  • Nuxt进度条集成
  • Proxi模块集成
  • 使用axios-retry自动重试请求
适用于嵌入式设备的高性能PDF在线预览方案
  •   更新:2020-11-16 20:05:14
  •   首发:2020-11-12 23:49:23
  •   JavaScript
  •   3851

desktop.jpeg

对于内存较小的嵌入式设备或者移动设备(例如带屏智能音响,安卓、IOS平台的设备),在线预览PDF功能经常会导致内存溢出、应用程序闪退。

对于非常大的PDF文档,一次性下载整个文档将消耗大量的时间,即使开启分段下载,PDF文档正常下载完成并加载,超大的内存占用也会导致设备运行卡顿。

CryptoJS PBKDF2 AES对称加密
  •   更新:2020-10-18 23:58:23
  •   首发:2020-10-18 23:50:55
  •   JavaScript
  •   5060

CryptoJS提供了和OpenSSL加密命令一致的AES对称加密方法,此方法基于EvpKDFSecret Passphrase 进行计算(This key derivation function is meant to conform with EVP_BytesToKey.),确保进行AES加密计算的key符合长度标准并提升AES加密的安全性。CryptoJS没有直接提供基于PBKDF2的AES加密方法,但在OpenSSL中提供了-pbkdf2参数并将该参数作为AES加密的推荐选项。

JavaScript 安全计算
  •   更新:2020-09-17 18:02:17
  •   首发:2020-08-07 19:26:16
  •   JavaScript
  •   3392

C/C++、Java、JavaScript等语言,都有计算不精准的问题。原因是这些语言在计算的时候遵循IEEE 二进制浮点数算术标准(IEEE 754),跟CPU浮点运算器有关系。

WebRTC 安卓有视频无声音问题解决
  •   更新:2020-09-01 13:13:51
  •   首发:2020-09-01 13:13:51
  •   JavaScript
  •   4922

昨日遇到客户反馈WebRTC在安卓平台出现有视频无声音的故障。

1061598934819.pichd.jpg

系统运行在Android 7.1平台,是小型公证一体机。采用自编译Chromium内核封装Web页面混合开发实现。

  上一页 下一页