当前位置: 首页 > news >正文

express的模板handlebars用app.engine()创建配置和用exphbs.create()的区别

在使用 express-handlebars 时,app.engine 和 exphbs.create 都可以用来配置 Handlebars 模板引擎,但它们的使用方式和功能有一些区别。以下是详细的对比和说明

  1. app.engine 方法
    app.engine 是 Express 提供的方法,用于注册一个新的模板引擎。在使用 express-handlebars 时,通常通过 app.engine 来配置 Handlebars 模板引擎。
const express = require('express');
const exphbs = require('express-handlebars');const app = express();// 使用 app.engine 注册模板引擎
app.engine('handlebars', exphbs({defaultLayout: 'main',	//默认模板或主布局文件名extname: '.hbs',	//模板的后缀扩展名partialsDir: ['views/partials/', 'views/common/'],	//局部文件和块级文件的路径viewsDir: 'views/',	//视图文件路径layoutsDir: 'views/layouts/',	helpers: {customHelper: function(value) {return value.toUpperCase();}}
}));// 设置模板引擎
app.set('view engine', 'handlebars');// 示例路由
app.get('/', (req, res) => {res.render('index', { title: 'Home Page' });
});app.listen(3000, () => {console.log('Server is running on http://localhost:3000');
});
  1. exphbs.create 方法
    exphbs.create 是 express-handlebars 提供的一个方法,用于创建一个新的 Handlebars 实例。这个实例可以独立于默认的 Handlebars 实例,允许你在不同的环境中隔离配置和模板。
const express = require('express');
const exphbs = require('express-handlebars');const app = express();// 使用 exphbs.create 创建一个新的 Handlebars 实例
const hbs = exphbs.create({defaultLayout: 'main',extname: '.hbs',partialsDir: ['views/partials/', 'views/common/'],viewsDir: 'views/',layoutsDir: 'views/layouts/',helpers: {customHelper: function(value) {return value.toUpperCase();}}
});// 使用创建的实例注册模板引擎
app.engine('handlebars', hbs.engine);// 设置模板引擎
app.set('view engine', 'handlebars');// 示例路由
app.get('/', (req, res) => {res.render('index', { title: 'Home Page' });
});app.listen(3000, () => {console.log('Server is running on http://localhost:3000');
});
  1. 区别和不同
    3.1 功能隔离
    app.engine:直接将配置传递给 express-handlebars,并注册到 Express 的模板引擎中。这种方式简单直接,但所有配置都作用于全局。
    exphbs.create:创建一个新的 Handlebars 实例,允许你在不同的环境中隔离配置和模板。这在大型项目中非常有用,特别是当你需要多个独立的模板配置时。
    3.2 配置灵活性
    app.engine:配置选项直接传递给 express-handlebars,适用于简单的项目配置。
    exphbs.create:通过创建一个新的实例,可以更灵活地管理配置。例如,你可以在不同的路由或中间件中使用不同的 Handlebars 实例。
    3.3 使用场景
    app.engine:适用于大多数简单的 Express 项目,配置简单且直接。
    exphbs.create:适用于需要高度隔离和灵活配置的项目,例如多租户应用或大型项目。
  2. 总结
    app.engine:适合大多数简单的项目,直接将配置传递给 express-handlebars,并注册到 Express 中。
    exphbs.create:适合需要高度隔离和灵活配置的项目,通过创建独立的 Handlebars 实例来管理配置。
    根据你的项目需求选择合适的方式。如果你的项目结构简单,直接使用 app.engine 即可;如果你需要更复杂的配置和隔离,可以使用 exphbs.create

下面详细解释下配置文件中的路径和作用:

  1. defaultLayout: ‘main’
    含义:指定默认的布局文件名(不包含扩展名)。
    路径:布局文件位于 layoutsDir 指定的目录中。
    文件:views/layouts/main.hbs
    作用:当渲染视图时,如果没有显式指定布局文件,将使用这个默认布局文件。

  2. extname: ‘.hbs’
    含义:指定模板文件的扩展名。
    路径:这个选项不影响路径,但决定了模板文件的扩展名。
    文件:所有模板文件的扩展名应该是 .hbs,例如 index.hbs、main.hbs 等。
    作用:告诉 express-handlebars 哪些文件是模板文件。

  3. partialsDir: [‘views/partials/’, ‘views/common/’]
    含义:指定块级模板(partials)的目录路径。
    路径:可以是一个字符串或字符串数组,表示多个目录。
    文件:
    views/partials/ 下的文件,例如 header.hbs、footer.hbs。
    views/common/ 下的文件,例如 sidebar.hbs。
    作用:在模板中可以通过 {{> partialName}} 引用这些块级模板。例如:

