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

1.Nodejs开发注意和前端区别

简介

安装以及初体验.可以参考前端专栏的第七章

7.nodejs和npm简单使用_npmjs官网-CSDN博客

浏览器的javascript

nodejs的javascript

  • 在 Node.js 中,没有 window 或 document 全局对象,所以不能使用浏览器中的DOM和BOM对象。
  • Node.js 提供了许多核心模块,如 fs(文件系统)、http(网络请求)等,这些是在浏览器环境中无法直接使用的。

以下对象不能再Nodejs中使用

Nodejs的顶级对象是 gloab.  es2020引入了gloabThis.

gloab和gloabThis是相等的.

 尽管都使用ECMScript语法基础相同,但根据运行环境的不同,Node.js 和浏览器中的 JavaScript 各自有着适应其特定场景的功能和API。

js字符串拼接优化

在 JavaScript 中,字符串拼接是一个常见的操作。为了保证性能和可读性,我们需要选择高效的方式来进行字符串拼接,尤其是在处理大量数据或循环中时。

一、推荐方式:使用数组 + join


这是 最高效且兼容性最好的字符串拼接方法,尤其适用于需要多次拼接的场景(如循环)。

let arr = [];
for (let i = 0; i < 10000; i++) {arr.push('item' + i);
}
let result = arr.join('');

避免了频繁创建新字符串对象(不会产生中间垃圾字符串)性能最好,特别是在老版本浏览器中优势明显


 二、ES6 模板字符串(现代写法,简洁易读)


适合少量拼接、结构清晰的情况。

const name = "Alice";
const age = 25;
const str = `Name: ${name}, Age: ${age}`;
console.log(str); // Name: Alice, Age: 25

可跨行
支持变量插入
语法简洁、可读性强
⚠️ 注意:在大量拼接(如上万次)时,模板字符串效率略低于数组+join()。

不推荐:使用 += 拼接(尤其在循环中)


虽然写法简单,但在循环中频繁使用 += 会造成性能问题,因为每次拼接都会创建新的字符串对象。

let str = '';
for (let i = 0; i < 10000; i++) {str += 'item' + i;
}


❌ 缺点:
每次拼接都创建一个新字符串,旧字符串被丢弃(GC 压力大)
在大数据量下性能差

 性能对比(大致排序)
方法                              性能
数组 + join('')         ⭐⭐⭐⭐⭐ 最快
ES6 模板字符串    ⭐⭐⭐⭐ 简洁好用
+= 拼接                 ⭐⭐ 大量拼接慢
concat() 方法        ⭐ 不推荐

 推荐方式

  • 少量拼接(如 UI 字符串)    模板字符串 ${}
  • 多次拼接 / 循环拼接    使用数组 push() 后 join('')

构建 HTML 片段    模板字符串 + 循环内先 push 再 join

const items = ['Apple', 'Banana', 'Cherry'];
let html = [];html.push('<ul>');
items.forEach(item => {html.push(`<li>${item}</li>`);
});
html.push('</ul>');const list = html.join('\n');
document.body.innerHTML = list;

http://www.xdnf.cn/news/10795.html

相关文章:

  • C语言:数据在内存中的存储
  • 关于list集合排序的常见方法
  • 《TCP/IP 详解 卷1:协议》第5章:Internet协议
  • 红黑树与红黑树的插入——用C++实现
  • Python----循环神经网络(BiLSTM:双向长短时记忆网络)
  • Rust 学习笔记:使用 cargo install 安装二进制 crate
  • 【氮化镓】GaN HMETs器件物理失效分析进展
  • NVIDIA CUDA Toolkit安装
  • 遥感影像建筑物变化检测
  • 前端与后端
  • [Java 基础]Java 是什么
  • 帝可得 - 设备管理
  • 谷歌地图高清卫星地图2026中文版下载|谷歌地图3D卫星高清版 V7.3.6.9796 最新免费版下载 - 前端工具导航
  • 阿里云为何,一个邮箱绑定了两个账号
  • Go语言学习-->第一个go程序--hello world!
  • xTimerChangePeriod无需先Stop
  • Ros(launch一键打开?)
  • 永磁同步电机无速度算法--互补滑模观测器
  • Unity-UI组件详解
  • 嵌入式复习小练
  • 【前端后端环境】
  • c++之STL容器的学习(上)
  • 用户退出了Token还能用?用Nest+Redis给JWT令牌加黑名单!
  • apisix + argorollout 实现蓝绿发布II-线上热切与蓝绿发布控制
  • 燃尽图和甘特图
  • 涨薪技术|0到1学会性能测试第93课-生产系统性能测试
  • LIMIT 和 OFFSET 在大数据量下的性能问题分析与优化方案
  • 动态规划-1143.最长公共子序列-力扣(LeetCode)
  • 【QT】自定义QWidget标题栏,可拖拽(拖拽时窗体变为normal大小),可最小/大化、关闭(图文详情)
  • Visual Studio Code