0%

项目配置

应用程序通常运行在不同的环境中,根据不同的环境,应使用不同的配置。最好的方法是将配置信息存储在环境变量中。
环境变量在 nodejs 中通过 process.env 来访问。
当我们需要定义大量的环境变量时,在 nodejs 中环境变量文件一般通过 .env 来命名。
Nest 为我们提供了一个开箱即用的配置模块:@nestjs/config,它包含了一个 ConfigModule 模块,其暴露的 ConfigService 可以自动加载 .env 文件。并且,它还支持我们自定义配置文件,然后通过 ConfigService 获取配置项。

阅读全文 »

Modules 模块

NestJS 使用模块组织应用程序结构,每个模块封装一组密切相关的功能,里面包含依赖的其他模块、路由控制器、事务处理方法等。
每个应用程序至少有一个模块,即根模块。根模块是 Nest 用于构建应用程序图的起点。
模块是由装饰器 @Module() 装饰的类。
在项目中添加一个模块, 如 users:

1
nest g mo users
阅读全文 »

Nest 框架介绍

Nest(NestJS)是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的框架。它使用渐进式 JavaScript 构建并完全支持 TypeScript(但仍然允许开发人员使用纯 JavaScript 编写代码),并结合了 OOP(面向对象编程),FP(函数式编程)和 FRP(函数式反应式编程)的元素。
Nest 默认使用 Express 框架提供 Http 服务。

阅读全文 »

可执行文件

vitewebpack-cli 等手脚架工具,它们可以通过命令行执行一些操作,比如:

1
2
3
4
vite
vite build
webpack server
webpack build

这是一个脚手架最基本的功能,那这是怎么实现的呢?
其实,只需要配置 package.jsonbin 字段即可。

阅读全文 »

概念

ECMAScript 模块(ESM)和 CommonJS 是两种不同的模块系统,它们分别用于定义如何在 JavaScript 中组织代码、导入和导出模块。

CommonJS

背景
  • CommonJS 最初是为服务器端 JavaScript 环境设计的,特别是 Node.js
  • 它在 Node.js 中广泛使用,并且在早期阶段成为 Node.js 的默认模块系统
    特点
  1. 同步加载:CommonJS 模块是在运行时同步加载的,这意味着模块的依赖关系需要在模块执行前完全解析
  2. 导入导出:使用 require 导入,module.exportsexports 导出,exports 是对 module.exports 的引用,区别在于不能 exports = ,只能 module.exports =
  3. 全局变量:在每个模块中,默认提供了一些全局变量,如 __dirname__filename,表示当前模块所在的目录和文件名

    ECMAScript 模块(ESM)

    背景
  • ESM 是由 ECMAScript 标准定义的模块系统,旨在为浏览器和服务器端 JavaScript 提供统一的模块化方案
  • 它从 ES6(ES2015)开始引入,并逐渐被现代 JavaScript 运行环境支持
    特点
  1. 异步加载:ESM 支持异步加载模块,这对于浏览器环境尤为重要,因为它允许模块按需加载,提高性能
  2. 导入导出:使用 import 导入,export 导出
  3. 全局变量:import.meta 提供有关当前模块的元数据,如模块的 URL
阅读全文 »

Preload 脚本

electron 主进程运行在 Node 环境中,渲染器进程运行在浏览器环境中,正常情况下,渲染器进程访问不了 Node.js API。而预加载(preload)脚本运行于渲染器进程中(自然能访问 window document 等 Web API),却能够访问 Node.js API 和 Electron API,这也为主进程和渲染器进程之间的通信奠定了基础。
预加载脚本可以在 BrowserWindow 构造方法中的 webPreferences 选项里被附加到主进程:

阅读全文 »

Electron 继承了 Chromium 的多进程架构,主要包括主进程和渲染进程。
每个 Electron 应用都有一个单一的主进程作为应用程序的入口点。主进程在 Node.js 环境中运行,这意味着它具有 require 模块和使用所有 Node.js API 的能力。
主进程可以通过 Electron 的 app 模块来控制应用程序的生命周期,此外,应用程序的菜单、对话框、托盘图标等与操作系统相关的操作都由主进程控制。
主进程使用 BrowserWindow 模块创建和管理应用程序窗口,每个窗口都在一个单独的渲染进程中运行。
运行于渲染进程中的代码必须遵照 Web 标准,这也意味着渲染进程无权直接访问 Node.js API,但可以通过预加载脚本解决这一问题。

阅读全文 »

命令式组件是指组件的创建、props 的传递、emits 方法的执行都通过一个函数来完成。
常见的命令式组件有 ELMessage、ElMessageBox、ElNotification 等。

阅读全文 »

时间函数

语法:

1
cubic-bezier(x1, y1, x2, y2)

CSS 时间函数本质上是一个贝塞尔曲线,如下图所示:

阅读全文 »