{{> header}}
<p>Main content</p>
{{> footer}}
  1. viewsDir: ‘views/’
    含义:指定视图文件的目录路径。
    路径:相对于当前工作目录的路径。
    文件:所有视图文件位于这个目录下,例如 views/index.hbs。
    作用:当调用 res.render(‘index’) 时,Express 会在 viewsDir 指定的目录中查找 index.hbs 文件。

  2. layoutsDir: ‘views/layouts/’
    含义:指定布局文件的目录路径。
    路径:相对于当前工作目录的路径。
    文件:所有布局文件位于这个目录下,例如 views/layouts/main.hbs。
    作用:布局文件用于包裹视图文件,提供统一的页面结构。默认布局文件由 defaultLayout 指定。

相关文章:

express的模板handlebars用app.engine()创建配置和用exphbs.create()的区别

在使用 express-handlebars 时&#xff0c;app.engine 和 exphbs.create 都可以用来配置 Handlebars 模板引擎&#xff0c;但它们的使用方式和功能有一些区别。以下是详细的对比和说明 app.engine 方法 app.engine 是 Express 提供的方法&#xff0c;用于注册一个新的模板引擎…...

【Python数据库与后端开发】从ORM到RESTful API

目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现案例1&#xff1a;SQLAlchemy模型定义案例2&#xff1a;FastAPI异步接口案例3&#xff1a;连接池配…...

数据结构(java)二叉树的基本操作

1.二叉树的性质&#xff1a; 1.若规定根结点的层数为1&#xff0c;则一棵非空二叉树的第i层上最多有2*-1(i>0)个结点 2.若规定只有根节点的二叉树的深度为1&#xff0c;则深度为K的二叉树的最大结点数是2都k次方-1 3.对于任何一个二叉树&#xff0c;如果其叶结点个数为 n…...

windows编程字符串处理

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、windows常用字符出处理函数&#xff1f;二、测试代码总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; Windows编程中主要使用两…...

CentOS系统防火墙服务介绍

CentOS 系统使用的是 firewalld 防火墙服务&#xff08;从 CentOS 7 开始&#xff09;&#xff0c;它基于 zone&#xff08;区域&#xff09; 和 service&#xff08;服务&#xff09; 的机制来配置网络访问控制&#xff0c;替代了传统的 iptables。 iptables 是 Linux 系统中…...

59、微服务保姆教程(二)Nacos--- 微服务 注册中心 + 配置中心

Nacos— 微服务 注册中心 + 配置中心 一.什么是Nacos? Nacos是阿里的一个开源产品,是针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案。 Nacos核心定位是“一个更易于帮助构建云原生应用的动态服务发现、配置和服务管理平台”,也就是我们的注册中心和配…...

Git命令行中vim的操作

Git命令行用vim打开文件&#xff0c;或者用其他git命令打开了文件&#xff0c;需要编辑和保存文件等&#xff0c;有些命令表情奇怪&#xff0c;往往容易忘记这些命令。记录下。 下面这篇比较实用和简练&#xff1a; gitvim编辑文件命令 • Worktile社区https://worktile.com/…...

【分布式系统中的“瑞士军刀”_ Zookeeper】一、Zookeeper 快速入门和核心概念

在分布式系统的复杂世界里&#xff0c;协调与同步是确保系统稳定运行的关键所在。Zookeeper 作为分布式协调服务的 “瑞士军刀”&#xff0c;为众多分布式项目提供了高效、可靠的协调解决方案。无论是在分布式锁的实现、配置管理&#xff0c;还是在服务注册与发现等场景中&…...

【昇腾】【训练】800TA2-910B使用LLaMA-Factory训练Qwen

