轶哥

📚 Having fun with AI Agent. Always learning.

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

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模块。

Node.js 获取项目根目录
  •   更新:2021-03-04 14:48:06
  •   首发:2016-05-06 15:22:23
  •   Node.js
  •   12704

介绍一个非常实用的小技巧获取node.js项目根目录

假设我们的js文件写在server目录中,但是我们的资源文件存储在app/img目录中。如下图,我们需要在server/index.js文件中使用fs读取app/img/favicon.ico文件。

获取node项目根目录

在node.js只提供了一个__dirname全局变量。通过__dirname可以获得“C:\wwwroot\yidata\server”。这时需要用到path。

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

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

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

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

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

{
  "method": "GET"
}

也可以是这样的数组:

[
  {
    "method": "GET"
  }
]
NuxtJS中Axios的配置说明
  •   更新:2020-12-19 23:48:03
  •   首发:2020-12-19 23:48:03
  •   Node.js
  •   4684

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自动重试请求
JavaScript 安全计算
  •   更新:2020-09-17 18:02:17
  •   首发:2020-08-07 19:26:16
  •   Node.js
  •   3385

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

Vue3.0 + Vite 绝佳的开发体验
  •   更新:2020-08-21 09:25:09
  •   首发:2020-08-20 18:52:31
  •   Node.js
  •   5901

Vite是一个尤大开发的革命性的Web构建工具。

Vite是基于浏览器原生ES Module imports的构建工具。很多场景下,Vite可以代替webpack,开发调试的速度有了非常大的提升。Vite支持对单个文件的热更新,调试一行代码等很久的情况或将成为历史。

vite是法语中“ fast”的意思,其发音是/vit/

  上一页 下一页