文章目录 1. 使用docker安装1.1 配置docker1. 2 拉取 LLaMA-Factory1.3 修改配置 2. 下载模型3. 准备训练数据3.1 下载数据集3.2 自定义数据集配置 4. 训练4.1 训练配置4.2 启动训练4.3 训练效果测试 5. 合并权重 更好的阅读体验&#xff1a;传送门 服务器&#xff1a;800TA2 芯…...

Python自动化解决滑块验证码的最佳实践

1. 引言&#xff1a;滑块验证码的挑战与自动化需求 滑块验证码&#xff08;Slider CAPTCHA&#xff09;是当前互联网广泛使用的反爬机制之一&#xff0c;它要求用户手动拖动滑块到指定位置以完成验证。这种验证方式可以有效阻止简单的自动化脚本&#xff0c;但对爬虫开发者来说…...

知识蒸馏和迁移学习的区别

知识蒸馏和迁移学习虽然都涉及知识的传递&#xff0c;但并不是同一个概念&#xff0c;它们在目的、方法和应用场景上有显著区别&#xff1a; 1. 定义与核心思想 迁移学习&#xff08;Transfer Learning&#xff09; 是一种广义的机器学习范式&#xff0c;核心是将从一个任务或领…...

二项分布详解:从基础到应用

二项分布详解&#xff1a;从基础到应用 目录 引言二项分布的定义概率质量函数及其证明期望与方差推导二项分布的重要性质常见应用场景与其他分布的关系知识梳理练习与思考 引言 概率论中&#xff0c;二项分布是最基础也是最常用的离散概率分布之一。它描述了在固定次数的独…...

迁移学习(基础)

迁移学习理论 目标 迁移学习中的有关概念掌握迁移学习的两种方式 概念 预训练模型微调微调脚本 预训练模型(Pretrained model) 一般情况下预训练模型都是大型模型, 具备复杂的网络结构, 众多的参数量, 以及足够大的数据集进行训练而产生的模型, 在NLP领域, 预训练模型往往…...

云服务器和独立服务器的区别在哪

在当今数字化的时代&#xff0c;服务器成为了支撑各种业务和应用的重要基石。而在服务器的领域中&#xff0c;云服务器和独立服务器是两个备受关注的选项。那么&#xff0c;它们到底有何区别呢&#xff1f; 首先&#xff0c;让我们来聊聊成本。云服务器通常采用按需付费的模式…...

大模型时代的深度学习框架

作者&#xff1a;算力魔方创始人/英特尔创新大使刘力 在CNN时代&#xff0c;AI模型的参数规模都在百万级别&#xff0c;仅需在单张消费类显卡上即可完成训练。例如&#xff0c;以业界知名的CNN模型&#xff1a;ResNet50为例&#xff0c;模型参数量是约为 25.63M&#xff0c;在…...

BIOS主板(非UEFI)安装fedora42的方法

BIOS主板(非UEFI)安装fedora42的方法 现实困难&#xff1a;将Fedora-Workstation-Live-42-1.1.x86_64.iso写入U盘制作成可启动U盘启动fedora42&#xff0c;按照向导将fedora42安装到真机的sda7分区中得到报错如下内容&#xff1a; /boot/efi 必需的 /boot/efi必须位于格式化为e…...

C# 综合示例 库存管理系统7 主界面(FormMain)

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的 图99A-22 主界面窗口设计 主界面是多文档界面容器,需要将窗体属性IsMdiContainer设置为True。关于多文档界面编程请参看教程第7.12节《多文档界面》。 主界面并不提…...

1、RabbitMQ的概述笔记

一、什么是RabbitMQ Rabbit是一个公司名.MQ(nessage queue) 消息队列的意思&#xff0c;RabbitMQ 是 Rabbit企业下的一个消息队列产品。 RabbitMQ 是⼀个实现了 AMQP 的 消息队列 服务,是当前主流的消息中间件之⼀. AMQP&#xff1a;即Advanced MessageQueuingProtocol(高级…...

使用spring boot vue 上传mp4转码为dash并播放

1.前端实现 <template><div class"video-upload"><el-uploadclass"upload-demo"action"/api/upload":before-upload"beforeUpload":on-success"handleSuccess":on-error"handleError":show-file-…...

C++智能指针概念理解的面试题

C智能指针概念理解的面试题 第一部分&#xff1a;基础概念 解释std::unique_ptr和std::shared_ptr在以下方面的区别&#xff1a; 所有权语义性能开销自定义删除器的存储方式是否支持数组类型 答案&#xff1a; 所有权语义&#xff1a; unique_ptr&#xff1a;独占所有权&#…...

52.[前端开发-JS实战框架应用]Day03-AJAX-插件开发-备课项目实战-Lodash

常用JavaScript库 1 认识前端工具库 前端工具类库 2 Lodash vs underscore underscore库 VS Lodash库 Lodash库 的安装 Lodash库字符串、数组 Lodash库对象、集合、函数 3 Day.js vs Mement Moment.js库 VS Day.js库 Day.js库安装 Day.js获取、设置、操作时间 Day.js解析、…...

【论文阅读】平滑量化:对大型语言模型进行准确高效的训练后量化

论文题目&#xff1a;SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models 论文地址&#xff1a;[2211.10438] SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models 代码地址&#xff1a;http…...

mysql游标分页详解:让分页又快又稳的终极方案

一、什么是游标分页&#xff1f; 游标分页是一种更高效的分页方式&#xff0c;它通过"记住当前位置"而不是"数页码"来实现分页。就像看书时夹书签一样&#xff0c;游标分页会记住你看到哪里了&#xff0c;下次直接从那里继续。 传统分页 vs 游标分页 传…...

图论---染色法(判断是否为二分图)

O(nm) 二分图&#xff1a;可以把所有的点划分到两边&#xff0c;使得边只在集合之间&#xff0c;集合内部没有边。 二分图当且仅当图中不含奇数环&#xff08;边数为奇数条&#xff09; #include <iostream> #include <vector> #include <cstring> using …...

算法 | 基于SSA-CNN-LSTM(麻雀算法优化卷积长短期记忆神经网络)的股票价格预测(附完整matlab代码,公式,原理,可用于毕业论文设计)

以下是一个基于SSA-CNN-LSTM(麻雀算法优化卷积长短期记忆神经网络)的股票价格预测MATLAB项目实例,包含完整代码和详细注释。代码分为数据预处理、模型构建、优化算法、训练预测四个部分。 🚜🚜🚜🚜🚜🚜🚜🚜🚜🚜🚜🚜🚜 1. 数据预处理 %% 数据加…...

在html中如何创建vue自定义组件(以自定义文件上传组件为例,vue2+elementUI)

1、先上代码&#xff1a;vueUpload.js var dom <div class"upload-file"><el-upload :action"uploadFileUrl" :before-upload"handleBeforeUpload" :file-list"fileList" :limit"limit":on-error"handleUpl…...

Asp.Net Core 基于(asp.net core 2.2) 创建asp .net core空项目

文章目录 ASP.NET Core 应用程序的标准入口点,用于配置和启动一个 Web 主机(WebHost)。`InProcess` 代码分析解决 HTTP Error 500.31 - Failed to load ASP.NET Core runtime 的完整方案**`launchSettings.json` 配置文件分析**ASP.NET Core 中的配置源详解ASP.NET Core 应用…...

AiFlutter 低代码平台介绍

产品概述 AiFlutter 低代码平台是一款基于拖拽组件和配置流程图的可视化开发工具&#xff0c;旨在简化移动应用开发过程。无需编写代码&#xff0c;用户即可通过拖拽组件快速搭建应用界面&#xff0c;并通过配置流程图设计页面逻辑。平台支持硬件通信功能&#xff0c;用户可直…...

Flutter Dart 集合类型List Set Map详解军 以及循环语句 forEaclh map where any every

List基础用法 var list1 ["西瓜", "苹果", "香蕉", true, 0];var list2 <String>["西瓜", "苹果", "香蕉"];List list3 ["西瓜", "苹果", "香蕉"];list3.add("草莓&…...

aws(学习笔记第三十九课) iot-msk-pipeline

文章目录 aws(学习笔记第三十九课) iot-msk-pipeline学习内容&#xff1a;1. 整体架构1.1 代码链接1.2 代码调整1.2 整体架构(概要)1.3 整体架构(详细) 2. 代码解析2.1 创建IotProducerDestination2.2 创建IotProducer2.3 创建MSK client的EC22.4 创建MSK cluster2.5 创建Main …...

2025上海车展:赛轮思AI携手行业领军企业展示xUI——混合式、智能体化的AI助理平台

用户将可首次全面体验集成多模态SLM (端侧大语言模型)的Cerence xUl&#xff0c;此次演示由长城汽车和TCL合作呈现 马萨诸塞州伯灵顿&#xff0c;2025年4月22日——Cerence Inc.&#xff08;NASDAQ: CRNC&#xff09;&#xff08;“赛轮思AI”&#xff09;&#xff0c;全球对话…...

聚合分销小程序系统开发方案:整合AI对话、网盘、淘客CPS/CPA、电影票团购与会员卡业务

一、系统架构设计 技术架构 分层设计&#xff1a;采用微服务架构&#xff0c;分为平台层&#xff08;分销管理、数据库、交易系统&#xff09;、管理体系层&#xff08;数据管理、权限控制&#xff09;和功能层&#xff08;AI对话、网盘、CPS/CPA拉新、电影票团购、会员卡&…...

设计模式-- 原型模式详解

原型模式&#xff08;prototype&#xff09; 原型模式&#xff1a;用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型相同或相似的新对象&#xff0c;原型模式属于创造性模式&#xff0c;它同样提供了创建对象的最佳方式之一。&#xff08;效率很高…...

ARM服务器与X86服务器核心区别分析

ARM服务器与X86服务器核心区别分析 一、架构设计与指令集差异 指令集本质‌ ARM‌&#xff1a;基于RISC&#xff08;精简指令集&#xff09;&#xff0c;指令定长且简单&#xff0c;单周期执行效率高&#xff0c;硬件设计复杂度低&#xff0c;适合低功耗场景。 X86‌&#xf…...

嵌入式:ARM系列分类及主要应用场景

在嵌入式系统和移动计算领域&#xff0c;Arm Cortex 系列处理器凭借其多样化的架构和卓越的性能&#xff0c;成为了众多设备的核心 “大脑”。从高端智能手机到工业控制设备&#xff0c;从物联网终端到安全芯片&#xff0c;Cortex 系列处理器以不同的型号和特性&#xff0c;满足…...

Axure PR 9 中继器 标签

大家好&#xff0c;我是大明同学。 这期内容&#xff0c;我们来了解一下Axure中继器数据表标签交互设计。 预览地址&#xff1a;https://n05kfs.axshare.com 好的&#xff0c;这里就结束了。 我是大明同学。 下期见。...

Django【应用 01】django-plotly-dash安装及使用

django-plotly-dash 的使用文档&#xff1a;https://django-plotly-dash.readthedocs.io/en/stable/introduction.html 以下内容大部分保留原文档的内容&#xff0c;添加实际的步骤和必要的说明。 django-plotly-dash安装及使用 1.安装配置1.1 安装1.2 注册组件1.3 配置框架1.…...

【MFC】 VS2022打开低版本的MFC,双击.rc文件,DIalog加载失败,页面弹窗fatal error RC***:cannot open*****

打开以前的MFC示例报错&#xff0c;打开VS2019的实例以及更早VS版本的实例都一样,打不开&#xff0c;还报错&#xff1b; 错误 MSB8041 此项目需要 MFC 库。从 Visual Studio 安装程序(单个组件选项卡)为正在使用的任何工具集和体系结构安装它们。 GxCameraEvents_VS2015 C:\P…...

ClickHouse 中`MergeTree` 和 `ReplicatedMergeTree`表引擎区别

在 ClickHouse 中&#xff0c;MergeTree 和 ReplicatedMergeTree 都是用于存储和管理数据的表引擎&#xff0c;但它们的主要区别在于是否支持数据复制。下面详细解释两者的不同点及其适用场景。 MergeTree 定义&#xff1a; MergeTree 是 ClickHouse 中最基本的表引擎之一&a…...

PubMed PDF下载 cloudpmc-viewer-pow逆向

目标&#xff1a;https://pmc.ncbi.nlm.nih.gov/articles/ pdf的下载链接是直接存在的 但是第一次单击下载不会触发PDF下载&#xff0c;而是跳转到验证页面然后又跳回概览页面 再次点击下载按钮&#xff0c;PDF就能正常下载了。现在要分析下载PDF要验证什么&#xff0c;如cooki…...

C语言面试高频题——strcat、strncat、strcmp、strcpy 哪些函数会导致内存溢出?

1. 函数功能与内存溢出风险 (1) strcat 功能&#xff1a;将源字符串追加到目标字符串的末尾。 原型&#xff1a; char *strcat(char *dest, const char *src);内存溢出风险&#xff1a; strcat 不会检查目标缓冲区的大小&#xff0c;直接将源字符串追加到目标字符串后。如果目…...

Linux套接字+Sqlite实例:客户端-服务器应用程序教程

本文将详细介绍如何创建一个基于客户端-服务器架构的应用程序&#xff0c;实现用户注册、登录、单词查询以及历史记录查询。该应用通过TCP套接字进行客户端和服务器之间的通信&#xff0c;并通过SQLite数据库进行用户和查询记录的管理。教程会逐步解析客户端和服务器端的实现&a…...

用 Python 打造打篮球字符动画!控制台彩色炫酷输出,抖音搞怪视频灵感还原

一、引言&#xff1a;从抖音搞怪视频到 Python 字符动画的奇妙之旅 刷抖音时刷到一个神级操作 —— 博主用 01 数字矩阵还原了明星打篮球的经典画面&#xff0c;字符在控制台随动作节奏炫彩跳动&#xff0c;瞬间点燃了技术宅的 DNA&#xff01;作为 Python 图像处理爱好者&…...

入侵检测系统(IDS)与入侵防御系统(IPS):功能对比与部署实践

入侵检测系统&#xff08;IDS&#xff09;与入侵防御系统&#xff08;IPS&#xff09;&#xff1a;功能对比与部署实践 在网络安全防御体系中&#xff0c;入侵检测系统&#xff08;Intrusion Detection System, IDS&#xff09;与入侵防御系统&#xff08;Intrusion Preventio…...

力扣-hot100(找到字符串中的所有字母异位词)

438. 找到字符串中所有字母异位词 中等 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 示例 1: 输入: s "cbaebabacd", p "abc" 输出: [0,6] 解释: 起始索引等于 0…...

零信任架构:重塑网络安全的IT新范式

在信息技术&#xff08;IT&#xff09;的风云变幻中&#xff0c;网络安全领域正迎来一场深刻变革——零信任架构&#xff08;Zero Trust Architecture&#xff09;。2025年&#xff0c;随着远程办公的常态化、云服务的普及以及网络攻击的日益复杂化&#xff0c;传统的“城堡与护…...

大模型微调 - transformer架构

什么是Transformer Transformer 架构是由 Vaswani 等人在 2017 年提出的一种深度学习模型架构&#xff0c;首次发表于论文《Attention is All You Need》中 Transformer 的结构 Transformer 编码器&#xff08;Encoder&#xff09; 解码器&#xff08;Decoder&#xff09; …...

Python图形界面编程(二)

目录 六、控件属性和事件响应 1、基本的操控 2、示例 七、对话框 六、控件属性和事件响应 1、基本的操控 有的控件有对对应的函数&#xff0c;可以用来设置以及获取属性或者设置属性&#xff0c;或者以字典下标的形式来获取&#xff0c;设置对应的属性&#xff1a; 比如&…...

MongoDB 图片 URL 存储异常问题解决方案

项目场景&#xff1a; 在开发一个在线考试系统时&#xff0c;前端需要提交学生的答题截图到后端&#xff0c;后端使用 MinIO 存储图片并保存图片 URL 到 MongoDB 数据库。系统需要支持多次提交图片&#xff0c;并将所有图片 URL 以数组形式存储在 MongoDB 的 screenShot 字段中…...

run code执行ts配置

1、全局安装typescript npm install –g typescript 执行tsc –v&#xff0c;可输出版本号&#xff0c;代表安装成功 2、创建tsConfig文件 npx tsc –init 创建成功目录下会出现tsconfig.json文件 3、安装ts-node&#xff0c;支持执行运行ts文件 npm install –g ts-node 控制…...